                     
                 } else if frame.size.width > kBendableWidthThreshold {
                     
-                    
-                    switch self.panDirection {
-                        case .Right:
-                                                println("Right")
-//                            if let rightImageView = self.controlImages?[2] {
-//                                var rightImageViewFrame = self.convertRect(rightImageView.frame, fromView: self)
-//                                var center = CGPointMake(rightImageViewFrame.origin.x - rightImageViewFrame.width/2, rightImageViewFrame.origin.y - rightImageViewFrame.height/2)
-                                if let control = self.controls?[ControlPosition.ControlRight.rawValue] {
-                                    self.selectedControl = control
-                                }
-                                
-                                self.bendableCircle.state = .Translating
-                                UIView.animateWithDuration(0.2, animations: {
-                                    self.bendableCircle.frame = self.selectedControl.transformToBendableViewFrame()
-                                    }, completion: {
-                                        (value: Bool) in
-                                        self.bendableCircle.state = .Active
-                                })
-                                
-                            }
-                        case .Left:
-//                            if let leftImageView = self.controlImages?[0] {
-//                                var leftImageViewFrame = self.convertRect(leftImageView.frame, fromView: self)
-//                                var center = CGPointMake(leftImageViewFrame.origin.x - leftImageViewFrame.width/2, leftImageViewFrame.origin.y - leftImageViewFrame.height/2)
-                                if let control = self.controls?[ControlPosition.ControlRight.rawValue] {
-                                    self.selectedControl = control
-                                }
-                                
-                                self.bendableCircle.state = .Translating
-                                UIView.animateWithDuration(0.2, animations: {
-                                    self.bendableCircle.frame = frame
-                                    }, completion: {
-                                        (value: Bool) in
-                                        self.bendableCircle.state = .Active
-                                })
-                            }
-                        default: ()
+                    var nextPosition = self.selectedControl.position.next(self.panDirection)
+                    if let control = self.controls?[nextPosition.rawValue] {
+                        self.selectedControl = control
                     }
                     
-                }
-                
-                self.bendableCircle.frame = frame
-            }
+                    self.bendableCircle.state = .Translating
+                    UIView.animateWithDuration(0.2, animations: {
+                        self.bendableCircle.frame = self.selectedControl.transformToBendableViewFrame()
+                        }, completion: {
+                            (value: Bool) in
+                            self.bendableCircle.state = .Active
+                    })
+                }
+            }
+            
         } else if (recognizer.state == .Ended ||
                    recognizer.state == .Cancelled ||
                    recognizer.state == .Failed) {

                    frame.origin.x = self.bendableCircle.frame.origin.x + kTranslationRate * translation.x
                }
                
                if frame.size.width < kBendableViewSize {
                    
                        frame.size.width = kBendableViewSize

    
    func frame() -> CGRect {
        if let superview = imageView.superview {
            let frame = superview.convertRect(imageView.frame, fromView: superview)
            return frame
        }
        return CGRectZero
