                     }
                 }
                 if !found {
-                    if let originalPoint = self.originalPoint {
+                    if let originalPoint = gameState?.originalPoint {
                         if let squareSprite = fallback {
                             squareSprite.dropTileSprite(sprite, originalPoint: originalPoint)
                         } else {

                        }
                    }
                }
                originalPoint = nil
                draggedSprite = nil
            }
        }
    }
    
    override func touchesCancelled(touches: NSSet!, withEvent event: UIEvent!) {
        if let point = touches.anyObject().locationInNode?(self) {
            if let sprite = draggedSprite {
                if let origPoint = self.originalPoint {
                    sprite.position = origPoint
                } else {
                    sprite.position = point

    typealias SquareSprite = Sprites.SquareSprite
    typealias TileSprite = Sprites.TileSprite
    
    class GameState {
        var squareSprites: [SquareSprite]
        var rackSprites: [TileSprite]
        let game: Locution
        
        var draggedSprite: TileSprite?
        var originalPoint: CGPoint?
        
        init(view: SKView, node: SKNode) {
            self.game = Locution()
            self.squareSprites = SquareSprite.createSprites(forGame: game, size: view.frame.size)
            self.rackSprites = TileSprite.createRackSprites(forGame: game, size: view.frame.size)
            for sprite in self.squareSprites {
                node.addChild(sprite)
            }
            for sprite in self.rackSprites {
                node.addChild(sprite)
            }
        }
    }
    
    var gameState: GameState?
    
    func newGame() {
        self.gameState = GameState(view:view, node:self)
    }
    
    override func didMoveToView(view: SKView) {
