     var dt: NSTimeInterval = 0
     let zombieMovePointsPerSec: CGFloat = 480.0
     var velocity = CGPoint.zero
+    let playableRect: CGRect
+    
+    override init(size: CGSize) {
+        let maxAspectRatio:CGFloat = 16.0/9.0 // 1
+        let playableHeight = size.width / maxAspectRatio // 2
+        let playableMargin = (size.height-playableHeight)/2.0 // 3
+        playableRect = CGRect(x: 0, y: playableMargin,
+                              width: size.width,
+                              height: playableHeight) // 4
+        super.init(size: size) // 5
+    }
+    
+    required init(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented") // 6
+    }
     
     override func didMoveToView(view: SKView) {
         backgroundColor = SKColor.blackColor()

        zombie.position = CGPoint(x: 400, y: 400)
        //zombie1.setScale(2)
        addChild(zombie)
    }
    
    override func update(currentTime: NSTimeInterval) {
        moveSprite(zombie, velocity: CGPoint(x: zombieMovePointsPerSec, y: 0))
        
        if lastUpdateTime > 0 {
            dt = currentTime - lastUpdateTime

            dt = 0
        }
        lastUpdateTime = currentTime
        boundsCheckZombie()
        rotateSprite(zombie, direction: velocity)
    }
    
    func moveSprite(sprite: SKSpriteNode, velocity: CGPoint) {
        // 1
        let amountToMove = CGPoint(x: velocity.x * CGFloat(dt), y: velocity.y * CGFloat(dt))
        
        // 2
        sprite.position = CGPoint(x: sprite.position.x + amountToMove.x, y: sprite.position.y + amountToMove.y)
