         update(defaultState)
     }
     
-    override init(frame: CGRect) {
+    override public init(frame: CGRect) {
         fatalError("init(frame:) has not been implemented. Use init(ranks:).")
     }
     
-    required init?(coder aDecoder: NSCoder) {
+    required public init?(coder aDecoder: NSCoder) {
         fatalError("init(coder:) has not been implemented. Use init(ranks:).")
     }
     

    
    // MARK: View
    
    override func updateConstraints() {
        
        let width = bounds.width
        let height = bounds.height

// Libs
import SnapKit

public struct Rank {
    public let level: Int
    public let name: String
    public let backgroundImageName: String?
}

public class BubbleRankingIndicatorView: UIView {
    
    public struct State {
        public var ranks: [Rank]
        public var activeRankLevel: Int
        public var unachievedRankBackgroundColor: UIColor
        public var rankNameFont: UIFont
        public var rankNameColor: UIColor
    }
    
    public var state: State {
        didSet {
            update(oldValue)
        }
