diff --git a/geomagio/webservice/__init__.py b/geomagio/webservice/__init__.py
index 51cf06e09635d9ed9d1335296cc1fa7450a13e11..c101e5f89e0dca0c4aa692825d4ac07628fd32ce 100644
--- a/geomagio/webservice/__init__.py
+++ b/geomagio/webservice/__init__.py
@@ -1,7 +1,6 @@
 from __future__ import absolute_import
 
-
-from .run_both import application
+from .app import create_app
 
 
 __all__ = ["create_app"]
diff --git a/geomagio/webservice/run_both.py b/geomagio/webservice/app.py
similarity index 65%
rename from geomagio/webservice/run_both.py
rename to geomagio/webservice/app.py
index 5bd93e62f04e286ae015a207897777e19548781c..10d2cc305e38cefab52ac1edf4e7ea6401fe2e68 100644
--- a/geomagio/webservice/run_both.py
+++ b/geomagio/webservice/app.py
@@ -4,11 +4,16 @@ from werkzeug.serving import run_simple
 from .public_app import create_app as create_public_app
 from .restricted_app import create_app as create_restricted_app
 
-public_app = create_public_app()
-restricted_app = create_restricted_app()
 
-# merge
-application = DispatcherMiddleware(public_app, {"/restricted": restricted_app})
+def create_app():
+    public_app = create_public_app()
+    restricted_app = create_restricted_app()
+    application = DispatcherMiddleware(public_app, {"/restricted": restricted_app})
+
+    return application
+
+
+application = create_app()
 
 if __name__ == "__main__":
     run_simple(
@@ -19,4 +24,3 @@ if __name__ == "__main__":
         use_debugger=True,
         use_evalex=True,
     )
-
diff --git a/geomagio/webservice/public_app.py b/geomagio/webservice/public_app.py
index 9150b71b45e130b6c2edf86e487cd66fe4d06eae..beb3ba2e164a55c66962d06e77338328ca8f35b4 100644
--- a/geomagio/webservice/public_app.py
+++ b/geomagio/webservice/public_app.py
@@ -3,9 +3,7 @@ from __future__ import absolute_import, unicode_literals
 import os
 import flask
 
-from . import data
-from . import database
-from . import login
+from . import data, login
 
 
 def create_app():
@@ -14,7 +12,6 @@ def create_app():
     app.config.update(os.environ)
 
     # connect modules
-    database.init_app(app)
     login.init_app(app)
     data.init_app(app)
 
diff --git a/geomagio/webservice/restricted_app.py b/geomagio/webservice/restricted_app.py
index d7a77871ae67af0d5f6c06061dcbc17442c9bc34..27fcf880b187aae0c9f1160539df8f7f7ab0b4a8 100644
--- a/geomagio/webservice/restricted_app.py
+++ b/geomagio/webservice/restricted_app.py
@@ -3,9 +3,7 @@ from __future__ import absolute_import, unicode_literals
 import os
 import flask
 
-from . import data
-from . import database
-from . import login
+from . import database, login, session
 
 
 def create_app():
@@ -16,7 +14,7 @@ def create_app():
     # connect modules
     database.init_app(app)
     login.init_app(app)
-    data.init_app(app)
+    session.init_app(app)
 
     # add default route
     @app.route("/")
@@ -24,4 +22,3 @@ def create_app():
         return "<h1>Restricted Page</h1>"
 
     return app
-
diff --git a/geomagio/webservice/run_public.py b/geomagio/webservice/run_public.py
deleted file mode 100644
index 4f3af36bf33a9684a4178ad6ff66456fde832c74..0000000000000000000000000000000000000000
--- a/geomagio/webservice/run_public.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from .public_app import create_app
-
-public_app = create_app()
-
-if __name__ == "__main__":
-    public_app.run(host="0.0.0.0")
diff --git a/geomagio/webservice/run_restricted.py b/geomagio/webservice/run_restricted.py
deleted file mode 100644
index 9fc8d00139c8f38df8a451c77e6d35ac28eb2822..0000000000000000000000000000000000000000
--- a/geomagio/webservice/run_restricted.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from .restricted_app import create_app
-
-restricted_app = create_app()
-
-if __name__ == "__main__":
-    restricted_app.run(host="0.0.0.0")