diff --git a/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/LoginActivity.java b/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/LoginActivity.java
index 7db3b5a..e5f9e9f 100644
--- a/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/LoginActivity.java
+++ b/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/LoginActivity.java
@@ -1,8 +1,9 @@
 package org.communiquons.android.comunic.client.ui.activities;
 
 import android.content.Intent;
-import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.ProgressBar;
@@ -11,7 +12,6 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import org.communiquons.android.comunic.client.R;
-import org.communiquons.android.comunic.client.data.asynctasks.APIRequestTask;
 import org.communiquons.android.comunic.client.data.helpers.APIRequestHelper;
 import org.communiquons.android.comunic.client.data.helpers.AccountHelper;
 import org.communiquons.android.comunic.client.data.models.APIRequest;
@@ -45,6 +45,8 @@ public class LoginActivity extends AppCompatActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_login);
+        assert getSupportActionBar() != null;
+        getSupportActionBar().hide();
 
         //Create utilities object
         utils = new Utilities(this);
@@ -84,8 +86,8 @@ public class LoginActivity extends AppCompatActivity {
     void submitLogin(){
 
         //Get the fields
-        final EditText login_mail = (EditText) findViewById(R.id.email_field);
-        EditText login_password = (EditText) findViewById(R.id.password_field);
+        EditText login_mail = findViewById(R.id.email_field);
+        EditText login_password = findViewById(R.id.password_field);
 
 
         int stop = 0;
@@ -120,39 +122,78 @@ public class LoginActivity extends AppCompatActivity {
 
 
         //Perform a request on the API to check user credentials and get login tokens
-        APIRequest params = new APIRequest(this, "user/connectUSER");
+        final APIRequest params = new APIRequest(this, "user/connectUSER");
         params.addString("userMail", ""+login_mail.getText());
         params.addString("userPassword", ""+login_password.getText());
 
         //Create Request
-        new APIRequestTask(){
-            @Override
-            protected void onPostExecute(APIResponse result) {
+        new Thread(new SubmitLoginRequest(params)).start();
 
-                //Check for errors
-                if(result == null) {
-
-                    //Hide loading wheel
-                    enter_loading_state(false);
-
-                    //Put the error on the login mail field
-                    show_form_error(getString(R.string.activity_login_err_invalid_credentials));
-                }
-
-                else
-                    //Perform next actions
-                    handle_server_response(result);
-
-            }
-        }.execute(params);
     }
 
+
     /**
-     * Handle server responses that seems to accept a response
-     *
-     * @param response The server reponse
+     * Runnable used to submit login request and retrieve login tokens
      */
-    void handle_server_response(APIResponse response){
+    private class SubmitLoginRequest implements Runnable {
+
+        private APIRequest mRequest;
+
+        SubmitLoginRequest(APIRequest request){
+            mRequest = request;
+        }
+
+        @Override
+        public void run() {
+
+            APIResponse response = null;
+            try {
+                response = new APIRequestHelper().exec(mRequest);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+            if(!isFinishing()){
+                findViewById(R.id.email_field).post(new ServerResponseRunnable(response));
+            }
+
+        }
+    }
+
+
+    /**
+     * Runnable used on the UI Thread to pre-process server response
+     */
+    private class ServerResponseRunnable implements Runnable {
+
+        private APIResponse mResponse;
+
+        ServerResponseRunnable(APIResponse response){
+            mResponse = response;
+        }
+
+        @Override
+        public void run() {
+            handle_server_response(mResponse);
+        }
+    }
+
+
+    /**
+     * Handle server response
+     *
+     * @param response The server response
+     */
+    void handle_server_response(@Nullable APIResponse response){
+
+        if(response == null){
+            //Hide loading wheel
+            enter_loading_state(false);
+
+            //Put the error on the login mail field
+            show_form_error(getString(R.string.activity_login_err_invalid_credentials));
+            return;
+        }
 
         JSONObject data = response.getJSONObject();
 
@@ -214,12 +255,12 @@ public class LoginActivity extends AppCompatActivity {
     /**
      * Switch between loading state and ready state for the login form
      *
-     * @param show_progress Specify wether a progress bar should be shown or not
+     * @param show_progress Specify whether a progress bar should be shown or not
      */
     void enter_loading_state(boolean show_progress){
         //Grab elements
-        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_bar);
-        ScrollView login_form = (ScrollView) findViewById(R.id.login_form);
+        ProgressBar progressBar = findViewById(R.id.progress_bar);
+        ScrollView login_form = findViewById(R.id.login_form);
 
         progressBar.setVisibility(show_progress ? View.VISIBLE : View.GONE);
         login_form.setVisibility(show_progress ? View.GONE : View.VISIBLE);
@@ -233,7 +274,7 @@ public class LoginActivity extends AppCompatActivity {
     void show_form_error(String message){
 
         //Retrieve error field
-        TextView v_error = (TextView) findViewById(R.id.login_error_message);
+        TextView v_error = findViewById(R.id.login_error_message);
 
         //Check what to do
         boolean display = message.length() > 0;
diff --git a/app/src/main/res/drawable/activity_login_bg.xml b/app/src/main/res/drawable/activity_login_bg.xml
new file mode 100644
index 0000000..e7a8088
--- /dev/null
+++ b/app/src/main/res/drawable/activity_login_bg.xml
@@ -0,0 +1,9 @@
+
+    
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/side_nav_bar.xml b/app/src/main/res/drawable/side_nav_bar.xml
index 6d81870..e7a8088 100644
--- a/app/src/main/res/drawable/side_nav_bar.xml
+++ b/app/src/main/res/drawable/side_nav_bar.xml
@@ -2,8 +2,8 @@
     android:shape="rectangle">
     
 
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 4a604d8..db946ff 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -1,30 +1,48 @@
 
-
 
+    
+    
+
     
     
+        android:layout_centerVertical="true"
+        android:scrollbarAlwaysDrawVerticalTrack="false"
+        android:visibility="gone" />
 
-    
     
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:layout_gravity="center_horizontal"
+        android:layout_centerVertical="true">
 
         
+                android:textColor="@color/colorAccent"
+                android:textStyle="bold"
+                android:visibility="gone"
+                tools:text="Error content" />
 
             
             
+                android:layout_height="wrap_content"
+                style="@style/LoginInput">
 
                 
+                    android:inputType="textEmailAddress" />
 
             
 
@@ -60,7 +80,8 @@
             
+                android:layout_marginTop="8dp"
+                style="@style/LoginInput">
 
                 
+                    style="@style/LoginInput" />
 
             
 
@@ -85,4 +106,4 @@
 
     
 
-
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index a0c1953..635407a 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -2,7 +2,7 @@
 
     #3F51B5
     #303F9F
-    #FF4081
+    #ff4081
 
     #ff669900
     #aaa
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 113c3cf..a020925 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -12,6 +12,15 @@
         - @color/colorAccent+
+    
+    
+