diff --git a/geomagio/webservice/__init__.py b/geomagio/webservice/__init__.py
index 86eab5600dd5e87f8e4a7a4ce4b784bc982005cc..d04c97a460dc75de6f49f589cdaa31b161993614 100644
--- a/geomagio/webservice/__init__.py
+++ b/geomagio/webservice/__init__.py
@@ -1,7 +1,7 @@
 from __future__ import absolute_import
 
 
-from .app import create_app
+from .wsgi_both import application
 
 
 __all__ = ["create_app"]
diff --git a/geomagio/webservice/app.py b/geomagio/webservice/public_app.py
similarity index 85%
rename from geomagio/webservice/app.py
rename to geomagio/webservice/public_app.py
index 97a498ab1f83dbbf638c61509f7a8aa36cbfed6d..9150b71b45e130b6c2edf86e487cd66fe4d06eae 100644
--- a/geomagio/webservice/app.py
+++ b/geomagio/webservice/public_app.py
@@ -6,18 +6,16 @@ import flask
 from . import data
 from . import database
 from . import login
-from . import session
 
 
 def create_app():
-    app = flask.Flask(__name__)
+    app = flask.Flask(__name__, instance_relative_config=True)
     # configure using environment variables
     app.config.update(os.environ)
 
     # connect modules
     database.init_app(app)
     login.init_app(app)
-    session.init_app(app)
     data.init_app(app)
 
     # add default route
diff --git a/geomagio/webservice/restricted_app.py b/geomagio/webservice/restricted_app.py
new file mode 100644
index 0000000000000000000000000000000000000000..d7a77871ae67af0d5f6c06061dcbc17442c9bc34
--- /dev/null
+++ b/geomagio/webservice/restricted_app.py
@@ -0,0 +1,27 @@
+from __future__ import absolute_import, unicode_literals
+
+import os
+import flask
+
+from . import data
+from . import database
+from . import login
+
+
+def create_app():
+    app = flask.Flask(__name__, instance_relative_config=True)
+    # configure using environment variables
+    app.config.update(os.environ)
+
+    # connect modules
+    database.init_app(app)
+    login.init_app(app)
+    data.init_app(app)
+
+    # add default route
+    @app.route("/")
+    def index():
+        return "<h1>Restricted Page</h1>"
+
+    return app
+
diff --git a/geomagio/webservice/run_both.py b/geomagio/webservice/run_both.py
new file mode 100644
index 0000000000000000000000000000000000000000..5bd93e62f04e286ae015a207897777e19548781c
--- /dev/null
+++ b/geomagio/webservice/run_both.py
@@ -0,0 +1,22 @@
+from werkzeug.middleware.dispatcher import DispatcherMiddleware
+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})
+
+if __name__ == "__main__":
+    run_simple(
+        hostname="localhost",
+        port=5000,
+        application=application,
+        use_reloader=True,
+        use_debugger=True,
+        use_evalex=True,
+    )
+
diff --git a/geomagio/webservice/run_public.py b/geomagio/webservice/run_public.py
new file mode 100644
index 0000000000000000000000000000000000000000..d6a76633bb4856b935977e15a6f04fa1bbee7117
--- /dev/null
+++ b/geomagio/webservice/run_public.py
@@ -0,0 +1,7 @@
+from __future__ import absolute_import
+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
new file mode 100644
index 0000000000000000000000000000000000000000..f534fd1d07319047d2019f72f99c17312d7c9ef6
--- /dev/null
+++ b/geomagio/webservice/run_restricted.py
@@ -0,0 +1,6 @@
+from restricted_app import create_app
+
+restricted_app = create_app()
+
+if __name__ == "__main__":
+    restricted_app.run(host="0.0.0.0")
diff --git a/geomagio/webservice/wsgi_both.py b/geomagio/webservice/wsgi_both.py
new file mode 100644
index 0000000000000000000000000000000000000000..fd1cbd8068d3953f6adb2f99ff4f183b0039c647
--- /dev/null
+++ b/geomagio/webservice/wsgi_both.py
@@ -0,0 +1 @@
+from .run_both import application
diff --git a/geomagio/webservice/wsgi_public.py b/geomagio/webservice/wsgi_public.py
new file mode 100644
index 0000000000000000000000000000000000000000..32135e8c6769bd37555f73b301a62136145416e9
--- /dev/null
+++ b/geomagio/webservice/wsgi_public.py
@@ -0,0 +1 @@
+from run_public import public_app
diff --git a/geomagio/webservice/wsgi_restricted.py b/geomagio/webservice/wsgi_restricted.py
new file mode 100644
index 0000000000000000000000000000000000000000..7efe04e0ba36b97ae40859e9d7a3b7afa4aa4efe
--- /dev/null
+++ b/geomagio/webservice/wsgi_restricted.py
@@ -0,0 +1 @@
+from run_restricted import restricted_app