 //
 import Foundation
 
+
+public protocol InheritableProperty
+{
+    var useInitial : Bool {get}
+    var useInherited : Bool {get}
+    var useNormal : Bool {get}
+}
+
 public  enum StyleUnit
 {
     case pixel
     case percent
     case em
     case point
-    
+    case centimeter
 }
 
 public  enum StyleProperty

                return lhsBool == rhsBool
            case (.array(let lhsArray), .array(let rhsArray)):
                return lhsArray == rhsArray
            default:
                return false
        }

    case number(Double)
    case colour(Colour)
    case boolean(Bool)
    
    // half of any graphics library is dealing with drawing text
    case fontStyle(FontStyle)
    case fontVariant(FontVariant)
    case fontFamilies([FontFamily])
    case fontWeight(FontWeight)
    case fontStretch(FontStretch)
    case fontDecorations([TextDecoration])
    case lineHeight(LineHeight)
    case fontSize(FontSize)
    
    indirect case array([StyleProperty])
    
    // remember to update Equatable extension below
}

public struct GraphicStyle
{
    public let key: String
    public let value: StyleProperty
    public let important: Bool
    
    public init(key: String, value: StyleProperty, important: Bool = false)
    {
