     // ~~~~~~~
     // specialized funcs
     func handleNoteStart(noteName: String) {
-        switch noteName.characters.last! {
-        case "1":
+        switch noteName {
+        case "buttonOneImage":
             buttonOneActive = 1
-        case "2":
+        case "buttonTwoImage":
             buttonTwoActive = 1
-        case "3":
+        case "buttonThreeImage":
             buttonThreeActive = 1
         default:
-            fatalError("unexpected noteName: \(noteName)")
+            fatalError("unexpected note name: \(noteName)")
         }
     }
 
     func handleNoteEnd(noteName: String) {
-        switch noteName.characters.last! {
-        case "1":
+        switch noteName {
+        case "buttonOneImage":
             buttonOneActive = 0
-        case "2":
+        case "buttonTwoImage":
             buttonTwoActive = 0
-        case "3":
+        case "buttonThreeImage":
             buttonThreeActive = 0
         default:
-            fatalError("unexpected noteName: \(noteName)")
+            fatalError("unexpected note name: \(noteName)")
         }
     }
 


            for node in nodes {
                if let name = node.name {
                    if  name.containsString("buttonOneImage") ||
                        name.containsString("buttonTwoImage") ||
                        name.containsString("buttonThreeImage") {

                            handleNoteStart(name)

                            let spriteNode = node as! SKSpriteNode
                            spriteNode.texture = SKTexture(imageNamed: "buttonThreeImage_active")

                    }


                    /*if name.containsString("noteButton") {
                        // if it's a noteButton....

                        // vibrate
                        //   ipod touch doesn't support, so leaving this out for now
                        //
                        // AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))

                        handleNoteStart(name)
                        let spriteNode = node as! SKSpriteNode
                        let newImageName = name + "_active"
                        spriteNode.texture = SKTexture(imageNamed: newImageName)
                    }*/ if (name.containsString("topButton")) {
                        let spriteNode = node as! SKSpriteNode
                        let changeColorAction = SKAction.colorizeWithColor(minimalLightPurple, colorBlendFactor: 1.0, duration: 0)

                        spriteNode.runAction(changeColorAction) {
                            spriteNode.color = self.minimalLightPurple
                        }

                        if name == "topButtonSharp" {
                            sharpButtonActive = 1
                        } else if name == "topButtonFlat" {
                            flatButtonActive = 1
                        }
                    } else if name.containsString("flatImage") {
                        let spriteNode = node as! SKSpriteNode
                        spriteNode.texture = SKTexture(imageNamed: "flatImage_active")
                    } else if name.containsString("sharpImage") {
                        let spriteNode = node as! SKSpriteNode
                        spriteNode.texture = SKTexture(imageNamed: "sharpImage_active")
                    }

    }

    override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
        for touch in touches {
            let location = touch.locationInNode(self)

