diff --git a/ppb/__init__.py b/ppb/__init__.py
index <HASH>..<HASH> 100644
--- a/ppb/__init__.py
+++ b/ppb/__init__.py
@@ -1,13 +1,31 @@
+import logging
+from typing import Callable
+
 from ppb.vector import Vector
 from ppb.engine import GameEngine
-
 from ppb.scenes import BaseScene
 from ppb.sprites import BaseSprite
 
-import logging
 
-def run(starting_scene=BaseScene, *, log_level=logging.WARNING, **kwargs):
+def run(setup: Callable[[BaseScene], None], *, log_level=logging.WARNING):
+    """
+    Run a small game.
+
+    The resolution will 800 pixels wide by 600 pixels tall.
+
+    setup is a callable that accepts a scene and returns None.
+
+    log_level let's you set the expected log level. Consider logging.DEBUG if
+    something is behaving oddly.
+    """
     logging.basicConfig(level=log_level)
-    
-    with GameEngine(starting_scene, **kwargs) as eng:
+
+    kwargs = {
+        "resolution": (800, 600),
+        "scene_kwargs": {
+            "set_up": setup,
+        }
+    }
+
+    with GameEngine(BaseScene, **kwargs) as eng:
         eng.run()
Changes the signature of ppb.run to be (setup, log_level)