diff --git a/app/__init.py__ b/app/__init.py__
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/app/internal/__init.py__ b/app/internal/__init.py__
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/model_factory.py b/app/internal/model_factory.py
similarity index 87%
rename from src/model_factory.py
rename to app/internal/model_factory.py
index 0abc91cb64a6bf6f48ad479bb28f53d24073cdc9..4c8821ab99c1e430b0823ef4b9c1864e40427be2 100644
--- a/src/model_factory.py
+++ b/app/internal/model_factory.py
@@ -34,11 +34,7 @@ def discover_models():
     return models
 
 def get_model_instance(model_id):
-    global _models
-    if _models is None:
-        print("Indexing models")
-        _models = discover_models()
-    return _models.get(model_id)()
+    return get_vips_models().get(model_id)()
 
 def get_vips_model_packages():
     global _packages
@@ -46,9 +42,16 @@ def get_vips_model_packages():
         discover_models()
     return _packages
 
+def get_vips_models():
+    global _models
+    if _models is None:
+        #print("Indexing models")
+        _models = discover_models()
+    return _models
+
 # USAGE EXAMPLE. REMOVE when U start using the module from elsewhere
-model = get_model_instance("REFERENCEM")
-print(model.get_model_name())
-print(get_vips_model_packages())
+#model = get_model_instance("REFERENCEM")
+#print(model.get_model_name())
+#print(get_vips_model_packages())
 
 
diff --git a/app/main.py b/app/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..e5ff893f9565c3f8813351c73aa55179f7efae95
--- /dev/null
+++ b/app/main.py
@@ -0,0 +1,18 @@
+from fastapi import FastAPI
+from fastapi.responses import PlainTextResponse
+from app.internal.model_factory import *
+
+app = FastAPI()
+
+
+@app.get("/")
+async def root():
+    return {"message": "Hello World"}
+
+@app.get("/models", response_class=PlainTextResponse)
+async def print_model_list() -> str:
+    model_list = ""
+    vips_models = get_vips_models()
+    for model_id in vips_models:
+        model_list = "%s%s %s\n" %(model_list, model_id, get_model_instance(model_id).get_model_name())
+    return model_list
diff --git a/safe_pip_freeze.py b/safe_pip_freeze.py
new file mode 100644
index 0000000000000000000000000000000000000000..6ddff3e95a97bf520da7d602791aba43bba77458
--- /dev/null
+++ b/safe_pip_freeze.py
@@ -0,0 +1,6 @@
+import sys
+import subprocess
+import src.model_factory
+
+# Intention: Make sure that pip freeze doesn't include VIPS models
+# Only necessary if we decide to stick with using pip freeze
\ No newline at end of file
diff --git a/src/main.py b/src/main.py
deleted file mode 100644
index ee60be1f964d199ffd46e7402dc3ca3fb4585e95..0000000000000000000000000000000000000000
--- a/src/main.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from fastapi import FastAPI
-
-app = FastAPI()
-
-
-@app.get("/")
-async def root():
-    return {"message": "Hello World"}