             break
             
         }
-        
-        update(state)
     }
     
     func update(state: State) {
         switch state {
-        case .Idle, .Delegating, .Snapped:
+        case .Idle, .Delegating:
+            snapUI.state = .Show(stage.getSnapPoints())
+            break
+        case .Snapped(_, let start,_):
+            snapUI.state = .Active(start, stage.getSnapPoints())
             break
         case .Pressed(let start, let form, let node, let target):
             let destination : protocol<RuntimeInitialDestination, Labeled>

                let offset = start.position - targetPosition
                let delta = targetPosition - start.position
                destination = FixSizeDestination(from: start.runtimePoint, delta: delta)
            case .Snap(_, let snapPoint, _):
                destination = RelativeDestination(from: start.runtimePoint, to: snapPoint.runtimePoint)
            }
            
            node.replaceWith(CreateFormInstruction(form: form, destination: destination))

        case Pressed(startPoint: SnapPoint, creating: Form, instruction: InstructionNode, target: Target)
    }
    
    var state : State = .Idle {
        didSet {
            update(state)
        }
    }
    let stage : Stage
    let snapUI : SnapUI
    
