         }
     }
     
+    /**
+     
+        Handle a node being touched. Place piece, merge, collect, etc.
+     
+    */
     func nodeWasTouched(node: SKNode) -> Bool {
         var handled = false
         

         
            for node in nodes {
                if (node.name == "hexMapCell") {
                    let x = node.userData!.valueForKey("hexMapPositionX") as! Int
                    let y = node.userData!.valueForKey("hexMapPositionY") as! Int
                    
                    let cell = HexMapHelper.instance.hexMap!.cell(x,y)
    
                    if (GameState.instance!.currentPiece != nil && GameState.instance!.currentPiece is RemovePiece) {
                        currentPieceSprite!.position = node.position
                    } else
                    if (cell!.willAccept(GameState.instance!.currentPiece!)) {
                        self.updateMergingPieces(cell!)
                        

        self.undoState = nil
    }
    
    /**
        Handles touch begin and move events. Updates animations for any pieces which would be merged if the player were to end the touch event in the cell being touched, if any.
    */
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        if (self.widgetTouchesBegan(touches, withEvent: event)) {
            return
