     ///   - toCenter: The point you want to animate the view to
     ///   - options: Animation options like curveEaseIn
     ///   - isIn: Whether the animation is a in or out. Basically at end of animation should the view be hidden or displayed.
-    public func animate(for duration: TimeInterval, fromCenter: CGPoint, toCenter: CGPoint, options: UIViewAnimationOptions, isIn: Bool) {
+    public func animate(for duration: TimeInterval, fromCenter: CGPoint, toCenter: CGPoint, options: UIViewAnimationOptions, isIn: Bool, completion: ((Bool) -> Swift.Void)? = nil) {
         let originalCenter = self.center;
         self.center = fromCenter
         self.alpha = 1

        }, completion: { (completed) in
            self.isHidden = !isIn
            self.center = originalCenter
        })
    }
    
    
    func perform(animation: SimpleAnimation, withState state: SimpleAnimationState) {
        
        // Since we are animating this view make sure it
        // is NOT hidden, or user won't be able to view animation.

        let isIn = state == .in
        // TODO: Possibly allow this to be set from delegate.
        let animationOptions = (isIn ? UIViewAnimationOptions.curveEaseIn : UIViewAnimationOptions.curveEaseOut)

        // Screen Dimensions
        let screenWidth = UIScreen.main.bounds.width
        let screenHeight = UIScreen.main.bounds.height
