diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
index df581a86cff6297ce24f37759153ba9b50f1c8b7..83b45a8e73b35df07245c27361ccced5ce7a1d57 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
@@ -16,16 +16,12 @@ import android.view.MenuInflater;
 
 import android.view.MenuItem;
 import android.view.View;
-import android.widget.TextView;
 import android.widget.Toast;
 
-import ms.warpzone.warppay.R;
 import ms.warpzone.warppay.data.models.local.Product;
 import ms.warpzone.warppay.data.models.local.User;
 
 import ms.warpzone.warppay.dialogs.BarcodeLearnDialog;
-import ms.warpzone.warppay.dialogs.NewUserDialog;
-import ms.warpzone.warppay.dialogs.SettingsDialog;
 import ms.warpzone.warppay.manager.DataManager;
 import ms.warpzone.warppay.manager.MainManager;
 import ms.warpzone.warppay.manager.UiManager;
@@ -93,7 +89,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
         DataManager.getInstance().setLastCardId(card_id);
         if(this.manager.getCurrentUser() == null) {
             User u = User.getByCardId(card_id);
-            this.manager.setCurrentUser(u);
+            if(u != null)
+                MainManager.getInstance().setCurrentUser(u);
         }
     }
 
@@ -111,6 +108,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.action_learn_card_id:
+                MainManager.getInstance().stopTimer();
                 if (this.manager.getCurrentUser() != null){
                     new AlertDialog.Builder(this)
                             .setTitle(this.getResources().getString(R.string.confirm_learn_card))
@@ -127,6 +125,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                 }
                 break;
             case R.id.action_learn_barcode:
