diff --git a/databaseReset.py b/databaseReset.py
index 0d5d5c2..2d08492 100644
--- a/databaseReset.py
+++ b/databaseReset.py
@@ -39,7 +39,7 @@ if os.geteuid() == 0:
 expouser=settings.EXPOUSER
 expouserpass=settings.EXPOUSERPASS
 expouseremail=settings.EXPOUSER_EMAIL
-print(" - SETTINGS: {} ({:.5}...) <{}> on module loading".format(expouser, expouserpass, expouseremail))
+print(" - settings: {} ({:.5}...) <{}> on module loading".format(expouser, expouserpass, expouseremail))
 
 
 
@@ -47,12 +47,16 @@ def reinit_db():
     """Rebuild database from scratch. Deletes the file first if sqlite is used,
     otherwise it drops the database and creates it.
     """
+    django.db.close_old_connections() # wipes an in-memory sqlite db
     currentdbname = settings.DATABASES['default']['NAME']
-    if settings.DATABASES['default']['ENGINE'] == 'django.db.backends.sqlite3':
+    if settings.DATABASES['default']['NAME'] == ':memory:':
+        pass
+    elif settings.DATABASES['default']['ENGINE'] == 'django.db.backends.sqlite3':
         try:
             os.remove(currentdbname)
         except OSError:
-            pass
+            print(" ! OSError on removing: " + currentdbname + " (Is the file open in another app?\n")
+            raise
     else:
         cursor = connection.cursor()
         cursor.execute("DROP DATABASE %s" % currentdbname)
@@ -65,12 +69,17 @@ def reinit_db():
 def syncuser():
     """Sync user - needed after reload
     """
-    print("Synchronizing user")
+    print(" - Synchronizing user on: " + settings.DATABASES['default']['NAME'])
     management.call_command('migrate', interactive=False)
-    user = User.objects.create_user(expouser, expouseremail, expouserpass)
-    user.is_staff = True
-    user.is_superuser = True
-    user.save()
+    try:
+        user = User.objects.create_user(expouser, expouseremail, expouserpass)
+        user.is_staff = True
+        user.is_superuser = True
+        user.save()
+    except:
+        print(" ! INTEGRITY ERROR user on: " + settings.DATABASES['default']['NAME'])
+        print(" ! You probably have not got a clean db when you thought you had.\n")
+        raise
 
 def dirsredirect():
     """Make directories that troggle requires and sets up page redirects
@@ -438,7 +447,7 @@ if __name__ == "__main__":
         runlabel=None
 
     jq = JobQueue(runlabel)
-    jq.run_now_django_tests(1) 
+    #jq.run_now_django_tests(1) 
     
     if len(sys.argv)==1:
         usage()
@@ -446,7 +455,7 @@ if __name__ == "__main__":
     elif "test" in sys.argv:
         jq.enq("caves",import_caves)
         jq.enq("people",import_people)
-        #jq.run_now_django_tests(2)
+        jq.run_now_django_tests(2)
     elif "caves" in sys.argv:
         jq.enq("caves",import_caves)
     elif "logbooks" in sys.argv:
diff --git a/reset-django.py b/reset-django.py
new file mode 100644
index 0000000..8b8f9b6
--- /dev/null
+++ b/reset-django.py
@@ -0,0 +1,74 @@
+import os 
+import shutil
+
+from pprint import pprint
+
+# from https://groups.google.com/forum/#!topic/django-users/C8Q7CTpcChc
+# Just put it in the folder where manage.py file is and run it.
+
+folders = []
+base_dir = os.path.dirname(os.path.realpath(__file__))
+
+
+def get_directory_list():
+    global folders
+    global base_dir
+
+    for root, d_names, f_names in os.walk(base_dir):
+        for name in d_names:
+            folders.append(os.path.join(root, name))
+    folders = sorted(folders)
+    
+    return folders
+
+
+def delete_pycache():
+    global folders 
+
+    for folder in folders:
+        if folder.endswith("__pycache__"):
+            shutil.rmtree(folder)
+
+    print("All __pycache__ files deleted.")
+    return None
+
+
+def delete_migrations():
+    global folders
+
+    for folder in folders:
+        if folder.endswith("migrations"):
+            for item in os.listdir(folder):
+                if not item.endswith("__init__.py"):
+                    os.remove(os.path.join(folder, item))
+
+    print("All migration files deleted.")
+    return None
+
+
+def delete_sqlite3():
+    global base_dir
+    
+    db_file = os.path.join(base_dir, "troggle.sqlite3")
+    
+    if os.path.exists(db_file):
+        os.remove(db_file)
+
+
+def main():
+    global folders
+
+    try: 
+        get_directory_list()
+        delete_pycache()
+        delete_migrations()
+        delete_sqlite3()
+        print("All cleanup operations performed successfully.")
+        
+    except Exception as e:
+        print("There was some error! Aaargh. \n")
+        raise
+
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file