         return ids
     }
 
+    /// A custom `UINib` to be used by `tableView`.
+    /// - note: Do not set in conjunction with `cellClass`
     public var nib: UINib? {
         didSet {
             tableView?.registerNib(nib, forCellReuseIdentifier: MentionCellIdentifier)
+        }
+    }
+
+    /// A custom `UITableViewCell` class to be used by `tableView`.
+    /// - note: Do not set in conjunction with `nib`
+    public var cellClass: MentionUserCell.Type? {
+        didSet {
+            tableView?.registerClass(cellClass, forCellReuseIdentifier: MentionCellIdentifier)
         }
     }
 

    func usersMatchingQuery(query: String, handler: MentionUserClosure)
}

public protocol MentionUserCell {
    var mentionUser: MentionUserType? { get set }
}


    }

    public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(MentionCellIdentifier, forIndexPath: indexPath) as? MentionUserCell
        let user = userNameMatches[indexPath.row]
        cell?.mentionUser = user

