diff --git a/WarpDrinkApp/WarpDrink.iml b/WarpDrinkApp/WarpDrink.iml
index b9d7a440ff2e54716d1b6f255e6dcf2a43313f87..84b9073cee7219f3a594cbdbcd3d34dc30a74d0f 100644
--- a/WarpDrinkApp/WarpDrink.iml
+++ b/WarpDrinkApp/WarpDrink.iml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.id="WarpDrink" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+<module external.linked.project.id="WarpPay" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
     <facet type="java-gradle" name="Java-Gradle">
       <configuration>
diff --git a/WarpDrinkApp/app/build.gradle b/WarpDrinkApp/app/build.gradle
index 3903d8c47c622f909a366382b560ece45244cfac..a97132f0c28c498ef9e6d2bc99c050253bb57d64 100644
--- a/WarpDrinkApp/app/build.gradle
+++ b/WarpDrinkApp/app/build.gradle
@@ -24,7 +24,10 @@ android {
         exclude 'META-INF/notice.txt'
         exclude 'META-INF/license.txt'
     }
-
+    repositories {
+        mavenCentral()
+        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
+    }
 }
 
 dependencies {
@@ -37,6 +40,7 @@ dependencies {
     compile group: 'com.squareup.retrofit' , name: 'retrofit' , version: '2.0.0-beta2'
     compile group: 'com.squareup.retrofit' , name: 'converter-gson' , version: '2.0.0-beta2'
     compile group: 'com.google.code.gson' , name: 'gson' , version: '2.7'
+    compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'
     compile group: 'com.squareup.okio' , name: 'okio' , version: '1.9.0'
     compile group: 'com.squareup.okhttp', name: 'okhttp', version: '2.7.5'
     compile group: 'org.antlr', name: 'antlr4-runtime', version: '4.5.3'
diff --git a/WarpDrinkApp/app/libs/activeandroid-3.0.jar b/WarpDrinkApp/app/libs/activeandroid-3.0.jar
deleted file mode 100644
index 6694276ab286080037510285f2810c2d7ff79350..0000000000000000000000000000000000000000
Binary files a/WarpDrinkApp/app/libs/activeandroid-3.0.jar and /dev/null differ
diff --git a/WarpDrinkApp/app/src/main/AndroidManifest.xml b/WarpDrinkApp/app/src/main/AndroidManifest.xml
index c87b7177988530c33b585c6bcee99c8a973cd8ae..edd5c2a1b0a097c769bc13ce10b94c2c62f74a37 100644
--- a/WarpDrinkApp/app/src/main/AndroidManifest.xml
+++ b/WarpDrinkApp/app/src/main/AndroidManifest.xml
@@ -19,8 +19,8 @@
         android:theme="@style/AppTheme">
 
 
-        <meta-data android:name="AA_DB_NAME" android:value="warppay_2.db" />
-        <meta-data android:name="AA_DB_VERSION" android:value="11" />
+        <meta-data android:name="AA_DB_NAME" android:value="warppay_new.db" />
+        <meta-data android:name="AA_DB_VERSION" android:value="15" />
 
         <activity
             android:name="ms.warpzone.warppay.MainActivity"
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 f4e2538fd3e0f27dfed093bdb353569db6ed93e2..6509fa434a3834ef7a5a6e51f730c2c3ac27b0f2 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
@@ -29,6 +29,7 @@ import ms.warpzone.warppay.data.models.local.User;
 import ms.warpzone.warppay.dialogs.BarcodeLearnDialog;
 import ms.warpzone.warppay.manager.DataManager;
 import ms.warpzone.warppay.manager.MainManager;
+import ms.warpzone.warppay.manager.RefreshManager;
 import ms.warpzone.warppay.manager.UiManager;
 import ms.warpzone.warppay.orderList.Order;
 
@@ -102,13 +103,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     @Override
     public void onUserInteraction(){
         if(MainManager.getInstance().getCurrentUser() != null) {
-            MainManager.getInstance().startTimer();
+            RefreshManager.getInstance().startTimer();
             //MainManager.getInstance().stopScreenSaverTimer();
         } else {
-            MainManager.getInstance().stopTimer();
+            RefreshManager.getInstance().stopTimer();
             //MainManager.getInstance().resetScreenSaverTimer();
         }
-
     }
 
     public static String byteArrayToHex(byte[] a) {
@@ -126,7 +126,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     public boolean onMenuItemClick(MenuItem menuItem) {
         switch (menuItem.getItemId()) {
             case R.id.action_learn_card_id:
-                MainManager.getInstance().stopTimer();
+                RefreshManager.getInstance().stopTimer();
                 if (this.manager.getCurrentUser() != null){
                     new AlertDialog.Builder(this)
                             .setTitle(this.getResources().getString(R.string.confirm_learn_card))
@@ -143,7 +143,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                 }
                 break;
             case R.id.action_learn_barcode:
-                MainManager.getInstance().stopTimer();
+                RefreshManager.getInstance().stopTimer();
                 this.barcodeLearnDialog = new BarcodeLearnDialog();
                 MainManager.getInstance().setBarcodeLearning(true);
                 this.barcodeLearnDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/SQLiteService.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/SQLiteService.java
index 0aa8744ebfbf80433c097cfffe216fcd8bbcbd77..6c83e2dcd569e93a0f5f75e9e90d63ab2d3a1b67 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/SQLiteService.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/SQLiteService.java
@@ -2,6 +2,8 @@ package ms.warpzone.warppay.data;
 
 import android.util.Log;
 
+import com.activeandroid.query.Select;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java
index 8aea40995b1e50b0946aa7f03583c02ae7b7446d..7c51fa99d485bfce945db2c6fed2fc813cd94fc7 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/Product.java
@@ -8,6 +8,7 @@ import com.activeandroid.annotation.Table;
 import com.activeandroid.query.Delete;
 import com.activeandroid.query.Select;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -30,7 +31,7 @@ public class Product extends Model {
     private float position;
 
     @Column(name = "price")
-    private float price;
+    private BigDecimal price;
 
     @Column(name = "count")
     private int count;
@@ -39,7 +40,7 @@ public class Product extends Model {
         super();
     }
 
-    public Product(int pid, String name, String category, float price, int count, float position) {
+    public Product(int pid, String name, String category, BigDecimal price, int count, float position) {
         super();
         this.pid = pid;
         this.name = name;
@@ -49,7 +50,7 @@ public class Product extends Model {
         this.position = position;
     }
 
-    public static ArrayList<Product> getAllWithoutBarcode() {
+    public static List<Product> getAllWithoutBarcode() {
         return new Select()
                 .from(Product.class)
                 .where("barcode = ''")
@@ -81,11 +82,11 @@ public class Product extends Model {
         this.category = category;
     }
 
-    public float getPrice() {
+    public BigDecimal getPrice() {
         return price;
     }
 
-    public void setPrice(float price) {
+    public void setPrice(BigDecimal price) {
         this.price = price;
     }
 
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/User.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/User.java
index c3e6e6ce2ab8c0b6f0fc182feabd570fd01d1a3a..c1793dff865790bfda977bc38bf01c9bbbd76c64 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/User.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/local/User.java
@@ -6,6 +6,7 @@ import com.activeandroid.annotation.Table;
 import com.activeandroid.query.Delete;
 import com.activeandroid.query.Select;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Table(name = "Users")
@@ -21,14 +22,14 @@ public class User extends Model {
     private String card_id;
 
     @Column(name = "credit")
-    private double credit;
+    private BigDecimal credit;
 
 
     public User() {
         super();
     }
 
-    public User(String uid, String pinCode, double credit, String card_id) {
+    public User(String uid, String pinCode, BigDecimal credit, String card_id) {
         super();
         this.uid = uid;
         this.credit = credit;
@@ -52,11 +53,11 @@ public class User extends Model {
         this.card_id = card_id;
     }
 
-    public double getCredit() {
+    public BigDecimal getCredit() {
         return credit;
     }
 
-    public void setCredit(double credit) {
+    public void setCredit(BigDecimal credit) {
         this.credit = credit;
     }
 
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestProduct.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestProduct.java
index 4b2dc4a43a94add03856d5eb0dd3db4db8a3fbf9..d907322c1b9d3f7f80701b2698c7a6cf97859e7a 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestProduct.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestProduct.java
@@ -1,5 +1,7 @@
 package ms.warpzone.warppay.data.models.rest;
 
+import java.math.BigDecimal;
+
 import ms.warpzone.warppay.data.models.local.Product;
 
 public class RestProduct {
@@ -9,7 +11,7 @@ public class RestProduct {
     private String name;
     private String category;
     private String barcode;
-    private Float price_vk;
+    private BigDecimal price_vk;
     private int stock_count;
     private float position;
 
@@ -17,7 +19,7 @@ public class RestProduct {
         super();
     }
 
-    public RestProduct(int id, String name, String category,String barcode, Float price_vk, int stock_count, float position) {
+    public RestProduct(int id, String name, String category,String barcode, BigDecimal price_vk, int stock_count, float position) {
         this.id = id;
         this.name = name;
         this.category = category;
@@ -51,11 +53,11 @@ public class RestProduct {
         this.category = category;
     }
 
-    public Float getPrice() {
+    public BigDecimal getPrice() {
         return price_vk;
     }
 
-    public void setPrice(Float price) {
+    public void setPrice(BigDecimal price) {
         this.price_vk = price_vk;
     }
 
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestTransaction.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestTransaction.java
index 19e02d07eaba91cf70008d4b546719a66a279871..7b14fb5513c2ca31668dba433530989d1c385d52 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestTransaction.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestTransaction.java
@@ -1,18 +1,20 @@
 package ms.warpzone.warppay.data.models.rest;
 
+import java.math.BigDecimal;
+
 public class RestTransaction {
 
     private int tid;
     private int trans_type;
     private RestProduct product;
-    private double amount;
+    private BigDecimal amount;
     private boolean cash_paid;
 
     public RestTransaction() {
         super();
     }
 
-    public RestTransaction(int tid, int trans_type, RestProduct product, double amount, boolean cash_paid) {
+    public RestTransaction(int tid, int trans_type, RestProduct product, BigDecimal amount, boolean cash_paid) {
         this.tid = tid;
         this.trans_type = trans_type;
         this.product = product;
@@ -40,11 +42,11 @@ public class RestTransaction {
         this.product = product;
     }
 
-    public double getAmount() {
+    public BigDecimal getAmount() {
         return amount;
     }
 
-    public void setAmount(double amount) {
+    public void setAmount(BigDecimal amount) {
         this.amount = amount;
     }
 
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestUser.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestUser.java
index bdcdf5f20b0084e9376a78e7ebd22a0dda3a844b..d7f3176b348630c5ffd015bb77d507cad577fe17 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestUser.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/data/models/rest/RestUser.java
@@ -1,12 +1,14 @@
 package ms.warpzone.warppay.data.models.rest;
 
+import java.math.BigDecimal;
+
 import ms.warpzone.warppay.data.models.local.User;
 
 public class RestUser {
 
 
     private String uid;
-    private double credit;
+    private BigDecimal credit;
     private String card_id;
     private String pinCode;
 
@@ -14,7 +16,7 @@ public class RestUser {
         super();
     }
 
-    public RestUser(String uid, double credit, String card_id, String pinCode) {
+    public RestUser(String uid, BigDecimal credit, String card_id, String pinCode) {
         super();
         this.uid = uid;
         this.credit = credit;
@@ -38,11 +40,11 @@ public class RestUser {
         this.card_id = card_id;
     }
 
-    public double getCredit() {
+    public BigDecimal getCredit() {
         return credit;
     }
 
-    public void setCredit(double credit) {
+    public void setCredit(BigDecimal credit) {
         this.credit = credit;
     }
 
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/BarcodeLearnDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/BarcodeLearnDialog.java
index 2d6020980c1def2bf63f7e2538cec3f98ef2032d..3349df1fd3c9522f4bd818df0054536e90149762 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/BarcodeLearnDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/BarcodeLearnDialog.java
@@ -27,6 +27,7 @@ import ms.warpzone.warppay.data.models.rest.RestProduct;
 import ms.warpzone.warppay.data.models.rest.RestUser;
 import ms.warpzone.warppay.manager.DataManager;
 import ms.warpzone.warppay.manager.MainManager;
+import ms.warpzone.warppay.manager.RestManager;
 import ms.warpzone.warppay.manager.UiManager;
 import ms.warpzone.warppay.orderList.ListViewAdapter;
 import ms.warpzone.warppay.orderList.Order;
@@ -95,7 +96,7 @@ public class BarcodeLearnDialog extends Dialog implements View.OnClickListener,
                     this.act_product.setBarcode(this.barcode);
                     this.act_product.save();
                     RestProduct p = RestProduct.fromLocalProduct(this.act_product);
-                    MainManager.getInstance().getRestService().saveBarcode(p.getId(),p).enqueue(new Callback<Void>() {
+                    RestManager.getInstance().getRestService().saveBarcode(p.getId(),p).enqueue(new Callback<Void>() {
                         @Override
                         public void onResponse(Response<Void> response, Retrofit retrofit) {
 
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeCustomDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeCustomDialog.java
index 97813fb7d84c10e79894f56082de28168957142f..ebb944e516405a15fc7a86130c6ec7eca3ff4d5a 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeCustomDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeCustomDialog.java
@@ -10,6 +10,8 @@ import android.widget.Button;
 import android.widget.EditText;
 import android.widget.NumberPicker;
 
+import java.math.BigDecimal;
+
 import ms.warpzone.warppay.MainActivity;
 import ms.warpzone.warppay.R;
 import ms.warpzone.warppay.manager.MainManager;
@@ -63,8 +65,8 @@ public class ChargeCustomDialog extends Dialog implements
         try {
             String text = this.etxtAmount.getText().toString();
             text = text.replace(",",".");
-            double amount = Double.valueOf(text);
-            if(amount > 0.0)
+            BigDecimal amount = BigDecimal.valueOf(Double.valueOf(text));
+            if(amount.compareTo(new BigDecimal(0.0)) > 0)
                 MainManager.getInstance().chargeAmount(amount);
         } catch (Exception e) {
 
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 7b3b9a7e02351cec97f2c591c68487692b847563..16d16c62fe54c4090711e2699c8b4ff6db139492 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
@@ -6,6 +6,8 @@ import android.view.View;
 import android.view.Window;
 import android.widget.Button;
 
+import java.math.BigDecimal;
+
 import ms.warpzone.warppay.MainActivity;
 import ms.warpzone.warppay.R;
 import ms.warpzone.warppay.manager.MainManager;
@@ -43,16 +45,16 @@ public class ChargeDialog extends Dialog implements
 
     @Override
     public void onClick(View v) {
-        double amount = 0.0;
+        BigDecimal amount = new BigDecimal(0.0);
         switch (v.getId()) {
             case R.id.btnFiveEuro:
-                amount = 5.0;
+                amount = new BigDecimal(5.0);
                 break;
             case R.id.btnTenEuro:
-                amount = 10.0;
+                amount = new BigDecimal(10.0);
                 break;
             case R.id.btnTwentyEuro:
-                amount = 20.0;
+                amount = new BigDecimal(20.0);
                 break;
             case R.id.btnOther:
                 ChargeCustomDialog cd = new ChargeCustomDialog(this,this.c);
@@ -62,7 +64,7 @@ public class ChargeDialog extends Dialog implements
             default:
                 break;
         }
-        if(amount > 0.0)
+        if(amount.compareTo(new BigDecimal(0.0)) >  0)
             MainManager.getInstance().chargeAmount(amount);
         dismiss();
     }
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NyanCatDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NyanCatDialog.java
index 7ee563c991a46c187fc8f018f8e98c78f3dac956..492a375a4aa05e8381d3fb6c2bf1072d2b255d0f 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NyanCatDialog.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NyanCatDialog.java
@@ -44,8 +44,8 @@ public class NyanCatDialog extends Dialog implements View.OnClickListener{
         setContentView(R.layout.nyan_cat_dialog);
 
         this.vvNyanCat = (VideoView) findViewById(R.id.vvNyanCat);
-        String uri = "android.resource://" + MainManager.getInstance().getMainActivity().getPackageName() + "/" + R.raw.nyancat;
-        this.vvNyanCat.setVideoURI(Uri.parse(uri));
+       // String uri = "android.resource://" + MainManager.getInstance().getMainActivity().getPackageName() + "/" + R.raw.nyancat;
+        //this.vvNyanCat.setVideoURI(Uri.parse(uri));
         this.vvNyanCat.setOnClickListener(this);
         this.vvNyanCat.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
             public void onCompletion(MediaPlayer mp) {
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 76e1437c141902ea0bb8af5096ce141978490536..be1e8ae19f02903d39793a2738e69af745446b0e 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
@@ -69,8 +69,6 @@ public class PinCodesDialog extends Dialog implements View.OnClickListener, View
              default:
                 break;
         }
-
-        dismiss();
     }
 
     @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 6c2c16e2141036a29a773e2319f64443a487cc35..777b2656f83e6710514b1e3dc16a4ef10a0fb365 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
@@ -2,6 +2,7 @@ package ms.warpzone.warppay.dialogs;
 
 import android.app.Dialog;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.View;
 import android.view.Window;
 import android.widget.Button;
@@ -13,6 +14,7 @@ import ms.warpzone.warppay.MainActivity;
 import ms.warpzone.warppay.R;
 import ms.warpzone.warppay.data.models.local.Product;
 import ms.warpzone.warppay.manager.MainManager;
+import ms.warpzone.warppay.manager.RefreshManager;
 import ms.warpzone.warppay.manager.UiManager;
 import ms.warpzone.warppay.orderList.Order;
 
@@ -45,6 +47,7 @@ public class ProductDialog extends Dialog implements View.OnClickListener {
             prodButton.setWidth(200);
             prodButton.setGravity(0);
             String placeholder = "\n\n\n\n\n\n";
+
             placeholder = placeholder.substring(Integer.valueOf(p.getName().length() / 16));
             prodButton.setText(p.getName()+placeholder+String.valueOf(p.getPrice())+" Euro");
             prodButton.setTag(p.getName());
@@ -65,10 +68,11 @@ public class ProductDialog extends Dialog implements View.OnClickListener {
 
     @Override
     public void onClick(View view) {
-        MainManager.getInstance().startTimer();
+        RefreshManager.getInstance().startTimer();
         Button clicked = (Button) view;
         String product_name = (String) clicked.getTag();
         Product product = Product.getOneByName(product_name);
+
         Order order = new Order(product);
         UiManager.getInstance().addOrder(order);
         MainManager.getInstance().addOrder(order);
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java
index b4f8e2fce969a97ce6b622fdb93fd09090b03543..27771108f43dce9cb19567b37e0588ab422c0bbf 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/DataManager.java
@@ -3,6 +3,7 @@ package ms.warpzone.warppay.manager;
 import android.util.Log;
 import android.widget.Toast;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -21,7 +22,12 @@ public class DataManager {
     private User currentUser;
 
     private Boolean is_guest=false;
-    private double totalAmount;
+    private BigDecimal totalAmount = new BigDecimal(0.0);
+
+    public ArrayList<Order> getOrderList() {
+        return orderList;
+    }
+
     private ArrayList<Order> orderList;
     private String lastCardId;
 
@@ -35,7 +41,7 @@ public class DataManager {
 
     public void saveCurrentUser() {
         RestUser rest_user = RestUser.fromLocalUser(this.currentUser);
-        MainManager.getInstance().getRestService().saveUser(rest_user.getUserid(), rest_user).enqueue(new Callback<RestUser>() {
+        RestManager.getInstance().getRestService().saveUser(rest_user.getUserid(), rest_user).enqueue(new Callback<RestUser>() {
             @Override
             public void onResponse(Response<RestUser> response, Retrofit retrofit) {
                 if(response.code() == 403) {
@@ -60,41 +66,11 @@ public class DataManager {
         this.is_guest = is_guest;
     }
 
-    public void performPayment(Boolean cash) {
-        ArrayList transactions = new ArrayList<>();
-
-        for (Order order:this.orderList) {
-            RestTransaction transaction = new RestTransaction();
-            transaction.setProduct(RestProduct.fromLocalProduct(order.getProduct()));
-            transaction.setTrans_type(2);
-            if (this.is_guest || cash)
-                transaction.setCash_paid(true);
-            transactions.add(transaction);
-        }
-        MainManager.getInstance().getRestService().saveTransaction(this.currentUser.getUserid(), transactions).enqueue(new Callback<Void>() {
-            @Override
-            public void onResponse(Response<Void> response, Retrofit retrofit) {
-                Log.d("REST",String.valueOf(response.code()));
-            }
-
-            @Override
-            public void onFailure(Throwable t) {
-                Log.d("REST", t.getMessage());
-            }
-        });
-
-        if(!this.is_guest && !cash) {
-            this.currentUser.setCredit(this.currentUser.getCredit() - this.totalAmount);
-            this.currentUser.save();
-        }
-        this.totalAmount = 0.0;
-    }
-
     public void clearCurrentUser() {
         this.currentUser = null;
-        this.totalAmount = 0.0;
+        this.totalAmount = new BigDecimal(0.0);
         this.is_guest=false;
-        this.orderList = new ArrayList<Order>();
+        this.orderList = new ArrayList<>();
     }
 
     public User getCurrentUser() {
@@ -105,17 +81,17 @@ public class DataManager {
         this.currentUser = currentUser;
     }
 
-    public double getTotalAmount() {
+    public BigDecimal getTotalAmount() {
         return totalAmount;
     }
 
     public void addOrder(Order order) {
         this.orderList.add(order);
-        this.totalAmount += order.getProduct().getPrice();
+        this.totalAmount = this.totalAmount.add(order.getProduct().getPrice());
     }
     public void removeOrder(Order order) {
         this.orderList.remove(order);
-        this.totalAmount -= order.getProduct().getPrice();
+        this.totalAmount = this.totalAmount.subtract(order.getProduct().getPrice());
     }
     public void setLastCardId(String lastCardId) {
         this.lastCardId = lastCardId;
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 ecf90d45f3726303f5058c5d22276bfec012e6c3..4970d1d169ec9db93233a08dc4696b1d61490c91 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
@@ -2,64 +2,40 @@ package ms.warpzone.warppay.manager;
 
 import android.app.AlertDialog;
 import android.app.ProgressDialog;
-import android.content.Context;
 import android.content.DialogInterface;
-import android.os.Handler;
 import android.util.Log;
 
-import com.squareup.okhttp.Interceptor;
-import com.squareup.okhttp.OkHttpClient;
-import com.squareup.okhttp.Request;
+import com.activeandroid.query.Select;
 
-import java.io.IOException;
-
-import java.security.KeyManagementException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateException;
+import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.List;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.concurrent.TimeUnit;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManagerFactory;
+import java.util.StringTokenizer;
 
 import ms.warpzone.warppay.MainActivity;
 import ms.warpzone.warppay.R;
 import ms.warpzone.warppay.data.SQLiteService;
-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.RestService;
-import ms.warpzone.warppay.data.models.rest.RestCategory;
 import ms.warpzone.warppay.data.models.rest.RestProduct;
 import ms.warpzone.warppay.data.models.rest.RestTransaction;
+
 import ms.warpzone.warppay.data.models.rest.RestUser;
-import ms.warpzone.warppay.dialogs.NotificationDialog;
-import ms.warpzone.warppay.dialogs.NyanCatDialog;
 import ms.warpzone.warppay.dialogs.PinCodesDialog;
 import ms.warpzone.warppay.orderList.Order;
 import retrofit.Callback;
-import retrofit.GsonConverterFactory;
 import retrofit.Response;
 import retrofit.Retrofit;
 
 public class MainManager {
     private static MainManager instance = new MainManager();
 
-    private RestService restService;
     private MainActivity mainActivity;
     private SQLiteService sqLiteService;
     private UiManager uiManager;
     private DataManager dataManager;
     private boolean barcodeLearning=false;
-    private Timer timer;
-    private Timer screenSaverTimer;
-    private ProgressDialog pdRefresh = null;
-    private NotificationDialog ndRefreshError = null;
-    private Timer tmrRefresh;
+
+
 
     public static MainManager getInstance() {
         return instance;
@@ -68,174 +44,30 @@ public class MainManager {
     private MainManager() {
     }
 
-    private RestService createRestService() {
-
-        Retrofit.Builder builder = new Retrofit.Builder()
-                // .baseUrl("http://infra.warpzone:8000/api/")
-                .baseUrl("https://infra.warpzone/api/")
-                .addConverterFactory(GsonConverterFactory.create());
-
-
-        OkHttpClient okHttp = new OkHttpClient();
-        okHttp.setConnectTimeout(5, TimeUnit.SECONDS); // connect timeout
-        okHttp.setReadTimeout(5, TimeUnit.SECONDS);    // socket timeout
-
-        try {
-            okHttp.setSslSocketFactory(getSSLConfig(this.getMainActivity().getBaseContext()).getSocketFactory());
-            okHttp.networkInterceptors().add(new Interceptor() {
-                @Override
-                public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
-                    Request request = chain.request();
-                    Request newRequest;
-
-                    newRequest = request.newBuilder()
-                            .addHeader("Authorization", "Token 29e87bab51b9634504b9aee58c1360668e4afd0a")
-                            .build();
-
-                    return chain.proceed(newRequest);
-                }
-            });
-        } catch (CertificateException | NoSuchAlgorithmException | KeyManagementException | IOException | KeyStoreException e) {
-            e.printStackTrace();
-        }
-
-        Retrofit retrofit = builder.client(okHttp).build();
-        return retrofit.create(RestService.class);
-    }
-
-    private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException,
-            KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
-
-        String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw";
-        KeyStore keyStore   = KeyStore.getInstance("BKS");
-        keyStore.load(context.getResources().openRawResource(R.raw.keystore), password.toCharArray());
-
-        String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
-        TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
-        tmf.init(keyStore);
-
-        SSLContext sslContext = SSLContext.getInstance("TLS");
-        sslContext.init(null, tmf.getTrustManagers(), null);
-
-        return sslContext;
-    }
-
     public void init(MainActivity mainActivity) {
         this.mainActivity = mainActivity;
         this.sqLiteService = SQLiteService.getInstance();
         this.uiManager = UiManager.getInstance();
         this.dataManager = DataManager.getInstance();
         this.uiManager.initUi(this.mainActivity);
+        RestManager restManager = RestManager.getInstance();
+        restManager.initRestService();
 
-        this.restService = this.createRestService();
-        this.refreshData();
-    }
+        RefreshManager.getInstance().refreshData();
+        RefreshManager.getInstance().startRefreshTimer();
 
-    void refreshData() {
-        this.refreshData(false);
     }
 
-    private void refreshData(boolean disableDialog) {
-        if(this.ndRefreshError != null)
-            this.ndRefreshError.dismiss();
-            this.ndRefreshError = null;
-
-        if(!disableDialog)
-            this.pdRefresh = ProgressDialog.show(this.mainActivity, "Refreshing...", "Loading...");
-
-
-        this.restService.getAllUser().enqueue(new Callback<List<RestUser>>() {
-            @Override
-            public void onResponse(Response<List<RestUser>> response, Retrofit retrofit) {
-                List<User> userList = MainManager.getInstance().sqLiteService.refreshUserData(response.body());
-                if (userList != null) {
-                    MainManager.getInstance().uiManager.refreshUserData(userList);
-                }
-            }
-
-            @Override
-            public void onFailure(Throwable t) {
-                Log.d("REST", t.getMessage());
-                MainManager.getInstance().showRefreshError();
-            }
-        });
-
-        this.restService.getAllCategories().enqueue(new Callback<List<RestCategory>>() {
-            @Override
-            public void onResponse(Response<List<RestCategory>> response, Retrofit retrofit) {
-                List<Category> categoryList = MainManager.getInstance().sqLiteService.refreshCategoryData(response.body());
-                if (categoryList != null) {
-                    MainManager.getInstance().uiManager.showCategoryButtons();
-                }
-            }
-
-            @Override
-            public void onFailure(Throwable t) {
-                Log.d("REST", t.getMessage());
-                MainManager.getInstance().showRefreshError();
-            }
-        });
-
-        this.restService.getAllProducts().enqueue(new Callback<List<RestProduct>>() {
-            @Override
-            public void onResponse(Response<List<RestProduct>> response, Retrofit retrofit) {
-                List<ms.warpzone.warppay.data.models.local.Product> productList = MainManager.getInstance().sqLiteService.refreshProductData(response.body());
-                if (productList != null) {
-                    MainManager.getInstance().uiManager.refreshProductData(productList);
-                }
-                MainManager.this.pdRefresh.dismiss();
-                MainManager.this.startRefreshTimer();
-            }
-
-            @Override
-            public void onFailure(Throwable t) {
-                Log.d("REST", t.getMessage());
-                MainManager.getInstance().showRefreshError();
-            }
-        });
 
+    SQLiteService getSqLiteService() {
+        return sqLiteService;
     }
 
-    private void showRefreshError() {
-        if(ndRefreshError == null) {
-            this.stopRefreshTimer();
-            if(pdRefresh != null)
-                pdRefresh.dismiss();
-            ndRefreshError = new NotificationDialog(this.mainActivity,"WARNING","Refresh failed. Please retry!");
-            ndRefreshError.setWarning();
-            ndRefreshError.getBuilder().setNeutralButton("Refresh", new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(DialogInterface dialogInterface, int i) {
-                            MainManager.this.refreshData();
-
-                        }
-                    });
-            ndRefreshError.show();
-
-            final Handler handler = new Handler();
-            final Runnable runnable = new Runnable() {
-                @Override
-                public void run() {
-                    MainManager.this.refreshData();
-                }
-            };
-
-            ndRefreshError.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() {
-                @Override
-                public void onDismiss(DialogInterface dialog) {
-                    handler.removeCallbacks(runnable);
-                }
-            });
-
-            handler.postDelayed(runnable, 10000);
-        }
-
-    }
     void setCurrentUser(User user) {
         this.setCurrentUser(user,false);
     }
 
-    public void setCurrentUser(User user, boolean authorized) {
+    public void setCurrentUser(final User user, boolean authorized) {
         if (user != null) {
             if(!user.getPinCode().isEmpty() && !authorized) {
                 PinCodesDialog p = new PinCodesDialog(user);
@@ -249,91 +81,43 @@ public class MainManager {
                 p.show();
                 return;
             }
-            this.dataManager.setCurrentUser(user);
-            this.uiManager.setCurrentUser(user);
-            this.startTimer();
-            this.stopRefreshTimer();
-        }
-    }
-
-    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() {
+            if (user.getUserid() != "Guest") {
+                final ProgressDialog pd = ProgressDialog.show(MainManager.getInstance().getMainActivity(), "Processing...", "Loading...");
+                RestManager.getInstance().getRestService().getSingleUser(user.getUserid()).enqueue(new Callback<RestUser>() {
                     @Override
-                    public void run() {
-                        MainManager.getInstance().clearCurrentUser();
+                    public void onResponse(Response<RestUser> response, Retrofit retrofit) {
+                        if (response.code() == 200) {
+                            user.setCredit(response.body().getCredit());
+                            user.save();
+                            DataManager.getInstance().setCurrentUser(user);
+                            UiManager.getInstance().setCurrentUser(user);
+                            pd.dismiss();
+
+                        } else {
+                            pd.dismiss();
+                            Log.d("REST_3", String.valueOf(response.code()));
+                            UiManager.getInstance().showWarning("Transaction Error. Please try again", 4000);
+                        }
                     }
-                };
-                mainHandler.post(myRunnable);
-            }
-        };
 
-        this.timer.schedule(t, 60000);
-    }
-
-    private void startRefreshTimer() {
-        this.tmrRefresh = 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() {
-                        if(MainManager.getInstance().getCurrentUser() == null)
-                            MainManager.getInstance().refreshData(true);
-                    }
-                };
-                mainHandler.post(myRunnable);
-            }
-        };
+                    public void onFailure(Throwable t) {
+                        Log.d("REST_4", String.valueOf(t.getMessage()));
+                        UiManager.getInstance().showWarning("Transaction Error. Please try again", 4000);
 
-        this.tmrRefresh.schedule(t, 60000,60000);
-    }
-    private void stopRefreshTimer() {
-        if (this.tmrRefresh != null) {
-            this.tmrRefresh.cancel();
-            this.tmrRefresh.purge();
-        }
-    }
-    public void resetScreenSaverTimer() {
-        this.stopScreenSaverTimer();
-        this.screenSaverTimer = 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() {
-                        new NyanCatDialog().show();
                     }
-                };
-                mainHandler.post(myRunnable);
+                });
+            } else {
+                DataManager.getInstance().setCurrentUser(user);
+                UiManager.getInstance().setCurrentUser(user);
             }
-        };
-        this.screenSaverTimer.schedule(t, 4000);
-    }
 
-    private void stopScreenSaverTimer() {
-        if (this.screenSaverTimer != null) {
-            this.screenSaverTimer.cancel();
-            this.screenSaverTimer.purge();
+            RefreshManager.getInstance().startTimer();
+            RefreshManager.getInstance().stopRefreshTimer();
         }
     }
+
+
     public User getCurrentUser() {
         return this.dataManager.getCurrentUser();
     }
@@ -342,9 +126,6 @@ public class MainManager {
         DataManager.getInstance().setLastCardId("");
         this.dataManager.clearCurrentUser();
         this.uiManager.clearCurrentUser();
-        this.stopTimer();
-        MainManager.getInstance().refreshData();
-        this.startRefreshTimer();
     }
 
     public void addOrder(Order order) {
@@ -358,23 +139,21 @@ public class MainManager {
         this.uiManager.refreshTotalTextView(DataManager.getInstance().getTotalAmount());
 
     }
-    public void chargeAmount(double amount) {
 
+
+    public void chargeAmount(BigDecimal amount) {
         User currentUser = this.dataManager.getCurrentUser();
-        if(amount < 0) {
-            NotificationDialog ndTransfer = new NotificationDialog(MainManager.getInstance().getMainActivity());
-            ndTransfer.setWarning();
-            ndTransfer.setMessage("Error Charging your account");
-            ndTransfer.show(4000);
+
+        if(amount.compareTo(new BigDecimal(0)) < 0 || amount.precision() > 2) {
+            UiManager.getInstance().showWarning("Fehlerhafter Betrag angegeben.",4000);
             return;
         }
-        if(currentUser.getCredit()+amount > 50) {
-            NotificationDialog ndTransfer = new NotificationDialog(MainManager.getInstance().getMainActivity());
-            ndTransfer.setWarning();
-            ndTransfer.setMessage("Maximal 50 Euro Guthaben erlaubt!");
-            ndTransfer.show(5000);
+
+        if(currentUser.getCredit().add(amount).compareTo(new BigDecimal(50.0)) > 0) {
+            UiManager.getInstance().showWarning("Maximal 50 Euro Guthaben erlaubt!",4000);
             return;
         }
+
         RestTransaction t = new RestTransaction();
         t.setAmount(amount);
         t.setTrans_type(1);
@@ -382,56 +161,31 @@ public class MainManager {
         ArrayList<RestTransaction> transactions = new ArrayList<>();
         transactions.add(t);
 
-        MainManager.getInstance().getRestService().saveTransaction(currentUser.getUserid(), transactions).enqueue(new Callback<Void>() {
-            @Override
-            public void onResponse(Response<Void> response, Retrofit retrofit) {
-            }
+        TransactionManager.getInstance().perform_transactions(transactions,true,false);
+    }
 
-            @Override
-            public void onFailure(Throwable t) {
-                NotificationDialog ndTransfer = new NotificationDialog(MainManager.getInstance().getMainActivity());
-                ndTransfer.setWarning();
-                ndTransfer.setMessage("Error Charging your account");
-                ndTransfer.show(4000);
-                Log.d("REST", t.getMessage());
-            }
-        });
-        MainManager.getInstance().getRestService().getSingleUser(currentUser.getUserid()).enqueue(new Callback<RestUser>() {
-            @Override
-            public void onResponse(Response<RestUser> response, Retrofit retrofit) {
-                DataManager.getInstance().getCurrentUser().setCredit(response.body().getCredit());
-                MainManager.getInstance().uiManager.refreshCreditTextView(DataManager.getInstance().getCurrentUser().getCredit());
-                DataManager.getInstance().getCurrentUser().save();
-            }
+    public void performPayment(Boolean cash) {
+        User currentUser = DataManager.getInstance().getCurrentUser();
+        BigDecimal totalAmount = DataManager.getInstance().getTotalAmount();
 
-            @Override
-            public void onFailure(Throwable t) {
-                Log.d("REST", t.getMessage());
-            }
-        });
+        if (totalAmount.compareTo(new BigDecimal(0.0)) > 0 && currentUser != null){
+            if (currentUser.getCredit().compareTo(totalAmount) >= 0 || cash){
 
+                ArrayList<RestTransaction> transactions = new ArrayList<>();
 
-    }
-    public void performPayment(Boolean cash) {
-        User user = DataManager.getInstance().getCurrentUser();
-        double totalAmount = DataManager.getInstance().getTotalAmount();
-
-        if (totalAmount > 0.0 && user != null){
-            if (DataManager.getInstance().getCurrentUser().getCredit()>=totalAmount || cash){
-                DataManager.getInstance().performPayment(cash);
-                if(!cash) {
-                    NotificationDialog n = new NotificationDialog(this.mainActivity);
-                    n.setMessage("Neues Guthaben: " + this.getCurrentUser().getCredit() + " Euro");
-                    n.show(2500);
+                for (Order order:DataManager.getInstance().getOrderList()) {
+                    RestTransaction transaction = new RestTransaction();
+                    transaction.setProduct(RestProduct.fromLocalProduct(order.getProduct()));
+                    transaction.setTrans_type(2);
+                    if (DataManager.getInstance().getIs_guest() || cash)
+                        transaction.setCash_paid(true);
+                    transactions.add(transaction);
                 }
-                MainManager.getInstance().clearCurrentUser();
 
+                TransactionManager.getInstance().perform_transactions(transactions, !cash, true);
 
             } else {
-                NotificationDialog ndPlsCharge = new NotificationDialog(MainManager.getInstance().getMainActivity());
-                ndPlsCharge.setWarning();
-                ndPlsCharge.setMessage(mainActivity.getResources().getString(R.string.please_charge));
-                ndPlsCharge.show(2000);
+                UiManager.getInstance().showWarning(mainActivity.getResources().getString(R.string.please_charge), 2500);
             }
         }
     }
@@ -441,15 +195,13 @@ public class MainManager {
         return mainActivity;
     }
 
-    public RestService getRestService() { return restService; }
-
     public void saveCardId() {
         final String card_id = this.dataManager.getLastCardId();
 
         if (card_id != null) {
             new AlertDialog.Builder(this.mainActivity)
                 .setTitle(this.mainActivity.getResources().getString(R.string.confirm_learn_card))
-                .setMessage("Die karten id "+card_id+" wird dem Nutzer "+this.getCurrentUser()+" hinzugefügt")
+                .setMessage("Die Karten-ID "+card_id+" wird dem Nutzer "+this.getCurrentUser()+" hinzugefügt")
                 .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int which) {
                         MainManager.getInstance().getCurrentUser().setCardId(card_id);
@@ -466,10 +218,6 @@ public class MainManager {
         }
     }
 
-    public boolean isBarcodeLearning() {
-        return barcodeLearning;
-    }
-
     public void setBarcodeLearning(boolean barcodeLearning) {
         this.barcodeLearning = barcodeLearning;
     }
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/RefreshManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/RefreshManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..ec55fdb49edce1a84b6d55788fe79446ed26277b
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/RefreshManager.java
@@ -0,0 +1,233 @@
+package ms.warpzone.warppay.manager;
+
+import android.app.ProgressDialog;
+import android.content.DialogInterface;
+import android.os.Handler;
+import android.util.Log;
+
+import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import ms.warpzone.warppay.data.models.local.Category;
+import ms.warpzone.warppay.data.models.local.User;
+import ms.warpzone.warppay.data.models.rest.RestCategory;
+import ms.warpzone.warppay.data.models.rest.RestProduct;
+import ms.warpzone.warppay.data.models.rest.RestUser;
+import ms.warpzone.warppay.dialogs.NotificationDialog;
+import ms.warpzone.warppay.dialogs.NyanCatDialog;
+import retrofit.Callback;
+import retrofit.Response;
+import retrofit.Retrofit;
+
+public class RefreshManager {
+    private static RefreshManager ourInstance = new RefreshManager();
+    private Timer timer;
+    private Timer screenSaverTimer;
+    private Timer tmrRefresh;
+    public ProgressDialog pdProcess;
+    private NotificationDialog ndRefreshError = null;
+
+    private RefreshManager() {}
+    public static RefreshManager getInstance() {
+        return ourInstance;
+    }
+
+    void refreshData() {
+        this.refreshData(false);
+    }
+
+    public void refreshData(boolean disableDialog) {
+        if(this.ndRefreshError != null)
+            this.ndRefreshError.dismiss();
+        this.ndRefreshError = null;
+
+        if(!disableDialog)
+            pdProcess = ProgressDialog.show(MainManager.getInstance().getMainActivity(), "Processing...", "Loading...");
+
+
+
+        RestManager.getInstance().getRestService().getAllUser().enqueue(new Callback<List<RestUser>>() {
+            @Override
+            public void onResponse(Response<List<RestUser>> response, Retrofit retrofit) {
+                if(response.code() == 200 ) {
+                    List<User> userList = MainManager.getInstance().getSqLiteService().refreshUserData(response.body());
+                    if (userList != null) {
+                        UiManager.getInstance().refreshUserData(userList);
+                    }
+                } else {
+                    RefreshManager.getInstance().showRefreshError();
+                }
+            }
+
+            @Override
+            public void onFailure(Throwable t) {
+                Log.d("REST", t.getMessage());
+                RefreshManager.getInstance().showRefreshError();
+            }
+        });
+
+        RestManager.getInstance().getRestService().getAllCategories().enqueue(new Callback<List<RestCategory>>() {
+            @Override
+            public void onResponse(Response<List<RestCategory>> response, Retrofit retrofit) {
+                if(response.code() == 200 ) {
+                    List<Category> categoryList = MainManager.getInstance().getSqLiteService().refreshCategoryData(response.body());
+                    if (categoryList != null) {
+                        UiManager.getInstance().showCategoryButtons();
+                    }
+                } else {
+                    RefreshManager.getInstance().showRefreshError();
+                }
+            }
+
+            @Override
+            public void onFailure(Throwable t) {
+                Log.d("REST", t.getMessage());
+                RefreshManager.getInstance().showRefreshError();
+            }
+        });
+
+        RestManager.getInstance().getRestService().getAllProducts().enqueue(new Callback<List<RestProduct>>() {
+            @Override
+            public void onResponse(Response<List<RestProduct>> response, Retrofit retrofit) {
+                if(response.code() == 200 ) {
+                    List<ms.warpzone.warppay.data.models.local.Product> productList = MainManager.getInstance().getSqLiteService().refreshProductData(response.body());
+                    if (productList != null) {
+                        UiManager.getInstance().refreshProductData(productList);
+                    }
+                    if(RefreshManager.getInstance().pdProcess != null ) {
+                        RefreshManager.getInstance().pdProcess.dismiss();
+                        RefreshManager.getInstance().pdProcess = null;
+                    }
+                } else {
+                    RefreshManager.getInstance().showRefreshError();
+                }
+            }
+
+            @Override
+            public void onFailure(Throwable t) {
+                Log.d("REST", t.getMessage());
+                RefreshManager.getInstance().showRefreshError();
+            }
+        });
+    }
+
+    public void showRefreshError() {
+        if(ndRefreshError == null) {
+            RefreshManager.getInstance().stopRefreshTimer();
+            if (RefreshManager.getInstance().pdProcess != null) {
+                RefreshManager.getInstance().pdProcess.dismiss();
+                RefreshManager.getInstance().pdProcess = null;
+            }
+            ndRefreshError = new NotificationDialog(MainManager.getInstance().getMainActivity(),"WARNING","Refresh failed. Please retry!");
+            ndRefreshError.setWarning();
+            ndRefreshError.getBuilder().setNeutralButton("Refresh", new DialogInterface.OnClickListener() {
+                @Override
+                public void onClick(DialogInterface dialogInterface, int i) {
+                    RefreshManager.getInstance().refreshData();
+
+                }
+            });
+            ndRefreshError.show();
+
+            final Handler handler = new Handler();
+            final Runnable runnable = new Runnable() {
+                @Override
+                public void run() {
+                    RefreshManager.getInstance().refreshData();
+                }
+            };
+
+            ndRefreshError.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() {
+                @Override
+                public void onDismiss(DialogInterface dialog) {
+                    handler.removeCallbacks(runnable);
+                }
+            });
+
+            handler.postDelayed(runnable, 10000);
+        }
+
+    }
+    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, 60000);
+    }
+
+    public void startRefreshTimer() {
+        this.tmrRefresh = 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() {
+
+                        Log.d("REST","REFRESH TIMER RUNNING");
+                        if(MainManager.getInstance().getCurrentUser() == null)
+                            RefreshManager.getInstance().refreshData(true);
+                    }
+                };
+                mainHandler.post(myRunnable);
+            }
+        };
+        Log.d("REST","STARTING REFRESH TIMER");
+        this.tmrRefresh.schedule(t, 60000,60000);
+    }
+    public void stopRefreshTimer() {
+        if (this.tmrRefresh != null) {
+            this.tmrRefresh.cancel();
+            this.tmrRefresh.purge();
+        }
+    }
+    public void resetScreenSaverTimer() {
+        this.stopScreenSaverTimer();
+        this.screenSaverTimer = 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() {
+                        new NyanCatDialog().show();
+                    }
+                };
+                mainHandler.post(myRunnable);
+            }
+        };
+        this.screenSaverTimer.schedule(t, 4000);
+    }
+
+    public void stopScreenSaverTimer() {
+        if (this.screenSaverTimer != null) {
+            this.screenSaverTimer.cancel();
+            this.screenSaverTimer.purge();
+        }
+    }
+
+}
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/RestManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/RestManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..a12a0665c21ec65003c209371bb872e6b3341f58
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/RestManager.java
@@ -0,0 +1,88 @@
+package ms.warpzone.warppay.manager;
+
+import android.content.Context;
+
+import com.squareup.okhttp.Interceptor;
+import com.squareup.okhttp.OkHttpClient;
+import com.squareup.okhttp.Request;
+
+import java.io.IOException;
+import java.security.KeyManagementException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManagerFactory;
+
+import ms.warpzone.warppay.R;
+import ms.warpzone.warppay.data.RestService;
+import retrofit.GsonConverterFactory;
+import retrofit.Retrofit;
+
+public class RestManager {
+    private static RestManager ourInstance = new RestManager();
+    RestService restService;
+
+    private RestManager() {}
+    public static RestManager getInstance() {
+        return ourInstance;
+    }
+
+    public void initRestService() {
+        this.restService = this.createRestService();
+    }
+
+    public RestService getRestService() {
+        return restService;
+    }
+
+    private RestService createRestService() {
+        Retrofit.Builder builder = new Retrofit.Builder()
+                .baseUrl("http://infra-test.warpzone/api/")
+                .addConverterFactory(GsonConverterFactory.create());
+
+        OkHttpClient okHttp = new OkHttpClient();
+        try {
+            okHttp.setSslSocketFactory(getSSLConfig(MainManager.getInstance().getMainActivity().getBaseContext()).getSocketFactory());
+            okHttp.networkInterceptors().add(new Interceptor() {
+                @Override
+                public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
+                    Request request = chain.request();
+                    Request newRequest;
+
+                    newRequest = request.newBuilder()
+                            .addHeader("Authorization", "Token cdcca01b29316e993477b32f1a86274804318fa0")
+                            .build();
+
+                    return chain.proceed(newRequest);
+                }
+            });
+        } catch (CertificateException | NoSuchAlgorithmException | KeyManagementException | IOException | KeyStoreException e) {
+            e.printStackTrace();
+        }
+
+        Retrofit retrofit = builder.client(okHttp).build();
+        return retrofit.create(RestService.class);
+    }
+
+
+
+    private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException,
+            KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
+
+        String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw";
+        KeyStore keyStore   = KeyStore.getInstance("BKS");
+        keyStore.load(context.getResources().openRawResource(R.raw.keystore_old), password.toCharArray());
+
+        String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
+        tmf.init(keyStore);
+
+        SSLContext sslContext = SSLContext.getInstance("TLS");
+        sslContext.init(null, tmf.getTrustManagers(), null);
+
+        return sslContext;
+    }
+}
diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/TransactionManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/TransactionManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..21628107c1c39514dc0c0743571d03c9d38c56ef
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/TransactionManager.java
@@ -0,0 +1,80 @@
+package ms.warpzone.warppay.manager;
+
+
+import android.util.Log;
+
+import java.util.ArrayList;
+
+import ms.warpzone.warppay.data.models.local.User;
+import ms.warpzone.warppay.data.models.rest.RestTransaction;
+import ms.warpzone.warppay.data.models.rest.RestUser;
+import retrofit.Callback;
+import retrofit.Response;
+import retrofit.Retrofit;
+
+public class TransactionManager {
+    private static TransactionManager ourInstance = new TransactionManager();
+
+
+    private TransactionManager() {}
+    public static TransactionManager getInstance() {
+        return ourInstance;
+    }
+
+    /***
+     * Perform a Transaction and update the User.
+     * @param transactions
+     * @return
+     */
+    public void perform_transactions(ArrayList<RestTransaction> transactions, final boolean show_credit_dialog, final boolean logout) {
+        User currentUser = DataManager.getInstance().getCurrentUser();
+
+        RestManager.getInstance().getRestService().saveTransaction(currentUser.getUserid(), transactions).enqueue(new Callback<Void>() {
+            @Override
+            public void onResponse(Response<Void> response, Retrofit retrofit) {
+                if(response.code() != 200)  {
+                    Log.d("REST_1", String.valueOf(response.code()));
+                    UiManager.getInstance().showWarning("Transaction Error. Please try Again", 4000);
+                }
+
+            }
+
+            @Override
+            public void onFailure(Throwable t) {
+                Log.d("REST", t.getMessage());
+                UiManager.getInstance().showWarning("Transaction Error. Please try Again", 4000);
+            }
+        });
+        if(currentUser.getUserid() == "Guest") {
+            if (logout)
+                MainManager.getInstance().clearCurrentUser();
+            return;
+        }
+        RestManager.getInstance().getRestService().getSingleUser(currentUser.getUserid()).enqueue(new Callback<RestUser>() {
+            @Override
+            public void onResponse(Response<RestUser> response, Retrofit retrofit) {
+                if(response.code() == 200) {
+                    DataManager.getInstance().getCurrentUser().setCredit(response.body().getCredit());
+                    UiManager.getInstance().refreshCreditTextView(DataManager.getInstance().getCurrentUser().getCredit());
+                    DataManager.getInstance().getCurrentUser().save();
+                    if (show_credit_dialog) {
+                        UiManager.getInstance().showMessage("Neues Guthaben: " + DataManager.getInstance().getCurrentUser().getCredit() + " Euro", 2500);
+                    }
+                    if (logout)
+                        MainManager.getInstance().clearCurrentUser();
+                } else {
+                    Log.d("REST_2", String.valueOf(response.code()));
+                    UiManager.getInstance().showWarning("Transaction Error. Please try again", 4000);
+                }
+            }
+
+            @Override
+            public void onFailure(Throwable t) {
+                UiManager.getInstance().showWarning("Transaction Error. Please try again", 4000);
+                Log.d("REST", t.getMessage());
+
+            }
+        });
+    }
+
+}
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 18ca8fda049d2d6277686d4c30894eedb5db7536..735542ed5ee4645e395b9e9a59466b378583a443 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,10 +1,11 @@
 package ms.warpzone.warppay.manager;
 
 import android.annotation.TargetApi;
+import android.app.ProgressDialog;
 import android.content.DialogInterface;
 import android.os.Build;
+import android.util.Log;
 import android.view.KeyEvent;
-import android.view.MenuItem;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.AdapterView;
@@ -17,6 +18,7 @@ import android.widget.ListView;
 import android.widget.PopupMenu;
 import android.widget.TextView;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -51,7 +53,7 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
     private ArrayAdapter atxvAdapter;
     private ArrayList<Double> order;
     private List<User> users;
-
+    private ProgressDialog processDialog = null;
 
     private PayChoiceDialog payChoiceDialog;
     private ProductDialog productDialog;
@@ -71,8 +73,8 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
     protected void initUi(MainActivity mainActivity) {
         this.txtSum = (TextView) mainActivity.findViewById(R.id.txtSum);
         this.txtCredit = (TextView)mainActivity.findViewById(R.id.txtCredit);
-        this.txtCredit.setText(mainActivity.getResources().getString(R.string.credit,0.0));
-        this.txtSum.setText(mainActivity.getResources().getString(R.string.total,0.0));
+        this.txtCredit.setText(mainActivity.getResources().getString(R.string.credit,"0.0"));
+        this.txtSum.setText(mainActivity.getResources().getString(R.string.total,"0.0"));
 
         this.btnLogout = (Button) mainActivity.findViewById(R.id.btnLogout);
         this.btnRefresh = (ImageButton) mainActivity.findViewById(R.id.btnRefresh);
@@ -81,10 +83,6 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
         this.btnGuest = (Button) mainActivity.findViewById(R.id.btnGuest);
         this.btnSettings = (Button) mainActivity.findViewById(R.id.btnSettings);
 
-      /*  this.txtBarcode = (EditText) mainActivity.findViewById(R.id.txtBarcode);
-        this.txtBarcode.setShowSoftInputOnFocus(false);
-        this.txtBarcode.setOnKeyListener(this);
-*/
         this.lstOrderedAdapter = new ListViewAdapter(mainActivity, R.layout.order_list_item, new ArrayList<Order>());
         this.lstProductAdapter = new ListViewAdapterProducts(mainActivity, R.layout.product_list_item, Product.getAll());
 
@@ -116,11 +114,11 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
             imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);
         }
     }
-    protected void refreshTotalTextView(double totalAmount) {
-        this.txtSum.setText(this.mainActivity.getResources().getString(R.string.total,totalAmount));
+    protected void refreshTotalTextView(BigDecimal totalAmount) {
+        this.txtSum.setText(this.mainActivity.getResources().getString(R.string.total,totalAmount.toString()));
     }
-    protected void refreshCreditTextView(double credit) {
-        this.txtCredit.setText(this.mainActivity.getResources().getString(R.string.credit, credit));
+    protected void refreshCreditTextView(BigDecimal credit) {
+        this.txtCredit.setText(this.mainActivity.getResources().getString(R.string.credit, credit.toString()));
     }
 
     protected void setCurrentUser(User user) {
@@ -137,8 +135,8 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
         this.lstOrderedAdapter.clear();
         this.enableControls(false);
         this.btnLogout.setVisibility(View.INVISIBLE);
-        this.refreshCreditTextView(0.0);
-        this.refreshTotalTextView(0.0);
+        this.refreshCreditTextView(new BigDecimal(0.0));
+        this.refreshTotalTextView(new BigDecimal(0.0));
         if(this.atxvName.requestFocus()) {
             this.showSoftKeyboard(this.mainActivity.getCurrentFocus());
         }
@@ -227,12 +225,12 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
 
                 break;
             case R.id.btnRefresh:
-                MainManager.getInstance().refreshData();
+                RefreshManager.getInstance().refreshData();
                 break;
             case R.id.btnGuest:
                 if(MainManager.getInstance().getCurrentUser() == null) {
                     DataManager.getInstance().setIs_guest(true);
-                    MainManager.getInstance().setCurrentUser(new User("Guest", "", 0, ""));
+                    MainManager.getInstance().setCurrentUser(new User("Guest", "", new BigDecimal(0), ""));
                     this.atxvName.setText("Gast");
                     this.atxvName.dismissDropDown();
                 }
@@ -303,5 +301,20 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
         this.chargeCustomDialog = chargeCustomDialog;
     }
 
+    public void showWarning(String message, int time) {
+        this.showMessageBox(message, true, time);
+    }
+
+    public void showMessage(String message, int time) {
+        this.showMessageBox(message, false, time);
+    }
+
+    private void showMessageBox(String message, boolean warning, int time) {
+        NotificationDialog ndTransfer = new NotificationDialog(MainManager.getInstance().getMainActivity());
+        if(warning)
+            ndTransfer.setWarning();
+        ndTransfer.setMessage(message);
+        ndTransfer.show(time);
+    }
 
 }
diff --git a/WarpDrinkApp/app/src/main/res/layout/order_list_item.xml b/WarpDrinkApp/app/src/main/res/layout/order_list_item.xml
index 1ccc9e0a1fc1876fe471b085b6be4db0844eb12c..717fdf88a9eca215edd6a18993568d85bc2a8e24 100644
--- a/WarpDrinkApp/app/src/main/res/layout/order_list_item.xml
+++ b/WarpDrinkApp/app/src/main/res/layout/order_list_item.xml
@@ -5,24 +5,30 @@
     android:orientation="horizontal">
 
     <LinearLayout
-        android:orientation="vertical"
-        android:layout_width="384dp"
+        android:layout_width="wrap_content"
         android:layout_height="match_parent"
-        android:layout_weight="0.25">
+        android:orientation="horizontal">
 
         <TextView
-            android:layout_width="wrap_content"
+            android:id="@+id/txtOrderName"
+            android:layout_width="213dp"
             android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:layout_gravity="center_horizontal"
             android:text="Large Text"
-            android:id="@+id/txtOrderName" />
+            android:maxLines="1"
+            android:textSize="22sp" />
+
+        <Space
+            android:layout_width="15dp"
+            android:layout_height="wrap_content" />
 
         <TextView
+            android:id="@+id/txtOrderValue"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:text="Medium Text"
-            android:id="@+id/txtOrderValue" />
+            android:text="1.00 Euro"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textSize="22sp" />
 
     </LinearLayout>
 
diff --git a/WarpDrinkApp/app/src/main/res/layout/product_list_item.xml b/WarpDrinkApp/app/src/main/res/layout/product_list_item.xml
index 0095561f02d0b62dd1adc9936d6537c307497b07..342aa4c6c6c5083c666dbba00ecd173f2d546aa7 100644
--- a/WarpDrinkApp/app/src/main/res/layout/product_list_item.xml
+++ b/WarpDrinkApp/app/src/main/res/layout/product_list_item.xml
@@ -1,35 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="horizontal" >
 
     <LinearLayout
-        android:orientation="vertical"
         android:layout_width="wrap_content"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:orientation="horizontal">
 
         <TextView
-            android:layout_width="386dp"
+            android:id="@+id/txtProductName"
+            android:layout_width="247dp"
             android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:layout_gravity="center_horizontal"
             android:text="Large Text"
-            android:id="@+id/txtProductName"
-            android:layout_gravity="center_horizontal" />
+            android:textAppearance="@android:style/TextAppearance.Material.Large"
+            android:textSize="30sp" />
 
         <TextView
-            android:layout_width="229dp"
+            android:id="@+id/txtProductPrice"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:text="1.0"
-            android:id="@+id/txtProductPrice" />
+            android:text="1.00 Euro"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:textSize="30sp" />
 
     </LinearLayout>
 
     <ImageButton
         android:id="@+id/imageButton"
-        android:layout_width="match_parent"
+        android:layout_width="234dp"
         android:layout_height="63dp"
         android:onClick="removeOrderOnClickHandler"
         />
diff --git a/WarpDrinkApp/app/src/main/res/raw/keystore_old.bks b/WarpDrinkApp/app/src/main/res/raw/keystore_old.bks
new file mode 100644
index 0000000000000000000000000000000000000000..286cca322ee508a348f62d27ce1f0110438fd7d9
Binary files /dev/null and b/WarpDrinkApp/app/src/main/res/raw/keystore_old.bks differ
diff --git a/WarpDrinkApp/app/src/main/res/raw/nyancat.mp4 b/WarpDrinkApp/app/src/main/res/raw/nyancat.mp4
deleted file mode 100644
index c629a592db48e2ea5e60fba439a8ad755bef7c19..0000000000000000000000000000000000000000
Binary files a/WarpDrinkApp/app/src/main/res/raw/nyancat.mp4 and /dev/null differ
diff --git a/WarpDrinkApp/app/src/main/res/values/strings.xml b/WarpDrinkApp/app/src/main/res/values/strings.xml
index 341a545ea2de93263e54029a2cdb1836ff12ef40..84bd899237973c5bf185889fca9f8867e82e0acb 100644
--- a/WarpDrinkApp/app/src/main/res/values/strings.xml
+++ b/WarpDrinkApp/app/src/main/res/values/strings.xml
@@ -23,8 +23,8 @@
     <string name="confirm_payment_title">Bezahlung bestaetigen</string>
     <string name="confirm_learn_card">Karte anlernen</string>
     <string name="confirm_payment">Willst du wirklich %1$,.2f Euro bezahlen?</string>
-    <string name="credit">Guthaben: %1$,.2f Euro</string>
-    <string name="total">Gesamt: %1$,.2f Euro</string>
+    <string name="credit">Guthaben: %1s Euro</string>
+    <string name="total">Gesamt: %1s Euro</string>
     <string name="addNewUser">Benutzer hinzufügen</string>
     <string name="rest_service">RESTAPI-URL</string>
     <string name="rest_config_header">REST-API Konfiguration</string>
diff --git a/WarpDrinkApp/build.gradle b/WarpDrinkApp/build.gradle
index b3512bc2105688f997311f63a1100285ee45c42b..8dff8931f0724b82ce6a3c92dcff9688b0a0b0dd 100644
--- a/WarpDrinkApp/build.gradle
+++ b/WarpDrinkApp/build.gradle
@@ -4,7 +4,7 @@ buildscript {
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.0'
+        classpath 'com.android.tools.build:gradle:2.3.3'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files