     let graphics : Graphics
     let sound : Sound
     let keyboard : Keyboard
+    
+    // The countdown timer will tick every 60ms
+    let timerDelay = dispatch_time(DISPATCH_TIME_NOW, Int64(1.0/60.0 * Double(NSEC_PER_SEC)))
+
+    // The CPU every ms
+    let CPUDelay = dispatch_time(DISPATCH_TIME_NOW, Int64(1.0/1000.0 * Double(NSEC_PER_SEC)))
     
     // Mapping every opcode to a closure
     

    func startLoop()
    {
        self.isRunning = true
        self.loop()
    }
    
    /**
    * Stops the loop
    */
    func stopLoop()
    {
        self.isRunning = false

    }
    
    /**
     * The countdown timer loop
     */
    private func timerLoop()
    {
        if(self.isRunning)
        {
            // Make sure the timers countdown
            self.countdownTimers()
            
            // Make sound if needed
            self.makeNoise()

            // And call self recursively after that delay
            dispatch_after(self.timerDelay, dispatch_get_main_queue(), self.timerLoop)
        }

    }
    
    /**
     * The CPU Cycle loop
     */
    private func CPUCycleLoop()
    {
        // Determine if we should continue the loop
        if(self.isRunning)
        {
            // Handle the next instruction
            self.tickInstruction()

            // And call self recursively after that delay
            dispatch_after(self.CPUDelay, dispatch_get_main_queue(), self.CPUCycleLoop)
        }
    }
    
