diff --git a/docs/badge/application-programming.rst b/docs/badge/application-programming.rst
index d8bc843116d9627234184aa096cb167030b462c9..36ebcc2f9a2217b33dff80f4f4626903de9d8071 100644
--- a/docs/badge/application-programming.rst
+++ b/docs/badge/application-programming.rst
@@ -357,7 +357,7 @@ Let's introduce the final class you should actually be using for application dev
 
 .. code-block:: python
 
-    from st3m.application import Application
+    from st3m.application import Application, ApplicationContext
     import st3m.run
 
     class SecondScreen(BaseView):
@@ -381,8 +381,8 @@ Let's introduce the final class you should actually be using for application dev
 
 
     class MyDemo(Application):
-        def __init__(self) -> None:
-            super().__init__(name="My demo")
+        def __init__(self, app_ctx: ApplicationContext) -> None:
+            super().__init__(app_ctx)
 
         def draw(self, ctx: Context) -> None:
             # Paint the background black
@@ -399,7 +399,7 @@ Let's introduce the final class you should actually be using for application dev
             if self.input.right_shoulder.middle.pressed:
                 self._view_manager.push(SecondScreen())
 
-    st3m.run.run_view(Example())
+    st3m.run.run_view(Example(ApplicationContext()))
 
 The `Application` class gives you the following extras:
 
diff --git a/python_payload/apps/demo_cap_touch/main.py b/python_payload/apps/demo_cap_touch/main.py
index 381d831b85610eaa937775f744d4d227f4fa9727..2819745974e53ece984f554ae476e8879ad8a5be 100644
--- a/python_payload/apps/demo_cap_touch/main.py
+++ b/python_payload/apps/demo_cap_touch/main.py
@@ -1,4 +1,5 @@
-from st3m import application, logging
+from st3m import logging
+from st3m.application import Application, ApplicationContext
 from st3m.goose import List
 from st3m.input import InputState
 from ctx import Context
@@ -32,9 +33,9 @@ class Dot:
         ).fill()
 
 
-class CapTouchDemo(application.Application):
-    def __init__(self, name: str) -> None:
-        super().__init__(name)
+class CapTouchDemo(Application):
+    def __init__(self, app_ctx: ApplicationContext) -> None:
+        super().__init__(app_ctx)
         self.dots: List[Dot] = []
         self.last_calib = None
         # self.ui_autocalib = ui.IconLabel("Autocalib done", size=30)
diff --git a/python_payload/apps/demo_harmonic/__init__.py b/python_payload/apps/demo_harmonic/__init__.py
index 7eccb43333f0c05712de5e6f94e567106929007d..3367c9f6f9ed5efd3b76d6309b8ad73219236c31 100644
--- a/python_payload/apps/demo_harmonic/__init__.py
+++ b/python_payload/apps/demo_harmonic/__init__.py
@@ -17,12 +17,12 @@ chords = [
     [3, 7, 10, 14, 15],
 ]
 
-from st3m.application import Application
+from st3m.application import Application, ApplicationContext
 
 
 class HarmonicApp(Application):
-    def __init__(self, name: str) -> None:
-        super().__init__(name)
+    def __init__(self, app_ctx: ApplicationContext) -> None:
+        super().__init__(app_ctx)
 
         self.color_intensity = 0.0
         self.chord_index = 0
diff --git a/python_payload/apps/demo_melodic/__init__.py b/python_payload/apps/demo_melodic/__init__.py
index 20b02e89306b31fdb03c14b22806f843c7396c4e..4bf3d9f977948771995a6f7eac892bf2bd05fcbc 100644
--- a/python_payload/apps/demo_melodic/__init__.py
+++ b/python_payload/apps/demo_melodic/__init__.py
@@ -83,13 +83,13 @@ def foreground() -> None:
     adjust_playing_field_to_octave()
 
 
-from st3m.application import Application
+from st3m.application import Application, ApplicationContext
 
 
 # TODO(q3k): properly port this app
 class MelodicApp(Application):
-    def __init__(self, name: str) -> None:
-        super().__init__(name)
+    def __init__(self, app_ctx: ApplicationContext) -> None:
+        super().__init__(app_ctx)
         init()
 
     def draw(self, ctx: Context) -> None:
diff --git a/python_payload/apps/demo_scroll/__init__.py b/python_payload/apps/demo_scroll/__init__.py
index ccaabab9fddde020a45af57e332b3651028b2a08..05910414ddcd6ac71c7d65d884fc2a64c8ffbf08 100644
--- a/python_payload/apps/demo_scroll/__init__.py
+++ b/python_payload/apps/demo_scroll/__init__.py
@@ -5,7 +5,7 @@ import math
 
 # flow3r imports
 from st3m import InputState
-from st3m.application import Application
+from st3m.application import Application, ApplicationContext
 from st3m.property import BLUE, WHITE
 from st3m.goose import Optional
 from st3m.utils import xy_from_polar, tau
@@ -16,8 +16,8 @@ from ctx import Context
 class ScrollDemo(Application):
     PETAL_NO = 8
 
-    def __init__(self, name: str) -> None:
-        super().__init__(name)
+    def __init__(self, app_ctx: ApplicationContext) -> None:
+        super().__init__(app_ctx)
         self.scroll = CapScrollController()
 
     def draw(self, ctx: Context) -> None:
