                 return center
             case .RoundedRect(let center, _, _):
                 return center
+            case .OvalWV(let view, _):
+                return center(view)
+            case .RectWV(let view, _):
+                return center(view)
+            case .RoundedRectWV(let view, _, _):
+                return center(view)
             }
         }
         

                return UIBezierPath(roundedRect: frameWith(center, size: CGSizeZero), cornerRadius: 0)
            case .RoundedRect(_, _, let radius):
                return UIBezierPath(roundedRect: frameWith(center, size: CGSizeZero), cornerRadius: radius)
            }
        }
        
        func frameWith(center: CGPoint, size: CGSize) -> CGRect {
            return CGRectMake(center.x - size.width / 2, center.y - size.height / 2, size.width, size.height)
        }
    }
    

        case Oval(center: CGPoint, width: CGFloat)
        case Rect(center: CGPoint, size: CGSize)
        case RoundedRect(center: CGPoint, size: CGSize, radius: CGFloat)
        case OvalWV(center: UIView, margin: CGFloat)
        case RectWV(center: UIView, margin: CGFloat)
        case RoundedRectWV(center: UIView, radius: CGFloat, margin: CGFloat)
        
        public var frame: CGRect {
            return frameWith(center, size: size)
