         }
     }
     
-    public init() {
+    public struct VM {
+        public let minimumValue: Double
+        public let maximumValue: Double
+        
+        public init(minimumValue: Double, maximumValue: Double) {
+            self.minimumValue = minimumValue
+            self.maximumValue = maximumValue
+        }
+    }
+    
+    public init(configuration: Configuration) {
         super.init(frame: .zero)
+        
+        trackTintColor = configuration.trackTintColor
+        trackHighlightTintColor = configuration.trackHighlightTintColor
+        thumbTintColor = configuration.thumbTintColor
+        curvaceousness = configuration.curvaceousness
+        
         trackLayer.rangeSlider = self
         trackLayer.contentsScale = UIScreen.main.scale
         layer.addSublayer(trackLayer)

    }
    
    public func configureFor(viewModel: VM) {
        minimumValue = viewModel.values.lower
        maximumValue = viewModel.values.upper
        lowerValue = viewModel.values.lower
        upperValue = viewModel.values.upper
        trackTintColor = viewModel.trackTintColor
        trackHighlightTintColor = viewModel.trackHighlightTintColor
        thumbTintColor = viewModel.thumbTintColor
        curvaceousness = viewModel.curvaceousness
    }
    
    override public var intrinsicContentSize: CGSize {

        didSet { updateLayerFrames() }
    }
    
    private var maximumValue: Double = 10.0 {
        didSet { updateLayerFrames() }
    }
    
