     
     var name: String
     fileprivate var colorMap: [Finger: UIColor]
-    fileprivate var defaultColor = UIColor.lightGray
+    fileprivate let defaultColor = UIColor.lightGray
     
     // Init with one single color - every key has the same color
-    init(named name: String, color: UIColor) {
+    init(_ name: String, color: UIColor) {
         self.name = name
         colorMap = [
             Finger(side: .left, name: .pinky) : color,

    }
    
    // Init with colors for a single hand - the other hand will use the same colors
    init(named name: String, color1: UIColor, color2: UIColor, color3: UIColor, color4: UIColor, color5: UIColor) {
        self.name = name
        colorMap = [
            Finger(side: .left, name: .pinky) : color1,

    // MARK: Color schemes
    
    static func defaultMonochrome() -> ColorScheme {
        return ColorScheme.init("Monochrome", color: UIColor.lightGray.lighter(15.0)!)
    }
    
    // Creator: Drew
    static func defaultPolychrome() -> ColorScheme {
        return ColorScheme.init("Default", colors: [0xf0adad, 0xfff6b3, 0xb8deb9, 0xa7d5fa, 0xd6a9de])
    }
    
    // Creator: Bao
    static func paper() -> ColorScheme {
        return ColorScheme.init("Paper", colors: [0xd5c0f0, 0xb1dfe0, 0xdeda8c, 0xf7c48d, 0xf0bbb4])
    }
}

extension UIColor {

    convenience init(red: Int, green: Int, blue: Int) {
        assert(red >= 0 && red <= 255, "Invalid red component")
        assert(green >= 0 && green <= 255, "Invalid green component")
        assert(blue >= 0 && blue <= 255, "Invalid blue component")
        
        self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0)
    }
    
    convenience init(hex:Int) {
        self.init(red:(hex >> 16) & 0xff, green:(hex >> 8) & 0xff, blue:hex & 0xff)
    }
    
    func lighter(_ percentage:CGFloat=30.0) -> UIColor? {
        return self.adjust( abs(percentage) )
