     optional func animatorWillStartDismissal(animator: GuillotineTransitionAnimation)
 }
 
-class GuillotineTransitionAnimation: NSObject {
-	
-    enum Mode { case Presentation, Dismissal }
+public class GuillotineTransitionAnimation: NSObject {
+	
+    public enum Mode { case Presentation, Dismissal }
     
     //MARK: - Public properties
-    weak var animationDelegate: GuillotineAnimationDelegate?
-    var mode: Mode = .Presentation
-    var supportView: UIView?
-    var presentButton: UIView?
-    var duration = 0.6
+    public weak var animationDelegate: GuillotineAnimationDelegate?
+    public var mode: Mode = .Presentation
+    public var supportView: UIView?
+    public var presentButton: UIView?
+    public var duration = 0.6
     
     //MARK: - Private properties
     private var chromeView: UIView?

//MARK: - UIDynamicAnimatorDelegate protocol implementation
extension GuillotineTransitionAnimation: UIDynamicAnimatorDelegate {
	
    func dynamicAnimatorDidPause(animator: UIDynamicAnimator) {
        if self.mode == .Presentation {
            self.animator.removeAllBehaviors()
            menu.view.transform = CGAffineTransformIdentity

        let senderRect = supportView!.convertRect(presentButton!.frame, toView: nil)
        containerMenuButton?.frame = senderRect
    }

    //MARK: - Observer
    override public func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
        if context == myContext {
            setupContainerMenuButtonFrameAndTopOffset()
        } else {
