     }
     
     //MARK: - Button Methods
+    /**
+     The user pressed a skip button, all the views will be skipped and the completion handler will be called with unfinished flag.
+     */
     func skipButtonPressed() {
         self.animator.removeAllBehaviors()
         self.animateTheCurrentViewToPosition(ExplanationViewPosition.RotatedLeft, completion: { () -> Void in
             self.dismissAndCallCompletionAccordinglyWithSuccess(false)
-//            self.dismissViewControllerAnimated(true, completion: {
-//                
-//                self.completion?(finishedWithSuccess: false)
-//            })
         })
     }
+    /**
+     The user pressed done button, the last view was presented and now the completion handler will be called with finished flag.
+     */
     func doneButtonPressed() {
         self.animator.removeAllBehaviors()
         self.animateTheCurrentViewToPosition(ExplanationViewPosition.RotatedLeft, completion: { () -> Void in
             self.dismissAndCallCompletionAccordinglyWithSuccess(true)
-//            self.dismissViewControllerAnimated(true, completion: {
-//                
-//                self.completion?(finishedWithSuccess: true)
-//            })
         })
     }
+    /**
+     The user pressed a decline button, all the views will be skipped and the completion handler will be called with unfinished flag.
+     */
     func declineButtonPressed() {
         self.animator.removeAllBehaviors()
         self.animateTheCurrentViewToPosition(ExplanationViewPosition.RotatedRight, completion: { () -> Void in
             self.dismissAndCallCompletionAccordinglyWithSuccess(false)
-//            self.dismissViewControllerAnimated(true, completion: {
-//                
-//                self.completion?(finishedWithSuccess: false)
-//            })
         })
     }
     
+    /**
+     The user pressed a back button which will cause the next view being loaded and presented using an animation.
+     */
     func backButtonPressed() {
         self.animator.removeAllBehaviors()
         

            
            self.currentExplanationView.transform = position.viewTransform()
            
            }) { (success) -> Void in
                completion()
        }
    }
    
    private func resetExplanationView(ExplanationView: UIView, position: ExplanationViewPosition) {
        animator.removeAllBehaviors()
        
        let center = CGPoint(x: CGRectGetWidth(view.bounds)/2, y: CGRectGetHeight(view.bounds)/2)
        ExplanationView.center = position.viewCenter(center , offsetFromCenter: offsetForExplanationView)
        ExplanationView.transform = position.viewTransform()
        
        animator.updateItemUsingCurrentState(ExplanationView)
        
        animator.addBehavior(attachmentBehavior)
        animator.addBehavior(snapBehavior)
    }

    private func dismissAndCallCompletionAccordinglyWithSuccess(success: Bool) {
        self.dismissViewControllerAnimated(true, completion: {
            

        })
        
    }
    
    /**
     The user pressed a skip button which will cause the next view being loaded and presented using an animation.
     */
    func continueButtonPressed() {
        self.animator.removeAllBehaviors()
        
        self.animateTheCurrentViewToPosition(ExplanationViewPosition.RotatedLeft, completion: { () -> Void in
            self.index += 1
            self.addBehaiviorsAndViewForIndex(self.index, position: ExplanationViewPosition.RotatedRight)
        })
    }
    
    /**
     Function that wraps a call to the `permissionActionHandler`. It is called when the location permission button is pressed and asks the `permissionActionHandler` to handle the action.
     */
    func permissionButtonLocationPressed() {
        permissionActionHandler?.permissionButtonLocationPressed()
    }
    /**
     Function that wraps a call to the `permissionActionHandler`. It is called when the calendar permission button is pressed and asks the `permissionActionHandler` to handle the action.
     */
    func permissionButtonCalendarPressed() {
        permissionActionHandler?.permissionButtonCalendarPressed()
        
    }
    /**
     Function that wraps a call to the `permissionActionHandler`. It is called when the notification permission button is pressed and asks the `permissionActionHandler` to handle the action.
     */
    func permissionButtonNotificationPressed() {
        permissionActionHandler?.permissionButtonNotificationPressed()
        
    }
    
    /**
     This method animates the current view into a given position. The animation looks like the user has performed the swipe but in reality it is a static animation. Use this method if you want to dismiss a view programatically and animated.
     
     - parameter position:   The position in which the current view should be animated to.
     - parameter completion: Completion handler that is called after the animation finished.
     */
    private func animateTheCurrentViewToPosition(position: ExplanationViewPosition, completion:(()->Void)) {
        
        //Basically we want the view to be rotated and translated, animated.
        
        let offsetToAddOrSubstract : CGFloat = (position == ExplanationViewPosition.RotatedLeft) ? -150 : 150
        
        UIView.animateWithDuration(0.7, delay: 0, usingSpringWithDamping: 1.5, initialSpringVelocity: 0, options: UIViewAnimationOptions.BeginFromCurrentState, animations: { () -> Void in
