diff --git a/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.jsx b/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.jsx
index 12665f2920855bc7dd5600f2bd9bce0f3f40f312..f71d0c7e40c501bc7897d837e39855e8fd93b098 100644
--- a/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.jsx
+++ b/src/components/demo-components/dropzone-demo/AdvancedDropzoneDemo.jsx
@@ -15,9 +15,7 @@ export default function AdvancedDropzoneDemo() {
   const [extFiles, setExtFiles] = useState([]);
 
   const [imageSrc, setImageSrc] = React.useState(undefined);
-  const [videoSrc, setVideoSrc] = React.useState(
-    undefined
-  );
+  const [videoSrc, setVideoSrc] = React.useState(undefined);
 
   const updateFiles = (incommingFiles) => {
     console.log("incomming extFiles", incommingFiles);
@@ -35,15 +33,15 @@ export default function AdvancedDropzoneDemo() {
   const handleFinish = (res) => {
     console.log("finish", res);
   };
-   const handleWatch = (videoSource) => {
+  const handleWatch = (videoSource) => {
     console.log(
       "handleWatch videoSource",
       "https://files-ui-temp-storage.s3.amazonaws.com/2029385a4ed32ff10beeb94c0585e8ac1a8c377c68d22ef25ce5863694a5499e.mp4"
     );
     //setVideoSrc(videoSource);
-   //
-   setVideoSrc(videoSource);
-   // setVideoSrc("https://www.w3schools.com/tags/movie.mp4");
+    //
+    setVideoSrc(videoSource);
+    // setVideoSrc("https://www.w3schools.com/tags/movie.mp4");
   };
 
   useEffect(() => {
@@ -57,6 +55,26 @@ export default function AdvancedDropzoneDemo() {
       console.log("checkFiles error", error);
     }
   }
+  const handleAbort = (id) => {
+   // alert(id);
+    setExtFiles(
+      extFiles.map((ef) => {
+        if (ef.id === id) {
+          return { ...ef, uploadStatus: "aborted" };
+        } else return { ...ef };
+      })
+    );
+  };
+  const handleCancel= (id) => {
+    // alert(id);
+     setExtFiles(
+       extFiles.map((ef) => {
+         if (ef.id === id) {
+           return { ...ef, uploadStatus: undefined };
+         } else return { ...ef };
+       })
+     );
+   };
   return (
     <>
       <Dropzone
@@ -67,7 +85,7 @@ export default function AdvancedDropzoneDemo() {
         /* maxFiles={3}
         maxFileSize={2998000 * 20} */
         label="Drag'n drop files here or click to browse"
-       // accept=".png,image/*, video/*"
+        // accept=".png,image/*, video/*"
         uploadConfig={{
           /* autoUpload: true */
           method: "POST",
@@ -98,6 +116,8 @@ export default function AdvancedDropzoneDemo() {
               onDelete={onDelete}
               onSee={handleSee}
               onWatch={handleWatch}
+              onAbort={handleAbort}
+              onCancel={handleCancel}
               resultOnTooltip
               alwaysActive
               preview
diff --git a/src/components/demo-components/main-page/DropzoneMainPage.jsx b/src/components/demo-components/main-page/DropzoneMainPage.jsx
index c09a7cd0d6f4fdb591a5461487660a55a263fd85..2ded2ed94f5e4d4d51a33d6e2533c5483c5922cd 100644
--- a/src/components/demo-components/main-page/DropzoneMainPage.jsx
+++ b/src/components/demo-components/main-page/DropzoneMainPage.jsx
@@ -17,7 +17,7 @@ const DropzoneMainPage = ({ darkMode = false }) => {
   const [files, setFiles] = React.useState(baseFiles);
   const updateFiles = (incommingFiles) => {
     //do something with the files
-    console.log("MainPage incommingFiles",incommingFiles);
+    console.log("MainPage incommingFiles", incommingFiles);
 
     setFiles(incommingFiles);
     //even your own upload implementation
@@ -41,11 +41,12 @@ const DropzoneMainPage = ({ darkMode = false }) => {
         // minHeight="400px"
         onChange={updateFiles}
         value={files}
-        maxFileSize={28*1024}
+        maxFileSize={28 * 1024 * 10}
         maxFiles={5}
         accept=".jpg, .png, application/json, video/*"
         fakeUpload
         behaviour="add"
+        uploadConfig={{ autoUpload: true , url:"fdbd"}}
         //uploadConfig={{ autoUpload: true, url:"fdbd" }}
       >
         {files.length > 0 &&
diff --git a/src/files-ui/components/dropzone/components/dropzone/Dropzone.scss b/src/files-ui/components/dropzone/components/dropzone/Dropzone.scss
index 69e014cb2aa767ea544c49a26677d1b9ab90edf7..a923cdd50f7911ca034b6313e6bb0d11d3f787b2 100644
--- a/src/files-ui/components/dropzone/components/dropzone/Dropzone.scss
+++ b/src/files-ui/components/dropzone/components/dropzone/Dropzone.scss
@@ -101,6 +101,6 @@
   @media (max-width: 960px) {
     width: calc(100% - 1px);
     padding-left: 1px;
-    font-size: 0.8rem;
+    font-size: 0.9rem;
   }
 }
diff --git a/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx b/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx
index 5572c22a0d49054ede35c3d1353ed7962639b78c..3d2476ecb8601c0e9ed8c288745c9c9115589b7e 100644
--- a/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx
+++ b/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx
@@ -1,4 +1,3 @@
-
 import * as React from "react";
 import {
   DropzoneLocalizerSelector,
@@ -179,11 +178,12 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
    * @returns nothing
    */
   const uploadfiles = async (localFiles: ExtFile[]): Promise<void> => {
-    // set uploading flag to true
+    //set uploading flag to true
     setIsUploading(true);
-    // avoid calling upload if not allowed
-    //      flag is already true or there isnt files
-    //      url was not provided
+
+    //avoid to call upload if not allowed
+    // flag is already true or there isnt files
+    //url was not provided
     if (isUploading || localFiles.length === 0 || !url) {
       setIsUploading(false);
       return;
diff --git a/src/files-ui/components/file-input-button/FileInputButton.tsx b/src/files-ui/components/file-input-button/FileInputButton.tsx
index df33ce333b36f1d1446a893e722daa52d99701db..85513f547bea57a1f50be667ef1d87d2c90fec4a 100644
--- a/src/files-ui/components/file-input-button/FileInputButton.tsx
+++ b/src/files-ui/components/file-input-button/FileInputButton.tsx
@@ -19,7 +19,6 @@ import {
   toUploadableExtFileList,
   UploadConfig,
   uploadExtFile,
-  //uploadOnePromiseXHR,
   UploadResponse,
   validateExtFileList,
 } from "../../core";
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatus.tsx b/src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
index 4302542752cbdc8abd5b018e4628f093ff60f1d1..8501bfb4d9d11cf462076b0a79b320ae4301eb4e 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
+++ b/src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
@@ -22,7 +22,7 @@ const FileMosaicStatus: React.FC<FileMosaicStatusProps> = (
       </div>
     );
   }
-  if (uploadStatus === "error") {
+  if (uploadStatus === "error" || uploadStatus === "aborted") {
     return (
       <div className="files-ui-file-item-status-container file-status-error">
         <UploadError
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss b/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss
index 7c8ad35cb606e66c81f99394a1fe93af4a5ba2e0..4ef8d675cb7da04781c8570f36b4b220ae07b15b 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss
+++ b/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss
@@ -9,7 +9,7 @@
   overflow: hidden;
 
   .elevation-list {
-    transition: all 2s ease-in-out;
+    transition: all 1.5s ease;
     position: absolute;
     top: 0;
     left: 0;
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx b/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
index 5359ad331e4e257fe9746fac3e149c30ba2cf5b1..c288bad7aa4e4e643d9f209a7081df3c5188e87a 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
+++ b/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
@@ -1,14 +1,8 @@
 import * as React from "react";
 import { FileMosaicUploadLayerProps } from "./FileMosaicUploadLayerProps";
 import "./FileMosaicUploadLayer.scss";
-import InfiniteLoader from "../../../loader/InfiniteLoader/InfiniteLoader";
-import {
-  FileItemLocalizerSelector,
-  LocalLabels,
-  UPLOADSTATUS,
-} from "../../../../core";
-import { CheckCircle, Clear, DoDisturb } from "../../../icons";
-import { DynamicLoader } from "../../../loader";
+import { UPLOADSTATUS } from "../../../../core";
+
 import {
   AbortedStatus,
   EmptyStatus,
@@ -26,16 +20,21 @@ const FileMosaicUploadLayer: React.FC<FileMosaicUploadLayerProps> = (
   const elevationContainerRef = React.useRef<HTMLDivElement | null>(null);
   const listContainerStoryRef = React.useRef<HTMLDivElement | null>(null);
 
-  const FileItemStatusLocalizer: LocalLabels = FileItemLocalizerSelector(
-    localization
-  ).status as LocalLabels;
-
   const [statusHistory, setStatusHistory] = React.useState<
     Array<UPLOADSTATUS | undefined>
   >([undefined]);
 
   React.useEffect(() => {
     setStatusHistory((statusHistory: Array<UPLOADSTATUS | undefined>) => {
+      if (
+        statusHistory[statusHistory.length - 1] === "preparing" &&
+        uploadStatus === "uploading"
+      ) {
+        const tempStatusHistory = [...statusHistory];
+        tempStatusHistory[statusHistory.length - 1] = uploadStatus;
+        //replace
+        return [...tempStatusHistory];
+      }
       return [...statusHistory, uploadStatus];
     });
   }, [uploadStatus]);
@@ -64,31 +63,38 @@ const FileMosaicUploadLayer: React.FC<FileMosaicUploadLayerProps> = (
             case "preparing":
               return (
                 <div className="elevation-item" key={index + 1}>
-                  <PreparingStatus onCancel={onCancel}/>
+                  <PreparingStatus
+                    onCancel={onCancel}
+                    localization={localization}
+                  />
                 </div>
               );
             case "uploading":
               return (
                 <div className="elevation-item" key={index + 1}>
-                  <UploadingStatus onAbort={onAbort} progress={progress}/>
+                  <UploadingStatus
+                    onAbort={onAbort}
+                    progress={progress}
+                    localization={localization}
+                  />
                 </div>
               );
             case "error":
               return (
                 <div className="elevation-item" key={index + 1}>
-                  <ErrorStatus />
+                  <ErrorStatus localization={localization} />
                 </div>
               );
             case "success":
               return (
                 <div className="elevation-item" key={index + 1}>
-                  <SuccessStatus />
+                  <SuccessStatus localization={localization} />
                 </div>
               );
             case "aborted":
               return (
                 <div className="elevation-item" key={index + 1}>
-                  <AbortedStatus />
+                  <AbortedStatus localization={localization} />
                 </div>
               );
             default:
diff --git a/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.scss b/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.scss
index ecea57cf1ba62368133e0ad1de69d8d313004ede..78bf294dc99cda25b94a6523d27c7010dc2517ed 100644
--- a/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.scss
+++ b/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.scss
@@ -93,6 +93,19 @@
       text-align: left;
 
       scrollbar-width: thin;
+      &::-webkit-scrollbar {
+        width: 9px;
+      }
+  
+      &::-webkit-scrollbar-track {
+        background: transparent;
+      }
+  
+      &::-webkit-scrollbar-thumb {
+        background-color: #646c7fa9;
+        border-radius: 20px;
+        border: transparent;
+      }
       line-height: 1.5;
       letter-spacing: 0.02857em;
       font-family: "Poppins", sans-serif;
@@ -123,19 +136,7 @@
     }
 
     ///
-    &::-webkit-scrollbar {
-      width: 9px;
-    }
 
-    &::-webkit-scrollbar-track {
-      background: transparent;
-    }
-
-    &::-webkit-scrollbar-thumb {
-      background-color: #646c7fa9;
-      border-radius: 20px;
-      border: transparent;
-    }
   }
 
   .files-ui-file-mosaic-file-name {
diff --git a/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.tsx b/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.tsx
index 8636799c8bacef7fb13e0bb24c879635c9e9edac..841fa9693fd214112f5035ac427dd4ea39026b18 100644
--- a/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.tsx
+++ b/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.tsx
@@ -60,7 +60,7 @@ const FileMosaic: React.FC<FileMosaicProps> = (props: FileMosaicProps) => {
     onRightClick,
   } = props;
 
-  console.log("FileMosaic progress "+ id, progress);
+  console.log("FileMosaic progress " + id, progress);
   //ref for anchor download element
   const downloadRef = React.useRef<HTMLAnchorElement>(null);
 
@@ -87,7 +87,7 @@ const FileMosaic: React.FC<FileMosaicProps> = (props: FileMosaicProps) => {
   ); */
   const localProgress: number | undefined = useProgress(progress, xhr);
 
-  console.log("FileMosaic progress localProgress "+ localProgress);
+  console.log("FileMosaic progress localProgress " + localProgress);
 
   //Initialize File Item
   const [isReady, isImage, isVideo, url, imageSource]: [
@@ -281,8 +281,15 @@ const FileMosaic: React.FC<FileMosaicProps> = (props: FileMosaicProps) => {
             <FileMosaicUploadLayer
               uploadStatus={uploadStatus}
               progress={localProgress}
-              onCancel={onCancel}
-              onAbort={onAbort}
+              onCancel={onCancel ? () => onCancel?.(id) : undefined}
+              onAbort={
+                onAbort
+                  ? () => {
+                      xhr?.abort();
+                      onAbort?.(id);
+                    }
+                  : undefined
+              }
               localization={localization}
             />
           </Layer>
diff --git a/src/files-ui/components/material-button/MaterialButton.scss b/src/files-ui/components/material-button/MaterialButton.scss
index 78c6c8b51d25e2903c494d0658d2ecc52a36b878..d0ef2fe468d0e95fee16737845122b72fbe1485c 100644
--- a/src/files-ui/components/material-button/MaterialButton.scss
+++ b/src/files-ui/components/material-button/MaterialButton.scss
@@ -88,7 +88,7 @@ span.ripple {
 }
 
 //mobile
-@media screen and (max-width: 600px) {
+/* @media screen and (max-width: 600px) {
   .material-button {
     min-width: 30px;
     font-size: 0.78rem;
@@ -102,3 +102,4 @@ span.ripple {
     padding: 4px 12px;
   }
 }
+ */
\ No newline at end of file
diff --git a/src/files-ui/core/index.ts b/src/files-ui/core/index.ts
index aea53dc9a7e2a446ce5d09369fc5b3f0ea69aa97..0c918711726ce820aca4736f3bf15383de4348f8 100644
--- a/src/files-ui/core/index.ts
+++ b/src/files-ui/core/index.ts
@@ -104,7 +104,6 @@ export {
     sleepTransition,
     toUploadableExtFileList,
     unableToUploadResult,
-    uploadOnePromiseXHR,
     makeServerResponse,
     uploadFile,
     uploadFormData,
@@ -117,7 +116,10 @@ export {
     makeErrorUploadResponse,
     makeSuccessUploadResponse,
     addExtraData,
-    addHeaders
+    addHeaders,
+    sanitizeArrExtFile,
+    unexpectedErrorUploadResult,
+    setNextUploadStatus
 } from "./upload";
 
 export {
@@ -138,7 +140,7 @@ export {
     sleepPreparing,
     uploadOne,
     uploadOneExtFile,
-    cleanInput, addClassName, getRandomInt
+    cleanInput, addClassName, getRandomInt, isUploadAbleExtFile
 } from "./utils";
 
 export {
diff --git a/src/files-ui/core/types/ExtFileManager.ts b/src/files-ui/core/types/ExtFileManager.ts
index ca93798f7ebcd5ef5c0df05f3a4fdb9d20aa9753..7eaa531e4dcc38162460250345048db4b0777a78 100644
--- a/src/files-ui/core/types/ExtFileManager.ts
+++ b/src/files-ui/core/types/ExtFileManager.ts
@@ -96,20 +96,27 @@ export class ExtFileManager {
         validateFiles: boolean,
         cleanOnUpload: boolean
     ): ExtFileInstance[] | undefined {
+        console.log("setFileListMapPreparing before if", dropzoneId, localFiles, cleanOnUpload);
 
         if (!(typeof dropzoneId === "number" || typeof dropzoneId === "string")) return undefined;
 
+        console.log("setFileListMapPreparing before try", localFiles, cleanOnUpload);
         try {
+
             let resultExtList: ExtFileInstance[] = [];
-            //remove non valids if cleanOnUpload is true and validateFiles is also true
-            let temLocalFiles: ExtFile[] = [];
 
-            if (cleanOnUpload) {
+            //initializes the extFileLInstance list
+            let temLocalFiles: ExtFile[] = [...localFiles];
+
+            //remove non valids if cleanOnUpload is true and validateFiles is also true
+            if (cleanOnUpload && validateFiles) {
                 // clean on Upload is true, so non valid files must be removed
-                temLocalFiles = localFiles.filter(extFile => extFile.valid)
+                temLocalFiles = temLocalFiles.filter(extFile => extFile.valid)
                 console.log("temLocalFiles filter", temLocalFiles);
             }
 
+            console.log("setFileListMapPreparing after remove non valids", temLocalFiles);
+
             if (validateFiles) {
                 // validation flag was set to true, so only valid=true files will be set to "preparing"
 
@@ -126,7 +133,7 @@ export class ExtFileManager {
                         });
             } else {
                 // all files will be set to "preparing" whether the valid value
-                // except those diles with uploadStatus ==="success"
+                // except those files with uploadStatus ==="success"
                 temLocalFiles =
                     temLocalFiles
                         .map(extFile => {
@@ -138,31 +145,19 @@ export class ExtFileManager {
                         });
             }
 
-            console.log("FileManagerLog RESULT temLocalFiles", temLocalFiles);
-
-            //sets on preparing stage all files according to the following criteria:
-            // If the uploadStatus is diferent than "sucess" AND
-            // If validateFiles is true and the file is true OR validateFiles is false
-            // then update the files on preparing stage. Otherwise keep the extFile props.
-            /*  for (let i = 0; i < resultExtList.length; i++) {
-                 const extFileInstance: ExtFileInstance = resultExtList[i];
-                 const { valid, uploadStatus } = extFileInstance;
-                 console.log("upload setFileListMapPreparing resultExtList[i]", (uploadStatus !== "success") && ((validateFiles && valid) || !validateFiles));
- 
-                 if ((uploadStatus !== "success") && ((validateFiles && valid) || !validateFiles))
-                     resultExtList[i].uploadStatus = "preparing";
-             } */
+            console.log("setFileListMapPreparing result", temLocalFiles);
 
+            //converto to Object instances
             resultExtList = temLocalFiles.map(F => new ExtFileInstance(F));
-            console.log("FileManagerLog RESULT resultExtList", resultExtList);
+            console.log("setFileListMapPreparing RESULT resultExtList", resultExtList);
 
             const resultSet = ExtFileManager.setFileList(dropzoneId, resultExtList);
-            console.log("FileManagerLog RESULT resultSet", resultSet);
+            console.log("setFileListMapPreparing RESULT resultSet", resultSet);
 
             return resultExtList;
             // return ExtFileManager.fileLists[dropzoneId];
         } catch (error) {
-            console.error("upload setFileListMapPreparing Error on get List", error);
+            console.error("setFileListMapPreparing Error on get List", error);
             return undefined;
         }
 
diff --git a/src/files-ui/core/upload/index.ts b/src/files-ui/core/upload/index.ts
index 9977205eba298f77fd98096128c871052d241397..db4a27dee64f6f27f61da69ab6a2d38979525ab4 100644
--- a/src/files-ui/core/upload/index.ts
+++ b/src/files-ui/core/upload/index.ts
@@ -2,9 +2,6 @@ export {
 
     uploadExtFile,
     FuiUpload,
-    completeUploadResult,
-    unableToUploadResult,
-    uploadOnePromiseXHR,
     uploadFile,
     uploadFormData,
 } from "./upload";
@@ -30,15 +27,9 @@ export {
     preparingToUploadOne,
     sleepTransition,
     toUploadableExtFileList,
-} from "./utils.upload";
-/* export {
-    FuiUpload,
     completeUploadResult,
-    instantPreparingToUploadOne,
-    preparingToUploadOne,
-    sleepTransition,
-    toUploadableExtFileList,
+    sanitizeArrExtFile,
     unableToUploadResult,
     unexpectedErrorUploadResult,
-    uploadOnePromiseXHR
-} from "./upload.utils"; */
\ No newline at end of file
+    setNextUploadStatus
+} from "./utils.upload";
diff --git a/src/files-ui/core/upload/response.upload.ts b/src/files-ui/core/upload/response.upload.ts
index 047b24a211f01a0770e3d1f79d7d6f2dbf14fec6..4d7eee8eeea7422163956a3220231dad735cd3bf 100644
--- a/src/files-ui/core/upload/response.upload.ts
+++ b/src/files-ui/core/upload/response.upload.ts
@@ -47,6 +47,7 @@ export const makeErrorUploadResponse = (
     extFile: ExtFile,
     responseFui: ServerResponse
 ): UploadResponse => {
+    console.log("makeErrorUploadResponse", extFile, responseFui);
     return {
         id: extFile.id,
         serverResponse: responseFui,
diff --git a/src/files-ui/core/upload/upload.ts b/src/files-ui/core/upload/upload.ts
index 2c4dfcdb6ea620de35e6ed60677bfd294f6c9949..236c2fbf019f4e983ee8a79ce3f8663f3f5bf249 100644
--- a/src/files-ui/core/upload/upload.ts
+++ b/src/files-ui/core/upload/upload.ts
@@ -4,6 +4,7 @@ import addExtraDataUpload from "./addExtraData.upload";
 import addHeaders from "./addheaders.upload";
 import { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from "./errors.upload";
 import { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from "./response.upload";
+import { completeUploadResult, unableToUploadResult } from "./utils.upload";
 
 
 /**
@@ -23,30 +24,55 @@ export const uploadFormData = (
     headers: Record<string, string> | undefined
 ) => {
     return new Promise<ServerResponse>((resolve, reject) => {
-        console.log("uploadFile", xhr, method, endpoint, data, headers);
+        console.log("Fui_uploadFormData uploadFile", xhr, method, endpoint, data, headers);
 
         const finalMethod: Method = ["POST", "PUT", "PATCH"].includes(method.toUpperCase()) ? method : "POST";
 
+        let lastLastState: number = -1;
+        let lastState: number = 0;
+        let jumped: boolean = false;
+
         xhr.upload.onload = () => {
-            console.log("uploadFile onLoad", xhr.readyState, xhr.response);
+            console.log("Fui_uploadFormData uploadFile onLoad", xhr.readyState, xhr.response);
         };
         xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);
-        xhr.upload.onabort = () => resolve(ABORTED_ERROR_RESPONSE);
+        xhr.upload.onabort = () => {
+            console.log("Fui_uploadFormData ABORTEEEEDDDD");
+            resolve(ABORTED_ERROR_RESPONSE);
+        };
+        xhr.onloadend = async (e) => {
+            console.log("onloadend loaded", e.loaded);
+            console.log("onloadend total", e.total);
+            console.log("onloadend lengthComputable", e.lengthComputable);
+
+        }
         // listen for `progress` event
         //currently listening on FileItem component hook
         xhr.onreadystatechange = async (e) => {
             //console.log("Finished", xhr);
-            console.log("uploadFile onreadystatechange", xhr.readyState, xhr.response);
+
+            console.log("Fui_uploadFormData uploadFile onreadystatechange e.type", e.type);
+            console.log("Fui_uploadFormData uploadFile onreadystatechange", xhr.readyState, xhr.response);
+
+            lastLastState = lastState;
+            lastState = xhr.readyState;
+
             if (xhr.readyState === 4) {
                 if (xhr.response !== "") {
                     //there is th answer
                     resolve(JsonParseResponse(xhr));
                 } else {
                     //error unexpected
-                    resolve(UNEXPECTED_ERROR_RESPONSE);
+                    console.log("Fui_uploadFormData EMPTY status", xhr.status);
+                    console.log("Fui_uploadFormData EMPTY readyState", xhr.readyState);
+                    console.log("Fui_uploadFormData EMPTY upload", xhr.upload);
+                    //console.log("Fui_uploadFormData EMPTY abort", xhr.abort);
+                    //const jumped = lastLastState - lastLastState !== 1;
+                    resolve(ABORTED_ERROR_RESPONSE);
+
                 }
             } else {
-                console.log("FuiUpload NOT YET" + xhr.readyState);
+                console.log("Fui_uploadFormData FuiUpload NOT YET" + xhr.readyState);
             }
         };
         // open request
@@ -152,102 +178,11 @@ export function uploadFile(
     });
 }
 
-export const unableToUploadResult = (
-    extFile: ExtFile
-): UploadResponse => {
-    return {
-        id: extFile.id,
-        uploadedFile: {
-            ...extFile,
-            uploadMessage: "Unable to upload. XHR was not provided",
-            uploadStatus: "error"
-        },
-        serverResponse: {
-        }
-    }
-}
-
-export const completeUploadResult = (
-    extFile: ExtFile,
-    serverResponse: ServerResponse,
-    result: UPLOADSTATUS
-): UploadResponse => {
-    return {
-        id: extFile.id,
-        uploadedFile: {
-            ...extFile,
-            uploadMessage: serverResponse.message,
-            uploadStatus: result
-        },
-        serverResponse: serverResponse
-    }
-}
-
-/**
- * @deprecated
- */
-export const uploadOnePromiseXHR = async (
-    extFile: ExtFile,
-    url: string,
-    method?: Method,
-    headers?: Record<string, string>,
-    uploadLabel?: string,
-    extraData?: Record<string, any>
-): Promise<UploadResponse> => {
-    return new Promise(async (resolve, reject) => {
-        try {
-            const uploader: XMLHttpRequest | undefined = extFile.xhr;
-            if (!uploader) {
-                const duiUploadResponse: UploadResponse = unableToUploadResult(extFile);
-                resolve(duiUploadResponse);
-                return;
-            }
-            const localMethod: Method = (method) || "POST";
-            const fileToUpload: File = extFile.file as File;
-
-            const formData = new FormData();
-            if (typeof uploadLabel === "string" && uploadLabel.length > 0) {
-                formData.append(uploadLabel, fileToUpload
-                    //, extFile.file?.name
-                );
-                //add extraData that will be obtained from req.body
 
-            } else
-                formData.append("file", fileToUpload);
 
-            const finalExtraData: Record<string, any> =
-                { otherValue: "other valueee haaaa", param2: { tecnica: "KIKOHUUUU", friend: "Chaos", age: 25 }, ...extraData };
-
-
-            if (finalExtraData) {
-                const extraDataKeys: string[] = Object.keys(finalExtraData);
-                extraDataKeys.forEach(key => {
-                    const finalValue: string = typeof finalExtraData[key] === "string" ? finalExtraData[key] : JSON.stringify(finalExtraData[key]);
-                    formData.append(key, finalValue);
 
-                });
-            }
-            let serverResponse: ServerResponse;
 
-            //console.log();
-            serverResponse = await FuiUpload(uploader, localMethod, url, formData, headers || {});
 
-            if (serverResponse.success) {
-                const duiUploadResponse: UploadResponse = completeUploadResult(extFile, serverResponse, "success");
-                resolve(duiUploadResponse);
-            } else {
-                // success is false
-                const duiUploadResponse: UploadResponse = completeUploadResult(extFile, serverResponse, "error");
-                resolve(duiUploadResponse);
-            }
-        } catch (error) {
-            // on error
-            console.log("uploadOnePromiseXHR ERROR", error);
-            const duiUploadResponse: UploadResponse = unableToUploadResult(extFile);
-            resolve(duiUploadResponse);
-        }
-    });
-};
 
 /**
  * @deprecated
diff --git a/src/files-ui/core/utils/fileListParser.ts b/src/files-ui/core/utils/fileListParser.ts
index 3e88083c8dd081cd83ad1a7936d149aa8cf6e5bf..46f4b4ad08d99d050434527d3eb14cc480e3e7a9 100644
--- a/src/files-ui/core/utils/fileListParser.ts
+++ b/src/files-ui/core/utils/fileListParser.ts
@@ -7,11 +7,11 @@ import { FileIdGenerator } from "./IdGenerator";
  * @returns an array of ExtFile objects
  */
 export const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {
-    let filesValidated: ExtFile[] = [];
+    let extFileArray: ExtFile[] = [];
     for (let i = 0, f: File; (f = fileList[i]); i++) {
-        filesValidated.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });
+        extFileArray.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });
     }
-    return filesValidated;
+    return extFileArray;
 };
 
 /**
@@ -20,9 +20,9 @@ export const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {
  * @returns an array of ExtFile instances
  */
 export const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => {
-    let filesValidated: ExtFileInstance[] = [];
+    let extFileArray: ExtFileInstance[] = [];
     for (let i = 0, f: File; (f = fileList[i]); i++) {
-        filesValidated.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type  }));
+        extFileArray.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type  }));
     }
-    return filesValidated;
+    return extFileArray;
 };
\ No newline at end of file
diff --git a/src/files-ui/core/utils/index.ts b/src/files-ui/core/utils/index.ts
index 01478032d4049b5f5cbc89eb9d4a6c078d0fb95e..678c2808484b745c11264947b8acbce11c63f7b4 100644
--- a/src/files-ui/core/utils/index.ts
+++ b/src/files-ui/core/utils/index.ts
@@ -36,4 +36,6 @@ export { getRandomInt } from "./randomInt";
 export { cleanInput } from "./input.utils";
 
 
-export { addClassName } from "./addClassName";
\ No newline at end of file
+export { addClassName } from "./addClassName";
+
+export {isUploadAbleExtFile} from "./isUploadAbleExtFile";
\ No newline at end of file
diff --git a/src/files-ui/core/utils/isUploadAbleExtFile.ts b/src/files-ui/core/utils/isUploadAbleExtFile.ts
new file mode 100644
index 0000000000000000000000000000000000000000..112a345b28e1457e050097db68921163ddec2c4a
--- /dev/null
+++ b/src/files-ui/core/utils/isUploadAbleExtFile.ts
@@ -0,0 +1,5 @@
+import { ExtFile } from "../types";
+
+export const isUploadAbleExtFile = (extFile: ExtFile, validateFilesFlag: boolean) => {
+    return (!validateFilesFlag || (validateFilesFlag && extFile.valid)) && extFile.uploadStatus !== "success";
+}
\ No newline at end of file
diff --git a/src/files-ui/hooks/useDropzoneFileUpdater.ts b/src/files-ui/hooks/useDropzoneFileUpdater.ts
index 0456e5058517e0101c255a639ecc32ff8670a439..b1bb4dd4d71594d61b097edb7529dac67ce29346 100644
--- a/src/files-ui/hooks/useDropzoneFileUpdater.ts
+++ b/src/files-ui/hooks/useDropzoneFileUpdater.ts
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { CustomValidateFileResponse, ExtFile, ExtFileInstance, ExtFileManager, FileValidatorProps, Localization, validateExtFileList } from "../core";
+import { CustomValidateFileResponse, ExtFile, ExtFileInstance, ExtFileManager, FileValidatorProps, Localization, setNextUploadStatus, validateExtFileList } from "../core";
 
 /**
  * Effect for keeping track of changes
@@ -35,15 +35,34 @@ const useDropzoneFileListUpdater = (
     React.useEffect(() => {
         let arrOfExtFiles: ExtFileInstance[] | undefined =
             ExtFileManager.getExtFileInstanceList(dropzoneId);
-        console.log("value changed", isUploading, value.map(F => F.uploadStatus),dropzoneId);
+        console.log("value changed", isUploading, value.map(F => F.uploadStatus), dropzoneId);
         // console.log("value changed", value.map(F => F.uploadStatus));
         if (!isUploading) {
             setLocalFiles(value);
         } else {
             // when is uploading
             if (arrOfExtFiles) {
+                //lenght of the new arr can be equal or lower
+                //when lower, it means a file was deleted, it will be removed only if was not uploaded
+                //when same lenght it means that a file could be
 
-                if (arrOfExtFiles.length !== value.length || value.length === 0) {
+                //no mather the size, it will search for the missing and the status that changed
+                arrOfExtFiles.forEach((extFileInstance: ExtFileInstance) => {
+                    //if the current Ext file is not present anymore
+                    //add deleted flag
+                    const extFileIndex: number = value.findIndex((extFile: ExtFile) => extFile.id === extFileInstance.id)
+
+                    if (extFileIndex === -1) {
+                        extFileInstance.extraData = { deleted: true }
+                        console.log("extFileUpdater not found", extFileInstance.id);
+                    } else {
+                        const currExtFileObj: ExtFile = value[extFileIndex];
+
+                        setNextUploadStatus(extFileInstance, currExtFileObj);
+                    }
+                })
+
+                /*if (arrOfExtFiles.length !== value.length || value.length === 0) {
                     return;
                 }
                 for (let i = 0; i < arrOfExtFiles.length; i++) {
@@ -55,7 +74,7 @@ const useDropzoneFileListUpdater = (
                         console.log("useDropzoneFileListUpdater onCancel i", i);
                         arrOfExtFiles[i].uploadStatus = undefined;
                     }
-                }
+                } */
             }
         }
         // eslint-disable-next-line