                 alphaAnimation.toValue = 1
                 alphaAnimation.name = "alpha"
                 self.reblogView.pop_addAnimation(alphaAnimation, forKey: alphaAnimation.name)
+                
+                for button in [ self.reblogButton, self.queueButton, self.scheduleButton ] {
+                    var opacityAnimation = POPBasicAnimation(propertyNamed: kPOPLayerOpacity)
+                    opacityAnimation.fromValue = 0
+                    opacityAnimation.toValue = 1
+                    opacityAnimation.name = "opacity"
+                    opacityAnimation.beginTime = CACurrentMediaTime() + 0.4
+                    
+                    button.layer.pop_addAnimation(opacityAnimation, forKey: opacityAnimation.name)
+                }
+
+                let center = CGPoint(x: CGRectGetMaxX(finalFrame) - 10, y: self.insets.top + self.radius + 15)
+                let distanceFromTop = center.y
+                let distanceFromBottom = UIScreen.mainScreen().bounds.size.height - center.y
+                var angleFromTop: CGFloat = CGFloat(-M_PI_2) / 3
+                var angleFromBottom: CGFloat = CGFloat(-M_PI_2) / 3
+                
+                if distanceFromTop < self.radius {
+                    angleFromTop = acos(distanceFromTop / self.radius)
+                }
+                
+                if distanceFromBottom < self.radius {
+                    angleFromBottom = acos(distanceFromBottom / self.radius)
+                }
+                
+                let startAngle = CGFloat(M_PI_2) + angleFromTop
+                let endAngle = CGFloat(M_PI + M_PI_2) - angleFromBottom
+                let initialAngle = startAngle + (endAngle - startAngle) / 6
+                let angleInterval = (endAngle - startAngle) / 3
+                
+                for (index, button) in enumerate([ self.reblogButton, self.queueButton, self.scheduleButton ]) {
+                    let angleOffset = angleInterval * CGFloat(index)
+                    let angle = initialAngle + angleOffset
+                    let x = center.x + self.radius * cos(angle)
+                    let y = center.y - self.radius * sin(angle)
+                    let positionAnimation = POPSpringAnimation(propertyNamed: kPOPLayerPosition)
+
+                    positionAnimation.fromValue = NSValue(CGPoint: center)
+                    positionAnimation.toValue = NSValue(CGPoint: CGPoint(x: x, y: y))
+                    positionAnimation.springBounciness = 20
+                    positionAnimation.name = "move"
+                    positionAnimation.beginTime = CACurrentMediaTime() + 0.1
+
+                    button.layer.position = center
+                    button.layer.pop_addAnimation(positionAnimation, forKey: positionAnimation.name)
+                }
             }
         }
     }

            make.centerY.equalTo(self.backgroundView.snp_top)
            make.size.equalTo(CGSize(width: 20, height: 20))
        }
    }

    override func viewWillAppear(animated: Bool) {

    private var backgroundView: UIView!
    private var textView: UITextView!
    private var cancelButton: VBFPopFlatButton!
    private var reblogButton: UIButton!
    private var queueButton: UIButton!
    private var scheduleButton: UIButton!

    override init() {
        super.init()
