 
     public func replaceRange<C : CollectionType where C.Generator.Element == Section>(subRange: Range<Int>, with newElements: C) {
         for (var i = subRange.startIndex; i < subRange.endIndex; i++) {
-            if let section = kvoWrapper.formSections.objectAtIndex(i) as? Section {
+            if let section = kvoWrapper.sections.objectAtIndex(i) as? Section {
                 section.willBeRemovedFromForm()
                 kvoWrapper._allSections.removeAtIndex(kvoWrapper._allSections.indexOf(section)!)
             }
         }
-        kvoWrapper.formSections.replaceObjectsInRange(NSMakeRange(subRange.startIndex, subRange.endIndex - subRange.startIndex), withObjectsFromArray: newElements.map { $0 })
+        kvoWrapper.sections.replaceObjectsInRange(NSMakeRange(subRange.startIndex, subRange.endIndex - subRange.startIndex), withObjectsFromArray: newElements.map { $0 })
         for section in newElements{
             section.wasAddedToForm(self)
         }

        if var index = kvoWrapper._allRows.indexOf(row){
            while (formIndex == NSNotFound && index > 0){
                let previous = kvoWrapper._allRows[--index]
                formIndex = kvoWrapper.formRows.indexOfObject(previous)
            }
            if formIndex == NSNotFound{
                kvoWrapper.formRows.insertObject(row, atIndex: 0)
            }
            else{
                kvoWrapper.formRows.insertObject(row, atIndex: formIndex+1)
            }
        }
    }
}


// MARK: FormRow

internal protocol Disableable : Taggable {
    func evaluateDisabled()

    }
    
    public func hideRow(row: BaseRow){
        kvoWrapper.rows.removeObject(row)
    }
    
    public func showRow(row: BaseRow){
        if kvoWrapper.rows.containsObject(row){
            return
        }
        
