             return layouts[v].flatMap { $0.origin.y + $0.size.height/2 }
         }
     }
+    
+    var view: UIView? {
+        switch self {
+        case .Parent:
+            return nil
+        case .Top(let v):
+            return v
+        case .Bottom(let v):
+            return v
+        case .VCenter(let v):
+            return v
+        }
+    }
 }
 
 public struct Viewport {

            if let superViewFrame = layouts[superview] {
                bounds = CGRect(x: 0, y: 0, width: superViewFrame.width, height: superViewFrame.height)
            }
            
            bounds = viewport.apply(bounds, layouts: layouts)
            

        let toFollowView = anchorToFollow.view
        let followerView = followerAnchor.view
        
        if(toFollowView.superview != followerView.superview) {
            print("[LayoutOps:WARNING] Follow operation will produce undefined results for views with different superview")
            print("View to follow: \(toFollowView)")
            print("Follower view: \(followerView)")
        }
        
        let anchorToFollowFrame = frameForView(toFollowView, layouts: &layouts)
        let followerAnchorFrame = frameForView(followerView, layouts: &layouts)
