     /**
     Returns the number of objects in the specified section
     
-    - parameter section: the section index
+    - parameter section: the section index. Using an index outside the valid range will throw an exception.
     - returns: the number of objects in the specified section
     */
     public func numberOfObjectsInSection(section: Int) -> Int {
         
-        return self.fetchedResultsController.sections?[section].numberOfObjects ?? 0
+        return self.sectionInfoAtIndex(section).numberOfObjects
+    }
+    
+    /**
+    Returns the number of objects in the specified section, or `nil` if out of bounds.
+    
+    - parameter section: the section index. Using an index outside the valid range will return `nil`.
+    - returns: the number of objects in the specified section
+    */
+    public func numberOfObjectsInSection(safeSectionIndex section: Int) -> Int? {
+        
+        return self.sectionInfoAtIndex(safeSectionIndex: section)?.numberOfObjects
     }
     
     /**
     Returns the `NSFetchedResultsSectionInfo` for the specified section
     
-    - parameter section: the section index
+    - parameter section: the section index. Using an index outside the valid range will throw an exception.
     - returns: the `NSFetchedResultsSectionInfo` for the specified section
     */
     public func sectionInfoAtIndex(section: Int) -> NSFetchedResultsSectionInfo {
         
         return self.fetchedResultsController.sections![section]
+    }
+    
+    /**
+    Returns the `NSFetchedResultsSectionInfo` for the specified section, or `nil` if out of bounds.
+    
+    - parameter section: the section index. Using an index outside the valid range will return `nil`.
+    - returns: the `NSFetchedResultsSectionInfo` for the specified section, or `nil` if the section index is out of bounds.
+    */
+    public func sectionInfoAtIndex(safeSectionIndex section: Int) -> NSFetchedResultsSectionInfo? {
+        
+        guard let sections = self.fetchedResultsController.sections
+            where section < sections.count else {
+                
+                return nil
+        }
+        
+        return sections[section]
     }
     
     /**

    }
    
    /**
    Returns all objects in all sections
    
    - returns: all objects in all sections

    // MARK: Public
    
    /**
    Returns the object at the given index within the first section. This subscript indexer is typically used for `ListMonitor`s created with `monitorList(_:)`.
    
    - parameter index: the index of the object. Using an index above the valid range will throw an exception.
    - returns: the `NSManagedObject` at the specified index
