 }
 
 @objc public class CTPanoramaController: UIViewController {
-
-    override public var shouldAutorotate: Bool {
-        return true
-    }
-    
-    override public var supportedInterfaceOrientations: UIInterfaceOrientationMask {
-        return .all
-    }
-    
-    override public var prefersStatusBarHidden: Bool {
-        return true
-    }
     
     public var image: UIImage?
-    public var controlMethod = CTPanaromaControlMethod.Touch
-    public var panaromaType = CTPanaromaType.Cylindirical
+    public var panaromaType = CTPanaromaType.Spherical
     public var speed = CGPoint(x: 0.005, y: 0.005)
+    
+    public var controlMethod: CTPanaromaControlMethod? {
+        didSet {
+            switchControlMethod(to: controlMethod!)
+        }
+    }
     
     private var sceneView: SCNView!
     private let cameraNode = SCNNode()

        
        scene.rootNode.addChildNode(cameraNode)
        scene.rootNode.addChildNode(geometryNode)

        sceneView.scene = scene
        sceneView.backgroundColor = UIColor.black
        
        if (controlMethod == .Touch) {
            let panGestureRec = UIPanGestureRecognizer(target: self, action: #selector(handlePan(panRec:)))
            sceneView.addGestureRecognizer(panGestureRec)
        }
        else {
            guard motionManger.isDeviceMotionAvailable else {return}

                    self.motionManger.stopDeviceMotionUpdates()
                }
            })
            sceneView.gestureRecognizers?.removeAll()
        }
        cameraNode.eulerAngles = SCNVector3Make(0, 0, 0)
    }
    
    // MARK: Event handling methods
    
    @objc private func buttonTapped() {
        if controlMethod == .Touch {
            controlMethod = .Motion
        }
        else {
            controlMethod = .Touch
        }
    }
    
    @objc private func handlePan(panRec: UIPanGestureRecognizer) {
