 
     - parameter view:	The view to be removed.
     */
-    public func remove<T>(subview: T) {
+    public func remove<T>(subview: T?) {
         if let v = subview as? UIView {
             v.removeFromSuperview()
-        }
-        else if let v = subview as? C4View {
+        } else if let v = subview as? C4View {
             v.view.removeFromSuperview()
+        } else {
+            fatalError("Can't remove subview of class `\(subview.dynamicType)`")
         }
     }
     

    When working with C4, use this method to add views because it handles the addition of both UIView and C4View.
    - parameter view:	The view to be added.
    */
    public func add<T>(subview: T) {
        if let v = subview as? UIView {
            self.addSubview(v)
        } else if let v = subview as? C4View {
            self.addSubview(v.view)
        }
    }
    

    
    - parameter view:	The view to be removed.
    */
    public func remove<T>(subview: T?) {
        if let v = subview as? UIView {
            v.removeFromSuperview()
        } else if let v = subview as? C4View {
            v.view.removeFromSuperview()
        } else {
            fatalError("Can't remove subview of class `\(subview.dynamicType)`")
        }
    }

