diff --git a/examples/game/README.md b/examples/game/README.md
index 029c193..3492069 100644
--- a/examples/game/README.md
+++ b/examples/game/README.md
@@ -1,2 +1,4 @@
-Assets for this game are taken from Galactic Guardian:
-https://github.com/slembcke/GalacticGuardian.spritebuilder
\ No newline at end of file
+Assets for this game are from Galactic Guardian:
+https://github.com/slembcke/GalacticGuardian.spritebuilder
+And are used under MIT license:
+https://github.com/slembcke/GalacticGuardian.spritebuilder/pull/2
diff --git a/examples/game/assets/temp_music.aac b/examples/game/assets/temp_music.aac
new file mode 100644
index 0000000..934fb54
--- /dev/null
+++ b/examples/game/assets/temp_music.aac
Binary files differ
diff --git a/examples/game/lib/main.dart b/examples/game/lib/main.dart
index d18fe06..6a28fab 100644
--- a/examples/game/lib/main.dart
+++ b/examples/game/lib/main.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'dart:async';
+
 import 'package:sky/mojo/asset_bundle.dart';
 import 'package:sky/theme/colors.dart' as colors;
 import 'package:sky/rendering/object.dart';
@@ -24,40 +26,48 @@
 
 final AssetBundle _bundle = _initBundle();
 
-ImageMap _loader;
+ImageMap _imageMap;
 SpriteSheet _spriteSheet;
 SpriteSheet _spriteSheetUI;
 GameDemoApp _app;
 Map<String,SoundEffect> _sounds = {};
 
 main() async {
-  _loader = new ImageMap(_bundle);
+  _imageMap = new ImageMap(_bundle);
 
-  await _loader.load([
+  // Use a list to wait on all loads in parallel just before starting the app.
+  List loads = [];
+
+  loads.add(_imageMap.load([
     'assets/nebula.png',
     'assets/sprites.png',
     'assets/starfield.png',
     'assets/game_ui.png',
-  ]);
+  ]));
 
+  // TODO(eseidel): These load in serial which is bad for startup!
   String json = await _bundle.loadString('assets/sprites.json');
-  _spriteSheet = new SpriteSheet(_loader['assets/sprites.png'], json);
+  _spriteSheet = new SpriteSheet(_imageMap['assets/sprites.png'], json);
 
   json = await _bundle.loadString('assets/game_ui.json');
-  _spriteSheetUI = new SpriteSheet(_loader["assets/game_ui.png"], json);
+  _spriteSheetUI = new SpriteSheet(_imageMap['assets/game_ui.png'], json);
 
   _app = new GameDemoApp();
 
-  _sounds["explosion"] = new SoundEffect(_bundle.load('assets/explosion.wav'));
-  _sounds["laser"] = new SoundEffect(_bundle.load('assets/laser.wav'));
+  // TODO(eseidel): SoundEffect doesn't really do anything except hold a future.
+  _sounds['explosion'] = new SoundEffect(_bundle.load('assets/explosion.wav'));
+  _sounds['laser'] = new SoundEffect(_bundle.load('assets/laser.wav'));
 
-  await _sounds["explosion"].load();
-  await _sounds["laser"].load();
+  loads.addAll([
+    _sounds['explosion'].load(),
+    _sounds['laser'].load(),
+  ]);
 
   SoundTrackPlayer stPlayer = SoundTrackPlayer.sharedInstance();
-  SoundTrack music = await stPlayer.load('https://github.com/slembcke/GalacticGuardian.spritebuilder/raw/GDC/Source/Resources/TempMusic.aac');
+  SoundTrack music = await stPlayer.load(_bundle.load('assets/temp_music.aac'));
   stPlayer.play(music);
 
+  await Future.wait(loads);
   runApp(_app);
 }
 
@@ -111,7 +121,7 @@
             _game = new GameDemoWorld(
               _app,
               navigator,
-              _loader,
+              _imageMap,
               _spriteSheet,
               _spriteSheetUI,
               _sounds,
@@ -121,8 +131,8 @@
             );
             navigator.pushNamed('/game');
           },
-          texture: _spriteSheetUI["btn_play_up.png"],
-          textureDown: _spriteSheetUI["btn_play_down.png"],
+          texture: _spriteSheetUI['btn_play_up.png'],
+          textureDown: _spriteSheetUI['btn_play_down.png'],
           width: 128.0,
           height: 128.0
         ),
@@ -231,7 +241,7 @@
 
 class MainScreenBackground extends NodeWithSize {
   MainScreenBackground() : super(new Size(1024.0, 1024.0)) {
-    Sprite sprtBackground = new Sprite.fromImage(_loader["assets/starfield.png"]);
+    Sprite sprtBackground = new Sprite.fromImage(_imageMap['assets/starfield.png']);
     sprtBackground.position = new Point(512.0, 512.0);
     addChild(sprtBackground);
 
diff --git a/examples/game/lib/sound.dart b/examples/game/lib/sound.dart
index b217090..b5ff1d9 100644
--- a/examples/game/lib/sound.dart
+++ b/examples/game/lib/sound.dart
@@ -170,16 +170,13 @@
 
   MediaServiceProxy _mediaService;
 
-  Future<SoundTrack> load(String url) async {
+  Future<SoundTrack> load(Future<MojoDataPipeConsumer> pipe) async {
     // Create media player
     SoundTrack soundTrack = new SoundTrack();
     soundTrack._player = new MediaPlayerProxy.unbound();
     _mediaService.ptr.createPlayer(soundTrack._player);
 
-    // Load and prepare
-    UrlResponse response = await fetchUrl(url);
-    await soundTrack._player.ptr.prepare(response.body);
-
+    await soundTrack._player.ptr.prepare(await pipe);
     return soundTrack;
   }
 
diff --git a/examples/game/lib/sprites.dart b/examples/game/lib/sprites.dart
index 8735554..e26bb45 100644
--- a/examples/game/lib/sprites.dart
+++ b/examples/game/lib/sprites.dart
@@ -11,11 +11,9 @@
 import 'dart:sky';
 
 import 'package:mojo/core.dart';
-import 'package:mojo/mojo/url_response.mojom.dart';
 import 'package:sky/animation/curves.dart';
 import 'package:sky/base/scheduler.dart' as scheduler;
 import 'package:sky/mojo/asset_bundle.dart';
-import 'package:sky/mojo/net/fetch.dart';
 import 'package:sky/mojo/shell.dart' as shell;
 import 'package:sky/rendering/box.dart';
 import 'package:sky/rendering/object.dart';
diff --git a/examples/game/sky.yaml b/examples/game/sky.yaml
index d88daaa..df02f36 100644
--- a/examples/game/sky.yaml
+++ b/examples/game/sky.yaml
@@ -9,3 +9,4 @@
   - assets/laser.wav
   - assets/levelup.wav
   - assets/pickup.wav
+  - assets/temp_music.aac
