 
 
 // MARK: Class Declaration
-class SeparatorCell: UITableViewCell {
+open class SeparatorCell: UITableViewCell {
     // Required Init
-    required init?(coder aDecoder: NSCoder) {
+    public required init?(coder aDecoder: NSCoder) {
         super.init(coder: aDecoder)
         self._init()
     }
     
     // Override Init
-    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
+    public override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
         super.init(style: style, reuseIdentifier: reuseIdentifier)
         self._init()
     }
     
     // Convenience Init
-    convenience init() {
+    public convenience init() {
         self.init(style: .default, reuseIdentifier: nil)
     }
     

    private var __bottomSeparatorLineWidth: CGFloat = SeparatorCell.defaultBottomSeparatorLineWidth
    
    // Layout Overrides
    override func layoutSublayers(of layer: CALayer) {
        self._layoutSublayers(of: layer)
    }
}

// MARK: // Internal
// MARK: Interface
extension SeparatorCell {
    public typealias SeparatorInsets = (left: CGFloat, right: CGFloat)
    
    // SeparatorStyle enum
    public enum SeparatorStyle {
        case top
        case bottom
        case topAndBottom
    }
    
    // Readonly
    public static let defaultTopSeparatorLineWidth: CGFloat = 0.3
    public static let defaultBottomSeparatorLineWidth: CGFloat = 0.3
    
    // ReadWrite
    public var separatorStyle: SeparatorStyle {
        get { return self._separatorStyle }
        set { self._separatorStyle = newValue }
    }
    
    public var topSeparatorColor: UIColor {
        get { return self._topSeparatorColor }
        set { self._topSeparatorColor = newValue }
    }
    
    public var bottomSeparatorColor: UIColor {
        get { return self._bottomSeparatorColor }
        set { self._bottomSeparatorColor = newValue}
    }
    
    public var topSeparatorLineWidth: CGFloat {
        get { return self._topSeparatorLineWidth }
        set { self._topSeparatorLineWidth = newValue }
    }
    
    public var bottomSeparatorLineWidth: CGFloat {
        get { return self._bottomSeparatorLineWidth }
        set { self._bottomSeparatorLineWidth = newValue }
    }
    
    public var topSeparatorInsets: SeparatorInsets {
        get { return self._topSeparatorInsets }
        set { self._topSeparatorInsets = newValue }
    }
    
    public var bottomSeparatorInsets: SeparatorInsets {
        get { return self._bottomSeparatorInsets }
        set { self._bottomSeparatorInsets = newValue }
    }
