         })
         
     }
+    
+    /**
+     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.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

            
            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: {
            

    }
    
    //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)
        })
    }
    /**
     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)
        })
    }
    /**
     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)
        })
    }
    
    /**
     The user pressed a back button which will cause the next view being loaded and presented using an animation.
     */
    func backButtonPressed() {
        self.animator.removeAllBehaviors()
        
