                         self.openAnimationDidStop()
                     }
                 }
-                
-                item.expand(animated: animated, duration: duration)
             })
-            
         }
     }
     

        for (index, item) in self.items.enumerated() {
            
            let center = self.center(forItem: item, index: index, itemsPosition: itemsPosition, opening: false)
            let duration = self.animationDuration
            var delay = 0.0
            
            switch itemsAnimationOrder {
            case .linear:
                break
            case .progressive:
                //                duration = Double(index+1) * animationDuration / Double(items.count)
                delay = Double(index) * 0.2
            case .progressiveInverse:
                //                duration = Double(items.count - index) * animationDuration / Double(items.count)
                delay = Double(items.count - (index+1)) * 0.2
            }
            
            // TODO: adjust for bounce effect
            
            DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: {
                
                let animated = self.itemsAnimationType != .none
                if animated {
                    var damping: CGFloat = 1.0
                    var velocity: CGFloat = 0.0
                    if self.itemsAnimationType == .bounce {
                        damping = 0.7
                        velocity = -5.0
                    }
                    
                    let animation = self.closeAnimations(forItem: item, to: center, type: self.itemsAnimationType)

            switch type {
            case .none: break
            case .fade:
                self.backgroundView.alpha = opening ? 1.0 : 0.0
            case .bubble:
                if opening {
                    let diameter = self.coveringBubbleDiameter(for: self.backgroundView.center)
