         rotateAnimation.keyTimes = [NSNumber(float: 0.0), NSNumber(float: 0.4), NSNumber(float: 0.5)]
         rotateAnimation.fillMode = kCAFillModeForwards
         rotateAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
-        item.layer.addAnimation(rotateAnimation, forKey: "Close")
-        
-        UIView.animateWithDuration(PuttonConstants.defaultAnimationDuration, animations: {
-            item.center = self.startButton.center
-        })
-        
-        if self.animatingIndex >= self.expandItems.count {
-            self.isAnimating = false
-            self.timer.invalidate()
-            self.timer = nil
-            self.animatingIndex = 0
-        }
+        
+        for (var i = 0; i < self.expandItems.count; i++) {
+            let item = self.expandItems[i] as! PuttonItem
+            item.layer.addAnimation(rotateAnimation, forKey: "Close")
+            
+            UIView.animateWithDuration(PuttonConstants.defaultAnimationDuration, animations: {
+                item.center = self.startButton.center
+            })
+        }
+
+        self.isAnimating = false
+        self.timer.invalidate()
+        self.timer = nil
     }
 }

    var expandRadius: CGFloat!
    var timer: NSTimer!
    var isAnimating = false
    var animatingIndex: Int = 0
    var isExpand = false {
        didSet {
            

                let selector = (self.isExpand) ? Selector("expandPuttonItems") : Selector("closePuttonItems")
                
                // Adding timer to runloop to make sure UI event won't block the timer from firing
                timer = NSTimer(timeInterval: PuttonConstants.defaultTimerInterval, target: self, selector: selector, userInfo: nil, repeats: false)
                NSRunLoop.currentRunLoop().addTimer(self.timer, forMode: NSRunLoopCommonModes)
                
                self.isAnimating = true
