     }
     
     override func perform() {
+        
+        if OHCircleSegue.isAnimating {
+            return
+        }
         
         if OHCircleSegue.stack.peek() !== destinationViewController {
             OHCircleSegue.stack.push(sourceViewController)

    
    // MARK: Animation delegate
    
    override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
        if !shouldUnwind {
            sourceViewController.presentViewController(destinationViewController, animated: false, completion: nil)
        } else {

        
        // TODO: Clean up implementation ^
        
        //print("h1: \(h1) hyp: \(hyp) rw: \(rw) rh: \(rh) width: \(width) height: \(height)")
        
        // The two circle sizes we will animate to/from
        let path1 = UIBezierPath(ovalInRect: CGRectZero).CGPath
