diff --git a/demo/demo/main.cpp b/demo/demo/main.cpp
index 03c32ba1789c27992272681037388578fc1e8dfe..e1802a3a01be8697f1797e18fe37ee74ccfc93ef 100644
--- a/demo/demo/main.cpp
+++ b/demo/demo/main.cpp
@@ -41,18 +41,39 @@
 #include "GameScene.h"
 #include "rollball.hpp"
 
+static void setup_menu(fggl::App& app) {
+	auto *menu = app.add_state<fggl::scenes::BasicMenu>("menu");
+
+	// add some menu items for the game states
+	menu->add("terrain", [&app]() {
+		auto* audio = app.service<fggl::audio::AudioService>();
+		audio->play("click.ogg", false);
+		app.change_state("game");
+	});
+
+	menu->add("rollball", [&app]() {
+		auto* audio = app.service<fggl::audio::AudioService>();
+		audio->play("click.ogg", false);
+		app.change_state("rollball");
+	});
+
+	menu->add("quit", [&app]() {
+		auto* audio = app.service<fggl::audio::AudioService>();
+		audio->play("click.ogg", false);
+		app.running(false);
+	});
+}
+
 int main(int argc, const char* argv[]) {
 
 	// DAG initialisation test
 	fggl::modules::Manager moduleManager;
 	moduleManager.use<fggl::input::Generic>();
 	moduleManager.use<fggl::data::LocalStorage>();
-	moduleManager.use<fggl::audio::NullAudio>();
 	moduleManager.use<fggl::gui::FreeType>();
-
+	moduleManager.use<fggl::audio::OpenAL>();
 	moduleManager.use<fggl::gfx::OpenGL4>();
 	moduleManager.use<fggl::display::GLFW>();
-
 	moduleManager.resolve();
 
 	// create the application
@@ -73,27 +94,8 @@ int main(int argc, const char* argv[]) {
 		app.use<FGGL_MODULE_BULLET>();
 	#endif
 
-	// Add a basic main menu
-    auto *menu = app.add_state<fggl::scenes::BasicMenu>("menu");
-
-	// add some menu items for the game states
-	auto* audio = app.service<fggl::audio::AudioService>();
-    menu->add("terrain", [&app, &audio]() {
-		audio->play("click.ogg", false);
-		app.change_state("game");
-	});
-
-	menu->add("rollball", [&app, &audio]() {
-		audio->play("click.ogg", false);
-		app.change_state("rollball");
-	});
-
-	menu->add("quit", [&app, &audio]() {
-		audio->play("click.ogg", false);
-		app.running(false);
-	});
-
-	// the game states themselves
+	// our test states
+	setup_menu(app);
     app.add_state<GameScene>("game");
 	app.add_state<demo::RollBall>("rollball");