diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8a735b120f6a89bcdbd2f7916cb42fdc052fbbf1..4ee075e06a2bde92ddf4f9c7b5391496e0e33226 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -55,7 +55,7 @@ build:
 simulate:
   stage: build
   script:
-    - python3 sim/run.py screenshot
+    - python3 sim/run.py --screenshot
   artifacts:
     expose_as: 'Smulator Screenshot'
     paths: ['flow3r.png']
diff --git a/sim/run.py b/sim/run.py
index ef9df48e8ee615df59fbcf712ad1ea843076bc04..eae0f00072fd4468d128d049a2e8b6180e513dff 100644
--- a/sim/run.py
+++ b/sim/run.py
@@ -6,6 +6,7 @@ import importlib.util
 import os
 import sys
 import builtins
+import argparse
 
 
 projectpath = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
@@ -112,13 +113,24 @@ def _stat(path):
 
 os.stat = _stat
 
-if len(sys.argv) >= 2 and sys.argv[1] == "screenshot":
+
+def sim_main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--screenshot", action="store_true", default=False)
+    parser.add_argument("override_app", nargs="?")
+    args = parser.parse_args()
+
     import _sim
 
-    _sim.SCREENSHOT = True
-elif len(sys.argv) == 2:
-    import st3m.run
+    _sim.SCREENSHOT = args.screenshot
+
+    if args.override_app is not None:
+        import st3m.run
+
+        st3m.run.override_main_app = args.override_app
+
+    import main
 
-    st3m.run.override_main_app = sys.argv[1]
 
-import main
+if __name__ == "__main__":
+    sim_main()