             information.activateInfo(false)
 
             UIView.animate(withDuration: 0.3) { () -> Void in
-                let sizeBtn = CGSize(width: ((CGFloat(self.dataset.count - 1) * self.spacing) + (self.minSize * CGFloat(self.dataset.count - 1)) + self.maxSize), height: self.minSize + (2 * self.spacing))
-                self.options.frame = CGRect(x: self.origin.x, y: self.origin.y - (self.s_options_selector+sizeBtn.height), width: sizeBtn.width, height: sizeBtn.height)
+                let sizeBtn = CGSize(width: ((CGFloat(self.dataset.count - 1) * self.config.spacing) + (self.config.minSize * CGFloat(self.dataset.count - 1)) + self.config.maxSize), height: self.config.minSize + (2 * self.config.spacing))
+                self.options.frame = CGRect(origin: CGPoint(x: self.origin.x,
+                                                            y: self.origin.y - (self.config.s_options_selector + sizeBtn.height)),
+                                            size: sizeBtn)
                 self.options.layer.cornerRadius = sizeBtn.height / 2
-                var last: CGFloat = index != 0 ? self.spacing : 0
+                var last: CGFloat = index != 0 ? self.config.spacing : 0
                 for (idx, view) in self.options.subviews.enumerated() {
                     switch idx {
                     case (index-1):
-                        view.frame = CGRect(x: last, y: self.spacing, width: self.minSize, height: self.minSize)
-                        view.center.y = (self.minSize / 2) + self.spacing
-                        last += self.minSize
+                        view.frame = CGRect(x: last, y: self.config.spacing, width: self.config.minSize, height: self.config.minSize)
+                        view.center.y = (self.config.minSize / 2) + self.config.spacing
+                        last += self.config.minSize
                     case (index):
-                        view.frame = CGRect(x: last, y: -(self.maxSize / 2), width: self.maxSize, height: self.maxSize)
-                        last += self.maxSize
+                        view.frame = CGRect(x: last, y: -(self.config.maxSize / 2), width: self.config.maxSize, height: self.config.maxSize)
+                        last += self.config.maxSize
                     default:
-                        view.frame = CGRect(x: last, y: self.spacing, width: self.minSize, height: self.minSize)
-                        view.center.y = (self.minSize / 2) + self.spacing
-                        last += self.minSize + self.spacing
+                        view.frame = CGRect(x: last, y: self.config.spacing, width: self.config.minSize, height: self.config.minSize)
+                        view.center.y = (self.config.minSize / 2) + self.config.spacing
+                        last += self.config.minSize + self.config.spacing
                     }
                 }
             }

     */
    fileprivate func deActivate(_ optionIdx: Int) {
        for (i, option) in self.options.subviews.enumerated() {
            UIView.animate(withDuration: 0.2, delay: 0.05*Double(i), options: UIViewAnimationOptions.curveEaseInOut, animations: { () -> Void in
                self.information.alpha = 0
                option.alpha      = 0.3
                option.frame.size = CGSize(width: 10, height: 10)
                if optionIdx == i {
                    option.center = CGPoint(x: (CGFloat(i + 1) * self.spacing) + (self.size * CGFloat(i)) + self.size / 2, y: -self.options.frame.height + self.size / 2)
                } else {
                    option.center = CGPoint(x: (CGFloat(i + 1) * self.spacing) + (self.size * CGFloat(i)) + self.size / 2, y: self.options.frame.height + self.size / 2)
                }
            }, completion: { (finished) -> Void in
                if finished && i == (self.dataset.count / 2) {
                    UIView.animate(withDuration: 0.1, animations: { () -> Void in
                        self.options.alpha = 0
                        self.options.frame.origin.y = self.origin.y - (self.size + (2 * self.spacing))
                    }, completion: { (finished) -> Void in
                        self.active = false
                        self.bgClear.removeFromSuperview()

    open weak var delegate: JOEmojiableDelegate!
    open var dataset: [JOEmojiableOption]!

    private lazy var longTap: UILongPressGestureRecognizer = {
        return UILongPressGestureRecognizer(target: self, action: #selector(JOEmojiableBtn.longTapEvent))
    }()
    
    private lazy var singleTap: UITapGestureRecognizer = {
        return UITapGestureRecognizer(target: self, action: #selector(JOEmojiableBtn.singleTapEvent))
    }()

    var active: Bool!
    var selectedItem: Int!