+                MainManager.getInstance().stopTimer();
                 this.barcodeLearnDialog = new BarcodeLearnDialog();
                 MainManager.getInstance().setBarcodeLearning(true);
                 this.barcodeLearnDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@@ -158,9 +157,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
         if(this.manager.getCurrentUser() != null) {
             if (event.getAction() == KeyEvent.ACTION_UP) {
                 if (KeyEvent.KEYCODE_ENTER == event.getKeyCode()) {
-                    /*if(this.manager.isBarcodeLearning()) {
-                        this.barcodeLearnDialog.setBarcode(this.barcode.trim().replace("\n", "").toString());
-                    } else {*/
                         Product p = Product.getOneByBarcode(this.barcode.trim().replace("\n", "").toString());
                         if (p != null) {
                             Order order = new Order(p);
@@ -170,7 +166,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                         } else {
                             Toast.makeText(this, "Barcode not found: " + this.barcode, Toast.LENGTH_LONG).show();
                         }
-                    //}
                     this.barcode = "";
                 } else {
                     this.barcode += (char) event.getUnicodeChar();
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeDialog.java
index a966492d71d7aafcd4aff0edafed48ba3c5a210b..7b3b9a7e02351cec97f2c591c68487692b847563 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeDialog.java
@@ -9,6 +9,7 @@ import android.widget.Button;
 import ms.warpzone.warppay.MainActivity;
 import ms.warpzone.warppay.R;
 import ms.warpzone.warppay.manager.MainManager;
+import ms.warpzone.warppay.manager.UiManager;
 
 public class ChargeDialog extends Dialog implements
         android.view.View.OnClickListener {
@@ -54,7 +55,9 @@ public class ChargeDialog extends Dialog implements
                 amount = 20.0;
                 break;
             case R.id.btnOther:
-                    new ChargeCustomDialog(this,this.c).show();
+                ChargeCustomDialog cd = new ChargeCustomDialog(this,this.c);
+                UiManager.getInstance().setChargeCustomDialog(cd);
+                cd.show();
                 break;
             default:
                 break;
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NewUserDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NewUserDialog.java
deleted file mode 100644
index 8b1a752aa3c174cb5a94044c351863810779fcf4..0000000000000000000000000000000000000000
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NewUserDialog.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package ms.warpzone.warppay.dialogs;
-
-import android.app.Dialog;
-import android.os.Bundle;
-import android.view.View;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.TextView;
-
-import ms.warpzone.warppay.MainActivity;
-import ms.warpzone.warppay.R;
-import ms.warpzone.warppay.manager.MainManager;
-
-public class NewUserDialog extends Dialog implements
-        View.OnClickListener {
-
-    public MainActivity c;
-    public Button btnAddUser;
-    public TextView txtUsername;
-    public NewUserDialog() {
-        super(MainManager.getInstance().getMainActivity());
-        this.c = MainManager.getInstance().getMainActivity();
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        requestWindowFeature(Window.FEATURE_NO_TITLE);
-        setContentView(R.layout.new_user_dialog);
-        this.btnAddUser = (Button) findViewById(R.id.btnAddUser);
-        this.btnAddUser.setOnClickListener(this);
-        this.txtUsername = (TextView) findViewById(R.id.txtUsername);
-
-
-    }
-
-    @Override
-    public void onClick(View v) {
-        /*
-        switch (v.getId()) {
-            case R.id.btnAddUser:
-                String username = this.txtUsername.getText().toString();
-                if (!username.equals("")) {
-                    if(!MainManager.getInstance().addUser(username)) {
-                        Toast.makeText(v.getContext(),"Username ist schon vorhanden",Toast.LENGTH_LONG).show();
-                    } else {
-                        Toast.makeText(v.getContext(),"User angelegt",Toast.LENGTH_LONG).show();
-                        dismiss();
-                    }
-                } else {
-                    Toast.makeText(v.getContext(),"Username darf nicht leer sein",Toast.LENGTH_LONG).show();
-                }
-                break;
-            default:
-                break;
-        }
-        */
-    }
-}
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PayChoiceDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PayChoiceDialog.java
index bd2c3609fe9b26a7ae67d313320327b861713009..a9cf0e9569d06127b70c87b9a3fa96c695456b7d 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PayChoiceDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PayChoiceDialog.java
@@ -44,6 +44,7 @@ public class PayChoiceDialog extends Dialog implements View.OnClickListener {
 
     @Override
     public void onClick(View v) {
+        MainManager.getInstance().startTimer();
         switch (v.getId()) {
             case R.id.btnCredit:
                 MainManager.getInstance().performPayment(false);
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PinCodesDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PinCodesDialog.java
index ea0671c1204d7bad7f60ffe59f7d13a73f3d7038..76e1437c141902ea0bb8af5096ce141978490536 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PinCodesDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PinCodesDialog.java
@@ -47,13 +47,17 @@ public class PinCodesDialog extends Dialog implements View.OnClickListener, View
     }
 
     private void checkPin() {
-        String pin = this.etxtPinCode.getText().toString();
-        if(BCrypt.checkpw(pin, this.user.getPinCode())) {
-            MainManager.getInstance().setCurrentUser(this.user, true);
-            this.etxtPinCode.setEnabled(false);
-            dismiss();
-        } else {
-            etxtPinCode.setBackgroundColor(Color.RED);
+        try {
+            String pin = this.etxtPinCode.getText().toString();
+            if (BCrypt.checkpw(pin, this.user.getPinCode())) {
+                MainManager.getInstance().setCurrentUser(this.user, true);
+                this.etxtPinCode.setEnabled(false);
+                dismiss();
+            } else {
+                etxtPinCode.setBackgroundColor(Color.RED);
+            }
+        } catch(Exception e) {
+
         }
     }
     @Override
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ProductDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ProductDialog.java
index 6f10dce59dbd8ab349520a7cd9c0f4f45437c86a..c36a809b9b12c110785aa2d7f4f11f40506244c4 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ProductDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ProductDialog.java
@@ -62,6 +62,7 @@ public class ProductDialog extends Dialog implements View.OnClickListener {
 
     @Override
     public void onClick(View view) {
+        MainManager.getInstance().startTimer();
         Button clicked = (Button) view;
         String product_name = (String) clicked.getText();
         Product product = Product.getOneByName(product_name);
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/listener/CategoryOnClickListener.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/listener/CategoryOnClickListener.java
index 558966f7000d7b0267a5d06a3d1eccfaec1c144f..aaff1babaa4d29b52eecdbda17a468cff11ce122 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/listener/CategoryOnClickListener.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/listener/CategoryOnClickListener.java
@@ -3,14 +3,19 @@ import android.view.View;
 import android.widget.Button;
 
 import ms.warpzone.warppay.dialogs.ProductDialog;
+import ms.warpzone.warppay.manager.MainManager;
+import ms.warpzone.warppay.manager.UiManager;
 
 public class CategoryOnClickListener implements View.OnClickListener {
 
 
     @Override
     public void onClick(View view) {
+        MainManager.getInstance().startTimer();
         Button clicked = (Button) view;
         String category = (String) clicked.getText();
-        new ProductDialog(category).show();
+        ProductDialog p = new ProductDialog(category);
+        UiManager.getInstance().setProductDialog(p);
+        p.show();
     }
 }
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java
index 2d374d420438666076cbf9e3d9da5c327291bddc..46476baaf322a7dfcc808ab36d4ec696baac2bc8 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java
@@ -3,6 +3,7 @@ package ms.warpzone.warppay.manager;
 import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.os.Handler;
 import android.util.Log;
 import android.widget.Toast;
 
@@ -22,6 +23,8 @@ import java.security.NoSuchAlgorithmException;
 import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
 import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
 
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManagerFactory;
@@ -52,7 +55,7 @@ public class MainManager {
     private UiManager uiManager;
     private DataManager dataManager;
     private boolean barcodeLearning=false;
-
+    private Timer timer;
     private static MainManager instance = new MainManager();
 
     public static MainManager getInstance() {
@@ -60,8 +63,6 @@ public class MainManager {
     }
 
     private MainManager() {
-
-
     }
 
     private RestService createRestService() {
@@ -81,21 +82,13 @@ public class MainManager {
                     Request newRequest;
 
                     newRequest = request.newBuilder()
-                            .addHeader("Authorization", "Token ")
+                            .addHeader("Authorization", "Token 7b6ca8ade59a32cef9b516e91f3bc9545b6c75a7")
                             .build();
 
                     return chain.proceed(newRequest);
                 }
             });
-        } catch (CertificateException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        } catch (KeyStoreException e) {
-            e.printStackTrace();
-        } catch (NoSuchAlgorithmException e) {
-            e.printStackTrace();
-        } catch (KeyManagementException e) {
+        } catch (CertificateException | NoSuchAlgorithmException | KeyManagementException | IOException | KeyStoreException e) {
             e.printStackTrace();
         }
 
@@ -107,7 +100,6 @@ public class MainManager {
     private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException,
             KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
 
-        // Loading CAs from an InputStream
         CertificateFactory cf = null;
         String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw";
         KeyStore keyStore   = KeyStore.getInstance("BKS");
@@ -189,7 +181,7 @@ public class MainManager {
 
     public void setCurrentUser(User user, boolean authorized) {
         if (user != null) {
-            if(user.getPinCode() != "" && !authorized) {
+            if(!user.getPinCode().isEmpty() && !authorized) {
                 PinCodesDialog p = new PinCodesDialog(user);
                 p.setOnDismissListener(new DialogInterface.OnDismissListener() {
                     @Override
@@ -203,16 +195,46 @@ public class MainManager {
             }
             this.dataManager.setCurrentUser(user);
             this.uiManager.setCurrentUser(user);
+            this.startTimer();
         }
     }
 
+    public void stopTimer() {
+        if (this.timer != null) {
+            this.timer.cancel();
+            this.timer.purge();
+        }
+    }
+    public void startTimer() {
+        this.stopTimer();
+
+        this.timer = new Timer();
+
+        TimerTask t = new TimerTask() {
+            @Override
+            public void run() {
+                Handler mainHandler = new Handler(MainManager.getInstance().getMainActivity().getApplicationContext().getMainLooper());
+                Runnable myRunnable = new Runnable() {
+                    @Override
+                    public void run() {
+                        MainManager.getInstance().clearCurrentUser();
+                    }
+                };
+                mainHandler.post(myRunnable);
+            }
+        };
+
+        this.timer.schedule(t, 30000);
+    }
     public User getCurrentUser() {
         return this.dataManager.getCurrentUser();
     }
 
     public void clearCurrentUser() {
+        DataManager.getInstance().setLastCardId("");
         this.dataManager.clearCurrentUser();
         this.uiManager.clearCurrentUser();
+        this.stopTimer();
     }
 
     public void addOrder(Order order) {
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java
index cb9124bacf31c76e2d79f5b13de2d28671e0b1b1..821f39032e5f65548490fb25d8d129a8a10ddd15 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java
@@ -1,26 +1,19 @@
 package ms.warpzone.warppay.manager;
 
 import android.annotation.TargetApi;
-import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Build;
-import android.provider.Contacts;
-import android.util.Log;
 import android.view.KeyEvent;
 import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.AutoCompleteTextView;
 import android.widget.Button;
-import android.widget.EditText;
 import android.widget.GridLayout;
 import android.widget.ImageButton;
 import android.widget.ListView;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -30,11 +23,11 @@ import ms.warpzone.warppay.R;
 import ms.warpzone.warppay.data.models.local.Category;
 import ms.warpzone.warppay.data.models.local.Product;
 import ms.warpzone.warppay.data.models.local.User;
-import ms.warpzone.warppay.data.models.rest.RestProduct;
+import ms.warpzone.warppay.dialogs.ChargeCustomDialog;
 import ms.warpzone.warppay.dialogs.ChargeDialog;
-import ms.warpzone.warppay.dialogs.NewUserDialog;
 import ms.warpzone.warppay.dialogs.PayChoiceDialog;
 import ms.warpzone.warppay.dialogs.PinCodesDialog;
+import ms.warpzone.warppay.dialogs.ProductDialog;
 import ms.warpzone.warppay.listener.CategoryOnClickListener;
 import ms.warpzone.warppay.orderList.ListViewAdapter;
 import ms.warpzone.warppay.orderList.ListViewAdapterProducts;
@@ -56,6 +49,13 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
     private ArrayList<Double> order;
     private List<User> users;
 
+
+    private PayChoiceDialog payChoiceDialog;
+    private ProductDialog productDialog;
+    private ChargeDialog chargeDialog;
+    private ChargeCustomDialog chargeCustomDialog;
+    private PinCodesDialog pinCodesDialog;
+
     private static UiManager ourInstance = new UiManager();
 
     public static UiManager getInstance() {
@@ -137,6 +137,15 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
         if(this.atxvName.requestFocus()) {
             this.showSoftKeyboard(this.mainActivity.getCurrentFocus());
         }
+
+        if(this.payChoiceDialog != null)
+            this.payChoiceDialog.dismiss();
+        if(this.chargeCustomDialog != null)
+            this.chargeCustomDialog.dismiss();
+        if(this.chargeDialog != null)
+            this.chargeDialog.dismiss();
+        if(this.productDialog != null)
+            this.productDialog.dismiss();
     }
 
     private void enableControls(boolean enable) {
@@ -178,13 +187,15 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
 
     @Override
     public void onClick(View v) {
+        MainManager.getInstance().startTimer();
         switch (v.getId()) {
             case R.id.btnCharge:
-                new ChargeDialog().show();
+                this.chargeDialog = new ChargeDialog();
+                this.chargeDialog.show();
                 break;
             case R.id.btnPay:
-                PayChoiceDialog payChoiceDialog = new PayChoiceDialog();
-                payChoiceDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
+                this.payChoiceDialog = new PayChoiceDialog();
+                this.payChoiceDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                     @Override
                     public void onDismiss(DialogInterface dialog) {
                         if (MainManager.getInstance().getCurrentUser() == null)
@@ -192,7 +203,7 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
                     }
                 });
 
-                payChoiceDialog.show();
+                this.payChoiceDialog.show();
                 break;
             case R.id.btnLogout:
                 MainManager.getInstance().clearCurrentUser();
@@ -201,11 +212,12 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
                 MainManager.getInstance().refreshData();
                 break;
             case R.id.btnGuest:
-                DataManager.getInstance().setIs_guest(true);
-                MainManager.getInstance().setCurrentUser(new User("Guest","",0,""));
-                this.atxvName.setText("Gast");
-                this.atxvName.dismissDropDown();
-
+                if(MainManager.getInstance().getCurrentUser() == null) {
+                    DataManager.getInstance().setIs_guest(true);
+                    MainManager.getInstance().setCurrentUser(new User("Guest", "", 0, ""));
+                    this.atxvName.setText("Gast");
+                    this.atxvName.dismissDropDown();
+                }
         }
     }
 
@@ -263,4 +275,12 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
     public void addOrder(Order order) {
         this.lstOrderedAdapter.insert(order, this.lstOrderedAdapter.getCount());
     }
+
+    public void setProductDialog(ProductDialog productDialog) {
+        this.productDialog = productDialog;
+    }
+
+    public void setChargeCustomDialog(ChargeCustomDialog chargeCustomDialog) {
+        this.chargeCustomDialog = chargeCustomDialog;
+    }
 }