     // If paircode is setup in model, and it's same to cell's paircode, it's matched. Otherwise, cell will not pick up that model to display.
     static func pairCode() -> Int?
     
-    // Define what class of model that Cell can display. It will ignore all models that type is not in list.
-    // This method is required overriding.
+    // Define what class of model that Cell can display. It will ignore all models have type not in list.
+    // This method must be implemented.
     static func acceptableModelTypes() -> [AnyClass]
     
     // Define how to map properties of model to UI.
-    // This method is required overriding.
+    // This method must be implemented.
     func configureCell(model: AnyObject)
 }
 

        return UINib(nibName: nibName, bundle: nil)
    }
    
    static func pairCode() -> Int? { return nil }
    
    static func height(model: AnyObject) -> CGFloat { return UITableViewAutomaticDimension }
}

import UIKit

public protocol LazyTableViewCellProtocol: NSObjectProtocol {
    // Optional, default is ClassName
    static func reuseIdentifier() -> String
    
    // Optional, default is ClassName
    static func nibName() -> String?
    static func nib() -> UINib?
    
    // Optional, default is `UITableViewAutomaticDimension`
    static func height(model: AnyObject) -> CGFloat
    
    // Draft behaviour
