     - returns: Self: The first entity that matches the optional predicate.
     */
     static public func findFirst(predicate: NSPredicate?, context: NSManagedObjectContext) -> Self? {
-        let fetchRequest = NSFetchRequest(entityName: entityName)
+        let fetchRequest = NSFetchRequest()
+        fetchRequest.entity = entityInContext(context)
         fetchRequest.predicate = predicate
 
         do {

     - parameter inContext: The NSManagedObjectContext to remove the Entities from.
     */
    static public func removeAllExcept(toKeep: [Self], inContext context: NSManagedObjectContext) throws {
        let fetchRequest = NSFetchRequest(entityName: entityName)
        fetchRequest.predicate = NSPredicate(format: "NOT (self IN %@)", toKeep)
        try removeAllObjectsReturnedByRequest(fetchRequest, inContext: context)
    }

     - returns: [Self]: The array of matching entities.
     */
    static public func allInContext(context: NSManagedObjectContext, sortDescriptors: [NSSortDescriptor]? = nil) -> [Self] {
        let fetchRequest = NSFetchRequest()
        fetchRequest.entity = entityInContext(context)
        fetchRequest.sortDescriptors = sortDescriptors

        do {
