diff --git a/app/src/main/java/com/yearthreeproject/xbframework/BoxesActivity.java b/app/src/main/java/com/yearthreeproject/xbframework/BoxesActivity.java
index 793f163276ab92eba07dff59bd391be3cb52ccb0..06cd583ff012c687336408cbef598c4c188d5896 100644
--- a/app/src/main/java/com/yearthreeproject/xbframework/BoxesActivity.java
+++ b/app/src/main/java/com/yearthreeproject/xbframework/BoxesActivity.java
@@ -2,6 +2,8 @@ package com.yearthreeproject.xbframework;
 
 import android.content.Intent;
 import android.graphics.Color;
+import android.icu.text.SimpleDateFormat;
+import android.os.Build;
 import android.os.Bundle;
 import android.util.TypedValue;
 import android.view.Menu;
@@ -14,6 +16,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.appcompat.widget.Toolbar;
 
@@ -21,6 +24,8 @@ import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.Calendar;
+
 import static android.util.Log.d;
 
 public class BoxesActivity extends AppCompatActivity {
@@ -132,11 +137,15 @@ public class BoxesActivity extends AppCompatActivity {
 
                         inFiveAvailableBoxes[j].setId(j);
                         inFiveAvailableBoxes[j].setOnClickListener(new View.OnClickListener() {
+                            @RequiresApi(api = Build.VERSION_CODES.N)
                             @Override
                             public void onClick(View v) {
                                 try {
                                     boolean locked = box.getBoolean("Locked");
-                                    if (!locked) {
+
+                                    JSONObject localData = new JSONObject(FileStoreReader.readFile(BoxesActivity.this, "localUserData.json"));
+
+                                    if (!locked && checkDateLimit(localData.getString("DateUntil"))) {
                                         Intent openPage = new Intent(BoxesActivity.this, ExperimentActivity.class);
                                         openPage.putExtra("JSON", box.toString());
                                         startActivity(openPage);
@@ -156,4 +165,56 @@ public class BoxesActivity extends AppCompatActivity {
             e.printStackTrace();
         }
     }
+
+    @RequiresApi(api = Build.VERSION_CODES.N)
+    private boolean checkDateLimit(String dateLimit){
+
+        Calendar calendar = Calendar.getInstance();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
+        String dateToday = simpleDateFormat.format(calendar.getTime());
+        d("dateToday", dateToday);
+
+        Integer dateTodayYear = 1000*Character.getNumericValue(dateToday.codePointAt(0))+100*Character.getNumericValue(dateToday.codePointAt(1))+10*Character.getNumericValue(dateToday.codePointAt(2))+Character.getNumericValue(dateToday.codePointAt(3));
+
+        String dateLimitFormatted = dateLimit.substring(dateLimit.length()-4);
+        d("dateDeadline", dateLimitFormatted);
+
+        Integer dateLimitYear = 1000*Character.getNumericValue(dateLimitFormatted.codePointAt(0))+100*Character.getNumericValue(dateLimitFormatted.codePointAt(1))+10*Character.getNumericValue(dateLimitFormatted.codePointAt(2))+Character.getNumericValue(dateLimitFormatted.codePointAt(3));
+
+        if(dateTodayYear >= dateLimitYear){
+            simpleDateFormat = new SimpleDateFormat("mm");
+            dateToday = simpleDateFormat.format(calendar.getTime());
+
+            d("dateToday", dateToday);
+
+            Integer dateTodayMonth = 10*Character.getNumericValue(dateToday.codePointAt(0))+Character.getNumericValue(dateToday.codePointAt(1));
+
+            dateLimitFormatted = dateLimit.substring(dateLimit.length()-7, dateLimit.length()-5);
+            d("dateDeadline", dateLimitFormatted);
+
+            Integer dateLimitMonth = 10*Character.getNumericValue(dateLimitFormatted.codePointAt(0))+Character.getNumericValue(dateLimitFormatted.codePointAt(1));
+
+            if(dateTodayMonth >= dateLimitMonth){
+                simpleDateFormat = new SimpleDateFormat("dd");
+                dateToday = simpleDateFormat.format(calendar.getTime());
+
+                d("dateToday", dateToday);
+
+                Integer dateTodayDay = 10*Character.getNumericValue(dateToday.codePointAt(0))+Character.getNumericValue(dateToday.codePointAt(1));
+
+                dateLimitFormatted = dateLimit.substring(dateLimit.length()-10, dateLimit.length()-8);
+                d("dateDeadline", dateLimitFormatted);
+
+                Integer dateLimitDay = 10*Character.getNumericValue(dateLimitFormatted.codePointAt(0))+Character.getNumericValue(dateLimitFormatted.codePointAt(1));
+
+                if(dateTodayDay >= dateLimitDay){
+                    d("dateTest", "Date today is later than locked date!");
+                    return true;
+                }
+
+            }
+
+        }
+        return false;
+    }
 }
diff --git a/app/src/main/java/com/yearthreeproject/xbframework/MainActivity.java b/app/src/main/java/com/yearthreeproject/xbframework/MainActivity.java
index c69585ee8a1730b498f676b74d0c4b823d12bbc2..daa4aa89209fbbf3c02a55de99864a94e25e451f 100644
--- a/app/src/main/java/com/yearthreeproject/xbframework/MainActivity.java
+++ b/app/src/main/java/com/yearthreeproject/xbframework/MainActivity.java
@@ -6,7 +6,6 @@ import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.pm.PackageManager;
-import android.icu.text.SimpleDateFormat;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
@@ -24,8 +23,8 @@ import androidx.core.app.ActivityCompat;
 import androidx.core.content.ContextCompat;
 
 import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.InputStream;
-import java.util.Calendar;
 import java.util.Random;
 
 import static android.util.Log.d;
@@ -61,10 +60,8 @@ public class MainActivity extends AppCompatActivity {
         getSupportActionBar().setDisplayUseLogoEnabled(true);
 
         askForWriteAccess();
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-            testingDateAndTime();
-        }
         createSalt();
+        checkLocalUserFile();
 
         homeButton = findViewById(R.id.HomeHomeButton);
         loginButton = findViewById(R.id.HomeLoginButton);
@@ -116,6 +113,16 @@ public class MainActivity extends AppCompatActivity {
 
     }
 
+    private void checkLocalUserFile() {
+        File file = new File(this.getFilesDir(), "localUserData.json");
+        if(!file.exists()) {
+            // Do stuff to initialise the file
+            FileStoreReader.saveFile(this, "localUserData.json", "{DateUntil:'31/01/1999'}");
+        } else {
+            // Do nothing
+        }
+    }
+
     private void createSalt(){
         SharedPreferences savedSettings = this.getSharedPreferences("com.yearthreeproject.xbframework.PREFERENCE_FILE_KEY", Context.MODE_PRIVATE);
         SharedPreferences.Editor savedSettingsEditor = savedSettings.edit();
@@ -137,72 +144,6 @@ public class MainActivity extends AppCompatActivity {
         }
     }
 
-    @RequiresApi(api = Build.VERSION_CODES.N)
-    private void testingDateAndTime(){
-        Calendar calendar = Calendar.getInstance();
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
-        String dateToday = simpleDateFormat.format(calendar.getTime());
-        d("dateToday", dateToday);
-
-        Integer dateTodayYear = 1000*Character.getNumericValue(dateToday.codePointAt(0))+100*Character.getNumericValue(dateToday.codePointAt(1))+10*Character.getNumericValue(dateToday.codePointAt(2))+Character.getNumericValue(dateToday.codePointAt(3));
-
-        calendar.add(Calendar.DATE, 5);
-        String dateLater = simpleDateFormat.format(calendar.getTime());
-        d("dateDeadline", dateLater);
-
-        Integer dateLaterYear = 1000*Character.getNumericValue(dateLater.codePointAt(0))+100*Character.getNumericValue(dateLater.codePointAt(1))+10*Character.getNumericValue(dateLater.codePointAt(2))+Character.getNumericValue(dateLater.codePointAt(3));
-
-        d("dateTest", dateTodayYear.toString());
-        d("dateTest", dateLaterYear.toString());
-
-        if(dateTodayYear <= dateLaterYear){
-            d("dateTest", "Release from experiment!");
-
-            simpleDateFormat = new SimpleDateFormat("mm");
-            dateToday = simpleDateFormat.format(calendar.getTime());
-
-            d("dateToday", dateToday);
-
-            Integer dateTodayMonth = 10*Character.getNumericValue(dateToday.codePointAt(0))+Character.getNumericValue(dateToday.codePointAt(1));
-
-            calendar.add(Calendar.DATE, 5);
-            dateLater = simpleDateFormat.format(calendar.getTime());
-            d("dateDeadline", dateLater);
-
-            Integer dateLaterMonth = 10*Character.getNumericValue(dateLater.codePointAt(0))+Character.getNumericValue(dateLater.codePointAt(1));
-
-            d("dateTest", dateTodayMonth.toString());
-            d("dateTest", dateLaterMonth.toString());
-
-            if(dateTodayMonth <= dateLaterMonth){
-                d("dateTest", "Release from experiment!");
-
-                simpleDateFormat = new SimpleDateFormat("dd");
-                dateToday = simpleDateFormat.format(calendar.getTime());
-
-                d("dateToday", dateToday);
-
-                Integer dateTodayDay = 10*Character.getNumericValue(dateToday.codePointAt(0))+Character.getNumericValue(dateToday.codePointAt(1));
-
-                calendar.add(Calendar.DATE, 5);
-                dateLater = simpleDateFormat.format(calendar.getTime());
-                d("dateDeadline", dateLater);
-
-                Integer dateLaterDay = 10*Character.getNumericValue(dateLater.codePointAt(0))+Character.getNumericValue(dateLater.codePointAt(1));
-
-                d("dateTest", dateTodayDay.toString());
-                d("dateTest", dateLaterDay.toString());
-
-                if(dateTodayDay <= dateLaterDay){
-                    d("dateTest", "Release from experiment!");
-                }
-
-            }
-
-        }
-
-    }
-
     private void resetBoxJSON() {
         // Load Box Json and initialise to internal storage
         InputStream inputStream = getResources().openRawResource(R.raw.box);