diff --git a/resources/music/basshit.ogg b/resources/music/basshit.ogg
new file mode 100644
index 0000000..3693246
Binary files /dev/null and b/resources/music/basshit.ogg differ
diff --git a/robotgame.py b/robotgame.py
index f76fd62..254e72b 100755
--- a/robotgame.py
+++ b/robotgame.py
@@ -72,4 +72,3 @@ if __name__ == '__main__':
 
     game = robotgame.game.Game(window)
     game.start()
-    help(robotgame.game.Game)
diff --git a/robotgame/game.py b/robotgame/game.py
index 3da4720..20d5179 100644
--- a/robotgame/game.py
+++ b/robotgame/game.py
@@ -24,18 +24,26 @@
 The game. Handles everything.
 """
 
+import os
 import pygame
 
+import jukebox
+
 class Game(object):
     """Create an object to handle the game."""
     def __init__(self, window, running=False, speed=30):
         self.__dict__.update(locals())
 
-        self.active_objs = []
-        self.passive_objs = []
+        self.objs = []
 
         self.clock = pygame.time.Clock()
 
+        self.jukebox = jukebox.Jukebox(os.path.abspath(os.path.join("resources",
+                                                                    "music")),
+                                       ["basshit.ogg"])
+
+        self.ticks = self.prev_ticks = pygame.time.get_ticks()
+
     def start(self):
         self.running = True
         self.run()
@@ -43,32 +51,44 @@ class Game(object):
     def stop(self):
         self.running = False
 
-    def activate_object(self, obj):
-        self.active_objs.remove(obj)
-        self.passive_objs.append(obj)
-
-    def deactivate_object(self, obj):
-        self.passive_objs.remove(obj)
-        self.active_objs.append(obj)
-
     def run(self):
+        t = pygame.time.get_ticks()
+        dt = 0
         while self.running:
-            self.update()
+            dt = t - pygame.time.get_ticks()
+            t = pygame.time.get_ticks()
+            self.update(t, dt)
             self.draw()
             self.clock.tick(self.speed)
 
-    def update(self):
-        # Get all events since last update call (this prevents event
-        # "bottlenecking"/lock-ups)
+    def update(self, t, dt):
+        """
+        Update all game objects.
+        """
+        # Retrieve and flush all events since last update call (this prevents
+        # event "bottlenecking"/lock-ups)
         events = pygame.event.get()
         for event in events:
             # Stop the game when closing the window
             if event.type == pygame.QUIT:
                 self.stop()
 
-        t = pygame.time.get_ticks()
-        for obj in self.active_objs:
-            obj.update(t)
+        # Keep the music playing!
+        if not pygame.mixer.music.get_busy():
+            self.jukebox.play()
+
+        # Update all objects
+        for obj in self.objs:
+            if hasattr(obj, 'update'):
+                obj.update(t, dt)
+        self.prev_ticks = pygame.time.get_ticks()
 
     def draw(self):
-        pass
+        """
+        Update all game objects.
+        """
+        self.window.fill((0, 0, 0))
+        for obj in self.objs:
+            if hasattr(obj, 'draw'):
+                obj.draw(self.window)
+        pygame.display.flip()
diff --git a/robotgame/jukebox.py b/robotgame/jukebox.py
new file mode 100644
index 0000000..b64f37a
--- /dev/null
+++ b/robotgame/jukebox.py
@@ -0,0 +1,47 @@
+# This file is part of ROBOTGAME
+#
+# ROBOTGAME is free software: you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation, either version 3 of the License, or (at your option) any later
+# version.
+#
+# ROBOTGAME is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# ROBOTGAME.  If not, see .
+#
+# ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
+#
+#                          jukebox.py
+#                     --------------------
+#       date created : Tue Aug 7 2012
+#          copyright : (C) 2012 Sakse Dalum
+#      maintained by : Sakse Dalum 
+
+"""
+The jukebox. Handles playback of background music.
+"""
+
+import os
+import pygame
+import random
+
+class Jukebox(object):
+    """Create an object to handle music playback."""
+    def __init__(self, music_dir, music_files, volume=100, playing=True):
+        self.__dict__.update(locals())
+
+        self.iterator = 0
+
+    def play(self):
+        pygame.mixer.music.load(
+            os.path.join(self.music_dir,
+                         self.music_files[self.iterator
+                                          % len(self.music_files)]))
+        pygame.mixer.music.play()
+        self.iterator += 1
+
+    def stop(self):
+        pygame.mixer.music.stop()