diff --git a/python_payload/apps/demo_worms/__init__.py b/python_payload/apps/demo_worms/__init__.py
index c2f72ff3e2f89ce39ce88b2c72587fddd3877c59..b2591fb03c63d4e321327418f7594fb0933777f0 100644
--- a/python_payload/apps/demo_worms/__init__.py
+++ b/python_payload/apps/demo_worms/__init__.py
@@ -5,7 +5,7 @@ import math
 
 # flow3r imports
 from st3m import InputState
-from st3m.application import Application
+from st3m.application import Application, ApplicationContext
 from st3m.property import BLUE, WHITE
 from st3m.goose import Optional
 from st3m.utils import xy_from_polar
@@ -18,8 +18,8 @@ tau = 2 * math.pi
 
 # Subclass Application
 class AppWorms(Application):
-    def __init__(self, name: str) -> None:
-        super().__init__(name)
+    def __init__(self, app_ctx: ApplicationContext) -> None:
+        super().__init__(app_ctx)
 
         # HACK: we work against double buffering by keeping note of how many
         # times on_draw got called.
diff --git a/python_payload/apps/nick/__init__.py b/python_payload/apps/nick/__init__.py
index 620a0bea69b292fbf05315b84c4245dc9f1c7f3d..167f0da4a87eb774fbb784dc8db3ade50ecee840 100644
--- a/python_payload/apps/nick/__init__.py
+++ b/python_payload/apps/nick/__init__.py
@@ -1,4 +1,4 @@
-from st3m.application import Application
+from st3m.application import Application, ApplicationContext
 from st3m.property import PUSH_RED, GO_GREEN, BLACK
 from st3m.goose import Dict, Any
 from st3m.input import InputState
@@ -48,8 +48,8 @@ class Configuration:
 
 
 class NickApp(Application):
-    def __init__(self, name: str) -> None:
-        super().__init__(name)
+    def __init__(self, app_ctx: ApplicationContext) -> None:
+        super().__init__(app_ctx)
         self._scale = 1.0
         self._led = 0.0
         self._phase = 0.0
diff --git a/python_payload/apps/otamatone/__init__.py b/python_payload/apps/otamatone/__init__.py
index 81986763c72f1a0ad2624ac2d59dcb9c490c8ba4..c666f93e5eed4e64f4201e5abe5cd1f2dd21b99a 100644
--- a/python_payload/apps/otamatone/__init__.py
+++ b/python_payload/apps/otamatone/__init__.py
@@ -5,7 +5,7 @@ import math
 import leds
 
 from st3m import InputState, Responder
-from st3m.application import Application
+from st3m.application import Application, ApplicationContext
 from st3m.property import BLUE, WHITE
 from st3m.goose import Optional
 from st3m.utils import xy_from_polar, tau
@@ -77,8 +77,8 @@ class Otamatone(Application):
 
     PETAL_NO = 3
 
-    def __init__(self, name: str) -> None:
-        super().__init__(name)
+    def __init__(self, app_ctx: ApplicationContext) -> None:
+        super().__init__(app_ctx)
         self._ts = 0
         self._blob = Blob()
 
@@ -136,4 +136,4 @@ class Otamatone(Application):
 if __name__ == "__main__":
     from st3m.run import run_view
 
-    run_view(Otamatone("otamatone"))
+    run_view(Otamatone(ApplicationContext()))
diff --git a/python_payload/apps/simple_drums/__init__.py b/python_payload/apps/simple_drums/__init__.py
index 3abfe34ba6121b3a32e4ed0760673171594e35e7..c5f7a1ef1d7c8ef76b7975ac7b97a8650b15f64b 100644
--- a/python_payload/apps/simple_drums/__init__.py
+++ b/python_payload/apps/simple_drums/__init__.py
@@ -3,7 +3,7 @@ import hardware
 import captouch
 import leds
 
-from st3m.application import Application
+from st3m.application import Application, ApplicationContext
 from st3m.input import InputState
 from st3m.goose import Tuple
 from ctx import Context
@@ -37,8 +37,8 @@ class Dot:
 
 
 class SimpleDrums(Application):
-    def __init__(self, name: str) -> None:
-        super().__init__(name)
+    def __init__(self, app_ctx: ApplicationContext) -> None:
+        super().__init__(app_ctx)
         # ctx.rgb(0, 0, 0).rectangle(-120, -120, 240, 240).fill()
         self.blm = bl00mbox.Channel()
         self.seq = self.blm.new(bl00mbox.patches.step_sequencer)
diff --git a/python_payload/st3m/application.py b/python_payload/st3m/application.py
index 576e7cfe54d0b270bd799a25ecd06698bd073294..fc3b515d093a0e0d0c3e532792ea5d22c7c4a458 100644
--- a/python_payload/st3m/application.py
+++ b/python_payload/st3m/application.py
@@ -18,9 +18,20 @@ import sys
 log = Log(__name__)
 
 
+class ApplicationContext:
+    """
+    Container for future application context.
+
+    Envisioned are: path to the bundle, bundle data,
+    path to a data directory, etc...
+    """
+
+    pass
+
+
 class Application(BaseView):
-    def __init__(self, name: str = __name__) -> None:
-        self._name = name
+    def __init__(self, app_ctx: ApplicationContext) -> None:
+        self._app_ctx = app_ctx
         super().__init__()
 
     def on_exit(self) -> None:
@@ -152,7 +163,7 @@ class BundleMetadata:
             log.info(f"Loaded {self.name} module: {m}")
             klass = getattr(m, class_entry)
             log.info(f"Loaded {self.name} class: {klass}")
-            inst = klass(package_name)
+            inst = klass(ApplicationContext())
             log.info(f"Instantiated {self.name} class: {inst}")
             return inst  # type: ignore
         except Exception as e: