diff --git a/client/src/App.js b/client/src/App.js
index 0b10e31..2ed6749 100644
--- a/client/src/App.js
+++ b/client/src/App.js
@@ -3,10 +3,9 @@
   Author: Larbi Gharib <larbi.gharib@savoirfairelinux.com>
   License: AGPL-3
 */
-import { ThemeProvider, StyledEngineProvider, createTheme } from '@mui/material/styles';
-import makeStyles from '@mui/styles/makeStyles';
+import { ThemeProvider, createTheme } from '@mui/material/styles';
 import React, { useState, useEffect } from 'react'
-import { Route, Routes, Navigate, PageLayout, useNavigate } from 'react-router-dom'
+import { Route, Routes, Navigate } from 'react-router-dom'
 import authManager from './AuthManager'
 import './App.scss'
 
@@ -17,24 +16,13 @@
 import ServerSetup from "./pages/serverSetup.jsx"
 import AccountCreationDialog from "./pages/accountCreation.jsx"
 import NotFoundPage from "./pages/404.jsx"
-import LoadingPage from './components/loading'
 import JamiAccountDialog from './pages/jamiAccountCreation.jsx'
-import { AnimatePresence } from 'framer-motion'
 import WelcomeAnimation from './components/welcome'
 
 const theme = createTheme();
-const useStyles = makeStyles((theme) => {
-  root: {
-    // some CSS that access to theme
-  }
-})
 
 const Home = (props) => {
   console.log(`home ${props}`)
-  //const navigate = useNavigate()
-  const [state, setState] = useState({
-    auth: authManager.getState()
-  })
 
   return <Navigate to="/account" />
 }
diff --git a/client/src/components/ConversationsOverviewCard.js b/client/src/components/ConversationsOverviewCard.js
index 9c57bff..96e03f6 100644
--- a/client/src/components/ConversationsOverviewCard.js
+++ b/client/src/components/ConversationsOverviewCard.js
@@ -1,5 +1,5 @@
 import React, { useEffect, useState } from 'react';
-import { Box, Card, CardActionArea, CardContent, CircularProgress, Typography } from '@mui/material';
+import { Card, CardActionArea, CardContent, CircularProgress, Typography } from '@mui/material';
 import makeStyles from '@mui/styles/makeStyles';
 import { useNavigate, useParams } from 'react-router';
 import authManager from '../AuthManager'
diff --git a/client/src/components/SendMessageForm.js b/client/src/components/SendMessageForm.js
index ae0a7de..f447f34 100644
--- a/client/src/components/SendMessageForm.js
+++ b/client/src/components/SendMessageForm.js
@@ -3,7 +3,6 @@
 import { IconButton, InputBase, Paper, Popper } from '@mui/material'
 import { Send, EmojiEmotionsRounded } from '@mui/icons-material'
 import EmojiPicker from 'emoji-picker-react'
