diff --git a/src/Components/HelperFunctions/getAxiosConfig.js b/src/Components/HelperFunctions/getAxiosConfig.js
index 84b1682f9155416e2c40caec2c359818a90e1fc3..000ffb6bf6a14a245dee8e2ff97342a2ccdb175d 100644
--- a/src/Components/HelperFunctions/getAxiosConfig.js
+++ b/src/Components/HelperFunctions/getAxiosConfig.js
@@ -1,25 +1,43 @@
 import {apiUrl} from '../../env.js'
 import axios from 'axios'
 
-export const getAxiosConfig = () => {
+export function getAxiosConfigFromJSON () {
     let config = {
-        headers : {
-            'Accept': 'application/json',
-            'Content-Type': 'application/json',
-        }
+        headers : JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
     }
-    config.headers["Access-Token"] = sessionStorage.getItem('@portalmec/accessToken');
-    config.headers.Client = sessionStorage.getItem('@portalmec/clientToken')
-    config.headers.Uid = sessionStorage.getItem('@portalmec/uid')
-    config.headers.Expiry = sessionStorage.getItem('@portalmec/expiry')
     return config
 }
 
-export function getAxiosConfigFromJSON () {
-    let config = {
-        headers : JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
+export function updateHeaders (newHeaders) {
+
+    sessionStorage.setItem('@portalmec/accessToken', newHeaders['access-token'])
+
+    let auth_headers = JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
+    if (auth_headers) {
+        auth_headers['access-token'] = newHeaders['access-token']
+    }
+    else {
+        auth_headers = {
+            client: newHeaders.client,
+            "access-token": newHeaders['access-token'],
+            uid: newHeaders.uid,
+            expiry: newHeaders.expiry,
+            "token-type": "Bearer"
+        }
+    }
+    sessionStorage.setItem('@portalmec/auth_headers', JSON.stringify(auth_headers))
+}
+
+function fetchHeaders () {
+    let auth_headers = JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
+
+    if (auth_headers) {
+        const myHeaders = new Headers(auth_headers)
+        return myHeaders
+    }
+    else {
+        return {}
     }
-    return config
 }
 
 function checkPreviousTokens (new_token) {
@@ -27,10 +45,8 @@ function checkPreviousTokens (new_token) {
     let prev_tokens = JSON.parse(sessionStorage.getItem('@portalmec/tokens'))
 
     if (prev_tokens) {
-        console.log('hasOwnProperty = ', prev_tokens.hasOwnProperty(new_token))
         if (!prev_tokens.hasOwnProperty(new_token)) {
             prev_tokens[new_token] = 1
-            console.log('adicionando token', new_token, ' a hash')
             sessionStorage.setItem('@portalmec/tokens', JSON.stringify(prev_tokens))
             return true
         }
@@ -41,141 +57,136 @@ function checkPreviousTokens (new_token) {
     else {
         let tokens = {}
         tokens[new_token] = 1
-        console.log('adicionando token', new_token, ' a hash')
         sessionStorage.setItem('@portalmec/tokens', JSON.stringify(tokens))
         return true
     }
 
 }
 
-export function updateHeaders (newHeaders) {
+function updateAccessToken (newAccessToken) {
 
-    if (checkPreviousTokens(newHeaders['access-token'])) {
+    if (checkPreviousTokens(newAccessToken)) {
 
-        sessionStorage.setItem('@portalmec/accessToken', newHeaders['access-token'])
+        sessionStorage.setItem('@portalmec/accessToken', newAccessToken)
 
         let auth_headers = JSON.parse(sessionStorage.getItem('@portalmec/auth_headers'))
 
         if (auth_headers) {
-            auth_headers['access-token'] = newHeaders['access-token']
-        }
-        else {
-            auth_headers = {
-                client: newHeaders.client,
-                "access-token": newHeaders['access-token'],
-                uid: newHeaders.uid,
-                expiry: newHeaders.expiry,
-                "token-type": "Bearer"
-            }
+            auth_headers['access-token'] = newAccessToken
         }
 
         sessionStorage.setItem('@portalmec/auth_headers', JSON.stringify(auth_headers))
     }
-
 }
 
 export const axiosGetRequest = (url, onSuccess, onError) => {
-    let config = getAxiosConfigFromJSON()
-
-    axios.get( (`${apiUrl}${url}`), config ).then(
-        (response) => {
-
-            if ( response.headers['access-token'] && response.status !== 304) {
-                console.log('filtered = ', response)
-                updateHeaders(response.headers)
+    fetch((`${apiUrl}${url}`), {
+        headers : fetchHeaders()
+    })
+        .then(response => {
+            if (response.headers.has('access-token')) {
+                updateAccessToken(response.headers.get('access-token'))
             }
-
-            onSuccess(response.data)
-        },
-        (error) => {
+            return response.json()
+        })
+        .then(data => {
+            console.log(data)
+            onSuccess(data)
+        })
+        .catch(error => {
             onError(error)
-        }
-    )
+        })
 }
 
 export const axiosDeleteRequest = (url, onSuccess, onError) => {
-    let config = getAxiosConfigFromJSON()
-
-    axios.delete( (`${apiUrl}${url}`), config ).then(
-        (response) => {
-
-            if ( response.headers['access-token'] && response.status !== 304) {
-                console.log('filtered = ', response)
-                updateHeaders(response.headers)
+    fetch((`${apiUrl}${url}`), {
+        method : 'DELETE',
+        headers : fetchHeaders()
+    })
+        .then(response => {
+            if (response.headers.has('access-token')) {
+                updateAccessToken(response.headers.get('access-token'))
             }
-
-            onSuccess(response.data)
-        },
-        (error) => {
+            return response.json()
+        })
+        .then(data => {
+            console.log(data)
+            onSuccess(data)
+        })
+        .catch(error => {
             onError(error)
-        }
-    )
+        })
 }
 
 export const axiosPutRequest = (url, payload, onSuccess, onError) => {
-    let config = getAxiosConfigFromJSON()
-
-    axios.put( (`${apiUrl}${url}`), payload, config ).then(
-        (response) => {
+    let formData = new FormData()
+    for (const [key, value] of Object.entries(payload)) {
+        formData.append(`${key}`,value);
+    }
 
-            if ( response.headers['access-token'] && response.status !== 304) {
-                console.log('filtered = ', response)
-                updateHeaders(response.headers)
+    fetch((`${apiUrl}${url}`), {
+        method : 'PUT',
+        headers : fetchHeaders(),
+        body: formData
+    })
+        .then(response => {
+            if (response.headers.has('access-token')) {
+                updateAccessToken(response.headers.get('access-token'))
             }
-
-            onSuccess(response.data)
-        },
-        (error) => {
+            return response.json()
+        })
+        .then(data => {
+            console.log(data)
+            onSuccess(data)
+        })
+        .catch(error => {
             onError(error)
-        }
-    )
+        })
 }
 
 export const axiosPostRequest = (url, payload, onSuccess, onError) => {
-    let config = getAxiosConfigFromJSON()
-
-    axios.post( (`${apiUrl}${url}`), payload, config ).then(
-        (response) => {
+    let formData = new FormData()
+    for (const [key, value] of Object.entries(payload)) {
+        formData.append(`${key}`,value);
+    }
 
-            if ( response.headers['access-token'] && response.status !== 304) {
-                console.log('filtered = ', response)
-                updateHeaders(response.headers)
+    fetch((`${apiUrl}${url}`), {
+        method : 'POST',
+        headers : fetchHeaders(),
+        body: formData
+    })
+        .then(response => {
+            if (response.headers.has('access-token')) {
+                updateAccessToken(response.headers.get('access-token'))
             }
-
-            onSuccess(response.data)
-        },
-        (error) => {
+            return response.json()
+        })
+        .then(data => {
+            console.log(data)
+            onSuccess(data)
+        })
+        .catch(error => {
             onError(error)
-        }
-    )
-}
-
-function filterFunction (value) {
-    if (value.headers['access-token'] && value.status !== 304) {
-        return true
-    }
-    else {
-        return false
-    }
+        })
 }
 
 export const axiosAllRequest = (urls, onSuccess, onError) => {
-    axios.all(
-        urls.map( url => axios.get(`${apiUrl}${url}`, getAxiosConfigFromJSON()) )
-    ).then(
-        (responseArray) => {
-            var aux = responseArray.filter(filterFunction)
-            if (aux[0]) {
-                console.log('filtered = ', aux)
-                updateHeaders(aux[0].headers)
+    Promise.all( urls.map( url => fetch(`${apiUrl}${url}`,  {
+        headers : fetchHeaders()
+    }))).then( (responses) => {
+        for(let res of responses) {
+            console.log(res)
+            if (res.headers.has('access-token') && res.status !== 304) {
+                console.log(res)
+                updateAccessToken(res.headers.get('access-token'))
             }
-
-            onSuccess(responseArray)
-        },
-        (error) => {
-            onError(error)
         }
-    )
+        return Promise.all(responses.map( (response) => response.json()))
+    }).then( (data) => {
+        onSuccess(data)
+    }).catch((error) => {
+        onError(error)
+    })
 }
 
 export const validateGoogleLoginToken = (config, onSuccess, onError) => {
@@ -195,25 +206,35 @@ export const validateGoogleLoginToken = (config, onSuccess, onError) => {
 }
 
 export const authentication = (url, payload, onSuccess, onError) => {
-    let config = getAxiosConfigFromJSON()
-
-    axios.post( (`${apiUrl}${url}`), payload, config ).then(
-        (response) => {
+    let formData = new FormData()
+    for (const [key, value] of Object.entries(payload)) {
+        formData.append(`${key}`,value);
+    }
 
+    fetch((`${apiUrl}${url}`), {
+        method : 'POST',
+        headers : fetchHeaders(),
+        body: formData
+    })
+        .then(response => {
             const auth_headers = {
-                client: response.headers.client,
-                "access-token": response.headers['access-token'],
-                uid: response.headers.uid,
-                expiry: response.headers.expiry,
+                client: response.headers.get('client'),
+                "access-token": response.headers.get('access-token'),
+                uid: response.headers.get('uid'),
+                expiry: response.headers.get('expiry'),
                 "token-type": "Bearer"
             }
 
             sessionStorage.setItem('@portalmec/auth_headers', JSON.stringify(auth_headers))
 
-            onSuccess(response.data)
-        },
-        (error) => {
+            return response.json()
+        })
+        .then(data => {
+            console.log(data)
+            onSuccess(data)
+        })
+        .catch(error => {
             onError(error)
-        }
-    )
+        })
+
 }
diff --git a/src/Components/Notifications.js b/src/Components/Notifications.js
index e85b578d57914e8da481f44291c70c5ef507d6f8..5911a309ce39f76691eda2d39a0939235fb2f833 100644
--- a/src/Components/Notifications.js
+++ b/src/Components/Notifications.js
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
 
 You should have received a copy of the GNU Affero General Public License
 along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
-import React, {useState} from 'react';
+import React, {useState, useEffect} from 'react';
 import NotificationsIcon from '@material-ui/icons/Notifications';
 import { Button } from '@material-ui/core';
 import Badge from '@material-ui/core/Badge';
@@ -88,9 +88,9 @@ export default function Notification (props) {
     }
 
 
-    setInterval(() => {
+    useEffect(() => {
         axiosGetRequest('/feed?offset=0&limit=30', handleAxiosSuccess, handleAxiosError)
-    }, 60000)
+    }, [])
 
 
     function handleClick(event) {
diff --git a/src/Components/NotificationsInner.js b/src/Components/NotificationsInner.js
index c4c791c6d7d15054f7f28cd054641af7b2b8ea41..6d05f5f56873650d2510ea7770345c8ebdf33e20 100644
--- a/src/Components/NotificationsInner.js
+++ b/src/Components/NotificationsInner.js
@@ -13,7 +13,6 @@ export default function NotificationInner (props) {
         setLength(data.length)
     }
     useEffect(() => {
-        let config = getAxiosConfig()
         const url = `/feed?offset=0&limit=30`
 
         axiosGetRequest(url, handleSuccess, (error) => {console.log('error while running getNotifications')})
diff --git a/src/Components/TabPanels/PublicUserPageTabs/TabRede.js b/src/Components/TabPanels/PublicUserPageTabs/TabRede.js
index 125d7a2fa0d8dc943d3c59a3bffbb0172d742a52..75201d421dde1a998964aaaf7aa0a073dc182e88 100644
--- a/src/Components/TabPanels/PublicUserPageTabs/TabRede.js
+++ b/src/Components/TabPanels/PublicUserPageTabs/TabRede.js
@@ -39,11 +39,11 @@ export default function TabRede (props) {
     const showAllFollowing = () => {setFollowingSlice(following)}
 
     function handleSuccess (responseArr) {
-        setFollowers(responseArr[0].data)
-        setFollowersSlice(responseArr[0].data.slice(0,4))
+        setFollowers(responseArr[0])
+        setFollowersSlice(responseArr[0].slice(0,4))
 
-        setFollowing(responseArr[1].data)
-        setFollowingSlice(responseArr[1].data.slice(0,4))
+        setFollowing(responseArr[1])
+        setFollowingSlice(responseArr[1].slice(0,4))
     }
 
     useEffect( () => {
diff --git a/src/Components/TabPanels/UserPageTabs/PanelColecoes.js b/src/Components/TabPanels/UserPageTabs/PanelColecoes.js
index c9ea1c8d28dcaf4a91d0e0fca38286f3b8109bfa..28dda245b58790737407e0bfeae0d937b2ba8708 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelColecoes.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelColecoes.js
@@ -42,11 +42,11 @@ export default function TabPanelColecoes (props) {
 
     function handleSuccess (responseArr) {
         handleLoading(false)
-        setUserCollections(responseArr[0].data)
-        setUserCollectionsSlice(responseArr[0].data.slice(0,3))
+        setUserCollections(responseArr[0])
+        setUserCollectionsSlice(responseArr[0].slice(0,3))
 
-        setFollowedCollections(responseArr[1].data)
-        setFollowedCollectionsSlice(responseArr[1].data.slice(0,4))
+        setFollowedCollections(responseArr[1])
+        setFollowedCollectionsSlice(responseArr[1].slice(0,4))
     }
 
     const getInfo = () => {
diff --git a/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js b/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js
index e3b518666c78bdf83317d46dbcb9fee1ed272eea..350e2bc19bc1bb7c12feaee6aa39ae45b24463c7 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js
@@ -32,11 +32,11 @@ export default function TabPanelFavoritos (props) {
     const [likedCollectionsSlice, setlikedCollectionsSlice] = useState([])
 
     function handleSuccess (responseArr) {
-        setlikedLearnObjs(responseArr[0].data)
-        setlikedLearnObjsSlice(responseArr[0].data.slice(0,4))
+        setlikedLearnObjs(responseArr[0])
+        setlikedLearnObjsSlice(responseArr[0].slice(0,4))
 
-        setlikedCollections(responseArr[1].data)
-        setlikedCollectionsSlice(responseArr[1].data.slice(0,4))
+        setlikedCollections(responseArr[1])
+        setlikedCollectionsSlice(responseArr[1].slice(0,4))
 
         handleLoading(false)
     }
diff --git a/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js b/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js
index 0b05d5ac9fe426d13c55d14bcbd3584d75bd6ec8..0faa14af00c6329f6d7b4c6752bf6e6f0d5e1881 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js
@@ -35,14 +35,14 @@ export default function TabPanelAtividades (props) {
     const [curatingSlice, setCuratingSlice] = useState([])
 
     function handleSuccess (responseArr) {
-        setLearningObjects(responseArr[0].data)
-        setLearningObjectsSlice(responseArr[0].data.slice(0, 4))
+        setLearningObjects(responseArr[0])
+        setLearningObjectsSlice(responseArr[0].slice(0, 4))
 
-        setDrafts(responseArr[1].data)
-        setDraftsSlice(responseArr[1].data.slice(0, 4))
+        setDrafts(responseArr[1])
+        setDraftsSlice(responseArr[1].slice(0, 4))
 
-        setCurating(responseArr[2].data)
-        setCuratingSlice(responseArr[2].data.slice(0, 4))
+        setCurating(responseArr[2])
+        setCuratingSlice(responseArr[2].slice(0, 4))
 
         handleLoading(false)
     }
diff --git a/src/Components/TabPanels/UserPageTabs/PanelRede.js b/src/Components/TabPanels/UserPageTabs/PanelRede.js
index e8f56bdf6061f4f2437fb7ed20259a2ba26971fa..ae61981ec4696bc3b41047999085a596b1c88358 100644
--- a/src/Components/TabPanels/UserPageTabs/PanelRede.js
+++ b/src/Components/TabPanels/UserPageTabs/PanelRede.js
@@ -44,12 +44,12 @@ export default function TabPanelRede (props) {
     const showAllFollowers = () => {setFollowersSlice(followersList)}
 
     function handleSuccess (responseArr) {
-        setFollowing(responseArr[0].data)
-        setFollowingSlice(responseArr[0].data.slice(0,4))
+        setFollowing(responseArr[0])
+        setFollowingSlice(responseArr[0].slice(0,4))
 
 
-        setFollowers(responseArr[1].data)
-        setFollowersSlice(responseArr[1].data.slice(0,4))
+        setFollowers(responseArr[1])
+        setFollowersSlice(responseArr[1].slice(0,4))
 
         handleLoading(false)
     }
diff --git a/src/Components/UploadPageComponents/DragAndDrop.tsx b/src/Components/UploadPageComponents/DragAndDrop.tsx
deleted file mode 100644
index d416b22257648c2c500ef0cb85150e7acfacae20..0000000000000000000000000000000000000000
--- a/src/Components/UploadPageComponents/DragAndDrop.tsx
+++ /dev/null
@@ -1,153 +0,0 @@
-/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
-Departamento de Informatica - Universidade Federal do Parana
-
-This file is part of Plataforma Integrada MEC.
-
-Plataforma Integrada MEC is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-Plataforma Integrada MEC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
-
-import React, {useState, useEffect} from 'react'
-import CloudUploadIcon from '@material-ui/icons/CloudUpload';
-import {DottedBox, BlueButton} from './StyledComponents.js';
-import FileToUpload from './FileToUpload'
-import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig.js'
-import AddAPhotoIcon from '@material-ui/icons/AddAPhoto';
-
-type Props = {
-    draftID : string;
-}
-
-const UploadMediaComponent: React.FC<Props> = ({draftID, children}) => {
-    const [filesToUpload, setFilesToUpload] = useState<FileToUpload | undefined>(undefined);
-
-    const onFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
-        const files: FileList | null = e.target.files;
-        if(!files) return;
-
-        let fileToUpload: FileToUpload = new FileToUpload(files[0], files[0].name, draftID);
-
-        setFilesToUpload(fileToUpload);
-        if (fileToUpload != undefined){
-            console.log(fileToUpload.uploadFile())
-
-        }
-    };
-
-    return (
-        <div className="upload-container">
-            <h2 className="upload-title">File Uploader</h2>
-            <div className="upload-form">
-                <form id="file_upload">
-                    <DottedBox
-
-                        >
-                        <AddAPhotoIcon className="icon"/>
-                        <input
-                            type="file"
-                            onChange = {onFileChange}
-                            id="upload-file-thumbnail"
-                            style={{display : "none"}}
-                            />
-                        <BlueButton>
-                            <label htmlFor="upload-file-thumbnail" style={{width : "inherit", cursor : "pointer"}}>
-                                ESCOLHER IMAGEM
-                            </label>
-                        </BlueButton>
-                        <span style={{marginTop : "6px"}}>Ou arrastar e soltar o arquivo aqui</span>
-                    </DottedBox>
-                </form>
-            </div>
-        </div>
-    )
-}
-UploadMediaComponent.displayName = 'UploadMedia';
-export default UploadMediaComponent;
-
-{/*<div className="upload-file-select">
-    <label htmlFor="file_1">Select files for upload</label>
-    <input id="file_1" type="file" multiple onChange={onFileChange}/>
-</div>
-
-<div className="upload-file-list">
-    {filesToUpload.map((f,i) => <div className="upload-file" key={i}>{f.name} - {f.file.size}bytes</div>)}
-</div>
-
-<div className="upload-submit">
-    <input type="submit" value="submit"/>
-</div>*/}
-
-{/*
-    const [dropDepth, setDropDepth] = useState(0)
-    const [inDropZone, toggleInDropZone] = useState(false)
-    const [fileList, setFileList] = useState([])
-
-    const handleDragEnter = e => {
-        e.preventDefault();
-        e.stopPropagation();
-
-        setDropDepth(dropDepth + 1)
-    };
-
-    const handleDragLeave = e => {
-        e.preventDefault();
-        e.stopPropagation();
-
-        setDropDepth(dropDepth - 1)
-        if (dropDepth > 0)
-            toggleInDropZone(true)
-    };
-
-    const handleDragOver = e => {
-        e.preventDefault();
-        e.stopPropagation();
-        e.dataTransfer.dropEffect = 'copy';
-        toggleInDropZone(true)
-    };
-
-    const handleDrop = e => {
-        e.preventDefault();
-        e.stopPropagation();
-        let files = [...e.dataTransfer.files]
-
-        if (files && files.length > 0) {
-            props.acceptFile(files[0])
-        }
-    };
-
-    const handleUpload = (e, selectorFiles : FileList) => {
-        e.preventDefault();
-        props.acceptFile(selectorFiles[0])
-    }
-
-
-    <DottedBox
-    onDrop={e => handleDrop(e)}
-    onDragOver={e => handleDragOver(e)}
-    onDragEnter={e => handleDragEnter(e)}
-    onDragLeave={e => handleDragLeave(e)}
-    >
-    <CloudUploadIcon className="icon"/>
-    <input
-        type="file"
-        onChange = {(e) => handleUpload(e, e.target.files)}
-        id="upload-file"
-        style={{display : "none"}}
-        />
-    <BlueButton>
-        <label htmlFor="upload-file" style={{width : "inherit", cursor : "pointer"}}>
-            ESCOLHER O ARQUIVO
-        </label>
-    </BlueButton>
-    <span style={{marginTop : "6px"}}>Ou arrastar e soltar o arquivo aqui</span>
-</DottedBox>
-    */}
diff --git a/src/Pages/PublicUserPage.js b/src/Pages/PublicUserPage.js
index b1967ec995227bbb5b697ee7699556aaea6ead5c..b197f082afeb9197b8bc2a247ab58bce3f1eb760 100644
--- a/src/Pages/PublicUserPage.js
+++ b/src/Pages/PublicUserPage.js
@@ -122,11 +122,11 @@ export default function PublicUserPage (props) {
     /*---------------------------------------------------------*/
 
     function handleSuccess (responseArr) {
-        fillUserInfo(responseArr[0].data)
+        fillUserInfo(responseArr[0])
 
-        handleLearningObjects(responseArr[1].data)
+        handleLearningObjects(responseArr[1])
 
-        handleCollections(responseArr[2].data)
+        handleCollections(responseArr[2])
     }
 
     /*Component Will Mount*/