     @objc optional func actionButtonDidOpen(_: UPActionButton)
     @objc optional func actionButtonWillClose(_: UPActionButton)
     @objc optional func actionButtonDidClose(_: UPActionButton)
+}
+
+public enum UPActionButtonItemsPosition {
+    case up
+    case down
 }
 
 public enum UPActionButtonTransitionType {

    public var isOpen = false
    
    /* Customization */
    public var itemSize: CGSize = CGSize(width: 30, height: 30) {
        didSet {
            items.forEach({ $0.size = itemSize })

        let path = CGMutablePath()
        path.move(to: item.center)
        if bouncing {
            var bouncingOffset: CGFloat = itemsInterSpacing
            if case .up = itemsPosition {
                bouncingOffset *= -1
            }
            if opening {
                path.addLine(to: CGPoint(x: center.x, y: center.y + bouncingOffset))
                path.addLine(to: CGPoint(x: center.x, y: center.y - (bouncingOffset / 2.0)))