-import authManager from '../AuthManager'
 
 const useStyles = makeStyles((theme) => ({
   root: {
@@ -54,7 +53,6 @@
     <div className="send-message-form">
       <Paper component="form"
         onSubmit={handleSubmit}
-        className="send-message-card"
         className={classes.root}>
         <IconButton
           aria-describedby={id}
diff --git a/client/src/index.scss b/client/src/index.scss
index 0682874..5f0427e 100644
--- a/client/src/index.scss
+++ b/client/src/index.scss
@@ -156,8 +156,3 @@
   border-radius: 8px;
   margin: 16px;
 }
-
-.help-text {
-  position: absolute;
-  top: 10px;
-}
diff --git a/client/src/pages/loginDialog.jsx b/client/src/pages/loginDialog.jsx
index cdefa71..e4f6c45 100644
--- a/client/src/pages/loginDialog.jsx
+++ b/client/src/pages/loginDialog.jsx
@@ -1,29 +1,15 @@
 import React from 'react';
 
-import Avatar from '@mui/material/Avatar';
 import Button from '@mui/material/Button';
 import TextField from '@mui/material/TextField';
 import FormControlLabel from '@mui/material/FormControlLabel';
 import Checkbox from '@mui/material/Checkbox';
 import Link from '@mui/material/Link';
-import Grid from '@mui/material/Grid';
-import Box from '@mui/material/Box';
-import Card from '@mui/material/Card';
-import CardContent from '@mui/material/CardContent';
-import CardActionArea from '@mui/material/CardActionArea';
-import CardActions from '@mui/material/CardActions';
-
-import LockOutlinedIcon from '@mui/icons-material/LockOutlined';
 import Typography from '@mui/material/Typography';
-//import { makeStyles } from '@mui/material/styles';
-import Container from '@mui/material/Container';
-import { Redirect } from 'react-router-dom';
-import CircularProgress from '@mui/material/CircularProgress';
 import DialogTitle from '@mui/material/DialogTitle';
 import Dialog from '@mui/material/Dialog';
 import DialogActions from '@mui/material/DialogActions';
 import DialogContent from '@mui/material/DialogContent';
-import DialogContentText from '@mui/material/DialogContentText';
 
 import authManager from '../AuthManager'
 
@@ -39,54 +25,14 @@
     );
 }
 
-/*const useStyles = makeStyles((theme) => ({
-    paper: {
-        marginTop: theme.spacing(8),
-        display: 'flex',
-        flexDirection: 'column',
-        alignItems: 'center',
-    },
-    avatar: {
-        margin: theme.spacing(1),
-        backgroundColor: theme.palette.secondary.main,
-    },
-    form: {
-        width: '100%', // Fix IE 11 issue.
-        marginTop: theme.spacing(1),
-    },
-    submit: {
-        margin: theme.spacing(3, 0, 2),
-    },
-}));*/
-
-/*function SignIn() {
-    const classes = useStyles();
-
-
-}*/
-
-/*
-    TODO:
-    Use useState to handle username password and redirect states to render this page to
-    comply with material-ui usage of useStyles
-    Src: https://blog.logrocket.com/a-guide-to-usestate-in-react-ecb9952e406c/
-*/
-
 class SignInPage extends React.Component {
 
     constructor(props) {
         console.log("SignInPage " + props.open)
         super(props)
         this.state = {
-            /*username: '',
-            password: '',
-            redirect: false,
-            session: null,*/
             submitted: false,
-            loading: false/*,
-            error: false,
-            open: false,
-            errorMessage: ''*/
+            loading: false,
         }
         this.handleSubmit = this.handleSubmit.bind(this);
         this.localLogin = this.localLogin.bind(this);
diff --git a/client/src/pages/serverConfiguration.jsx b/client/src/pages/serverConfiguration.jsx
index 3bdfaaa..00251f9 100644
--- a/client/src/pages/serverConfiguration.jsx
+++ b/client/src/pages/serverConfiguration.jsx
@@ -9,8 +9,6 @@
 const ServerOverview = (props) => {
 
   this.accountId = props.accountId || props.match.params.accountId
-  this.state = { loaded: false, account: props.account }
-  this.req = undefined
 
   useEffect(() => {
     const controller = new AbortController()
@@ -23,23 +21,6 @@
       return () => controller.abort()
   }, [accountId])
 
-  /*componentDidMount() {
-    this.controller = new AbortController()
-    if (this.req === undefined) {
-      this.req = authManager.fetch(`/api/serverConfig`, {signal: this.controller.signal})
-        .then(res => res.json())
-        .then(result => {
-          console.log(result)
-          this.setState({loaded: true, account: Account.from(result)})
-        })
-    }
-  }
-
-  componentWillUnmount() {
-    this.controller.abort()
-    this.req = undefined
-  }*/
-
   return (
     <Container maxWidth="sm" className="app" >
       <Header />
diff --git a/client/src/pages/serverSetup.jsx b/client/src/pages/serverSetup.jsx
index db5b155..d431568 100644
--- a/client/src/pages/serverSetup.jsx
+++ b/client/src/pages/serverSetup.jsx
@@ -1,5 +1,4 @@
 import React, { useState } from 'react'
-import { useNavigate } from "react-router-dom"
 
 import { Box, Container, Fab, Card, CardContent, Typography, Input } from '@mui/material'
 import GroupAddRounded from '@mui/icons-material/GroupAddRounded'
@@ -12,22 +11,15 @@
       //margin: theme.spacing(1),
     },
   },
-  extendedIcon: {
-    //marginRight: theme.spacing(1),
-  },
   wizardCard: {
     borderRadius: 8,
     maxWidth: 360,
     margin: "16px auto"
   },
-  textField: {
-    //margin: theme.spacing(1),
-  }
 }))
 
 export default function ServerSetup(props) {
   const classes = useStyles()
-  const navigate = useNavigate()
   const [password, setPassword] = useState('')
   const [passwordRepeat, setPasswordRepeat] = useState('')
   const [loading, setLoading] = useState(false)
