     case Bottom(UIView?)
     case VCenter(UIView?)
     
-    func insetValue(layouts:[UIView: CGRect]) -> CGFloat {
+    func anchorValue(layouts:[UIView: CGRect]) -> CGFloat? {
         switch self {
         case .Parent:
-            return 0
+            return nil
         case .Top(let v):
             return v.flatMap { layouts[$0]?.origin.y } ?? 0
         case .Bottom(let v):

    case HCenter(UIView?)
    case Right(UIView?)
    
    func insetValue(layouts:[UIView: CGRect]) -> CGFloat {
        switch self {
        case .Parent:
            return 0
        case .Left(let v):
            return v.flatMap { layouts[$0]?.origin.x } ?? 0
        case .Right(let v):

    }
    
    func apply(bounds: CGRect, layouts:[UIView: CGRect]) -> CGRect {
        let left = leftAnchor.anchorValue(layouts) ?? bounds.origin.x
        let top = topAnchor.anchorValue(layouts) ?? bounds.origin.y
        let right = rightAnchor.anchorValue(layouts) ?? bounds.maxX
        let bottom = bottomAnchor.anchorValue(layouts) ?? bounds.maxY
        
        return CGRect(x: left, y: top, width: right - left, height: bottom - top)
    }
}

