     open weak var delegate: JOEmojiableDelegate!
     open var dataset: [JOEmojiableOption]!
 
-    var longTap: UILongPressGestureRecognizer!
-    var singleTap: UITapGestureRecognizer!
-    var drag: UIPanGestureRecognizer!
+    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!

            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)
                self.options.layer.cornerRadius = sizeBtn.height / 2
                var last: CGFloat = index != 0 ? self.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
                    case (index):
                        view.frame = CGRect(x: last, y: -(self.maxSize / 2), width: self.maxSize, height: self.maxSize)
                        last += self.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
                    }
                }
            }


                self.superview?.addSubview(bgClear)

                let sizeBtn = CGSize(width: ((CGFloat(dataset.count + 1) * config.spacing) + (config.size * CGFloat(dataset.count))), height: config.size + (2 * config.spacing))
                options = UIView(frame: CGRect(x: origin.x, y: origin.y - (sizeBtn.height), width: sizeBtn.width, height: sizeBtn.height))
                options.layer.cornerRadius  = options.frame.height/2
                options.backgroundColor     = .white
