         }
         return nil
     }
+    
+    static private func defaultEmojis() -> [[String]] {
+        if let filePath = ISEmojiView.pathOfResourceInBundle(filename: "ISEmojiList", filetype: "plist") {
+            if let sections = NSDictionary(contentsOfFile: filePath) as? [String:[String]] {
+                var emojiList: [[String]] = []
+                for sectionName in ["People","Nature","Objects","Places","Symbols"] {
+                    emojiList.append(sections[sectionName]!)
+                }
+                return emojiList
+            }
+        }
+        return []
+    }
 }
 
 /// the emoji cell in the grid

        button.tintColor = .lightGray
        return button
    }()
    private var emojis: [[String]] = {
        if let filePath = ISEmojiView.pathOfResourceInBundle(filename: "ISEmojiList", filetype: "plist") {
            if let sections = NSDictionary(contentsOfFile: filePath) as? [String:[String]] {
                var emojiList: [[String]] = []
                for sectionName in ["People","Nature","Objects","Places","Symbols"] {
                    emojiList.append(sections[sectionName]!)
                }
                return emojiList
            }
        }
        return []
    }()
    fileprivate let emojiPopView = ISEmojiPopView()
    
    override init(frame: CGRect) {
        super.init(frame: frame)


    private func setupUI() {
        frame = defaultFrame
        
        // Default emojis
        if emojis == nil {
            self.emojis = ISEmojiView.defaultEmojis()
        }
        
        // ScrollView
        collectionView.frame = self.bounds
