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 83b45a8e73b35df07245c27361ccced5ce7a1d57..9450d8ea3af4a8cd8531e2be6a6e79822e698b5a 100644
--- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java
@@ -93,6 +93,17 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                 MainManager.getInstance().setCurrentUser(u);
         }
     }
+    @Override
+    public void onUserInteraction(){
+        if(MainManager.getInstance().getCurrentUser() != null) {
+            MainManager.getInstance().startTimer();
+            //MainManager.getInstance().stopScreenSaverTimer();
+        } else {
+            MainManager.getInstance().stopTimer();
+            //MainManager.getInstance().resetScreenSaverTimer();
+        }
+
+    }
 
     public static String byteArrayToHex(byte[] a) {
         StringBuilder sb = new StringBuilder(a.length * 2);
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
new file mode 100644
index 0000000000000000000000000000000000000000..7ee563c991a46c187fc8f018f8e98c78f3dac956
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NyanCatDialog.java
@@ -0,0 +1,64 @@
+package ms.warpzone.warppay.dialogs;
+
+import android.app.Dialog;
+import android.media.MediaPlayer;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.Window;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ListView;
+import android.widget.TextView;
+import android.widget.VideoView;
+
+import java.util.ArrayList;
+
+import ms.warpzone.warppay.MainActivity;
+import ms.warpzone.warppay.R;
+import ms.warpzone.warppay.data.models.local.Product;
+import ms.warpzone.warppay.data.models.rest.RestProduct;
+import ms.warpzone.warppay.manager.MainManager;
+import retrofit.Callback;
+import retrofit.Response;
+import retrofit.Retrofit;
+
+public class NyanCatDialog extends Dialog implements View.OnClickListener{
+
+    public Dialog d;
+
+    private VideoView vvNyanCat;
+
+    public NyanCatDialog() {
+        super(MainManager.getInstance().getMainActivity());
+
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
+        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));
+        this.vvNyanCat.setOnClickListener(this);
+        this.vvNyanCat.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
+            public void onCompletion(MediaPlayer mp) {
+                vvNyanCat.start();
+            }
+        });
+        this.vvNyanCat.start();
+    }
+
+    @Override
+    public void onClick(View v) {
+        this.vvNyanCat.stopPlayback();
+        dismiss();
+    }
+
+}
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 a9cf0e9569d06127b70c87b9a3fa96c695456b7d..a989cbaf8901f97519e53203431818d8c72b313f 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,7 +44,7 @@ public class PayChoiceDialog extends Dialog implements View.OnClickListener {
 
     @Override
     public void onClick(View v) {
-        MainManager.getInstance().startTimer();
+       // 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/listener/CategoryOnClickListener.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/listener/CategoryOnClickListener.java
index aaff1babaa4d29b52eecdbda17a468cff11ce122..14701bb2b0497b6835c7effc6e54853945d8139a 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
@@ -11,7 +11,7 @@ public class CategoryOnClickListener implements View.OnClickListener {
 
     @Override
     public void onClick(View view) {
-        MainManager.getInstance().startTimer();
+        //MainManager.getInstance().startTimer();
         Button clicked = (Button) view;
         String category = (String) clicked.getText();
         ProductDialog p = new ProductDialog(category);
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 46476baaf322a7dfcc808ab36d4ec696baac2bc8..1da43024e659e9e07cf68f73109ca158229681eb 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
@@ -40,6 +40,7 @@ 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.NyanCatDialog;
 import ms.warpzone.warppay.dialogs.PinCodesDialog;
 import ms.warpzone.warppay.orderList.Order;
 import retrofit.Callback;
@@ -57,6 +58,7 @@ public class MainManager {
     private boolean barcodeLearning=false;
     private Timer timer;
     private static MainManager instance = new MainManager();
+    private Timer screenSaverTimer;
 
     public static MainManager getInstance() {
         return instance;
@@ -205,11 +207,10 @@ public class MainManager {
             this.timer.purge();
         }
     }
+
     public void startTimer() {
         this.stopTimer();
-
         this.timer = new Timer();
-
         TimerTask t = new TimerTask() {
             @Override
             public void run() {
@@ -226,6 +227,33 @@ public class MainManager {
 
         this.timer.schedule(t, 30000);
     }
+
+    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();
+        }
+    }
     public User getCurrentUser() {
         return this.dataManager.getCurrentUser();
     }
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 821f39032e5f65548490fb25d8d129a8a10ddd15..0b16f0321bb965d530901a861d11cf41431470d2 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
@@ -187,7 +187,6 @@ 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:
                 this.chargeDialog = new ChargeDialog();
diff --git a/WarpDrinkApp/app/src/main/res/layout/nyan_cat_dialog.xml b/WarpDrinkApp/app/src/main/res/layout/nyan_cat_dialog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0ae6d1276157d65fe0a83efcfc51eb31b135ae3a
--- /dev/null
+++ b/WarpDrinkApp/app/src/main/res/layout/nyan_cat_dialog.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:background="@android:color/black"
+    android:orientation="vertical">
+
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <VideoView
+            android:id="@+id/vvNyanCat"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+
+            android:layout_alignParentLeft="true"
+            android:layout_alignParentRight="true"
+             />
+    </RelativeLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/WarpDrinkApp/app/src/main/res/raw/nyancat.mp4 b/WarpDrinkApp/app/src/main/res/raw/nyancat.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..c629a592db48e2ea5e60fba439a8ad755bef7c19
Binary files /dev/null and b/WarpDrinkApp/app/src/main/res/raw/nyancat.mp4 differ