 protocol Requestable {
     
     /**
-     Returns a request with the provided predicate & sort descriptor
+     Returns a request with the provided predicate & sort descriptor.
      
-     - parameter predicate:      request predicate
-     - parameter sortDescriptor: request sort descriptor
+     - parameter predicate:      Request predicate.
+     - parameter sortDescriptor: Request sort descriptor.
      
-     - returns: initialized request
+     - returns: Initialized request
      */
     static func with<T>(predicate predicate: NSPredicate, sortDescriptor: NSSortDescriptor)  -> Request<T>
     

     
     - parameter predicate: request predicate
     
     - returns: initialized request
     */
    static func with<T>(predicate predicate: NSPredicate)  -> Request<T>
    
    /**
     Returns a request with the provided sort descriptor
     
     - parameter sortDescriptor: request sort descriptor
     
     - returns: initialized request
     */
    static func with<T>(sortDescriptor sortDescriptor: NSSortDescriptor)  -> Request<T>
}

extension Requestable {

            .request(withPredicate: predicate)
    }
    
    static func filteredWith<T>(predicate predicate: NSPredicate)  -> Request<T> {
        return Request()
            .request(withPredicate: predicate)
    }
    
    static func filteredWith<T>(format predicateFormat: String, arguments argList: CVaListPointer) -> Request<T> {
        return Request()
            .request(withPredicate: NSPredicate(format: predicateFormat, arguments: argList))
    }
    
    static func filteredWith<T>(key: String, equalTo value: String) -> Request<T>{
        return Request()
            .request(withPredicate: NSPredicate(format: "\(key) == %@", value))
    }
    
    static func sortedWith<T>(sortDescriptor sortDescriptor: NSSortDescriptor)  -> Request<T> {
        return Request()
            .request(withSortDescriptor: sortDescriptor)
    }
    
    static func sortedWith<T>(key: String?, ascending: Bool, comparator cmptr: NSComparator) -> Request<T> {
        return Request()
            .request(withSortDescriptor: NSSortDescriptor(key: key, ascending: ascending, comparator: cmptr))
    }
    
    static func sortedWith<T>(key: String?, ascending: Bool) -> Request<T> {
        return Request()
            .request(withSortDescriptor: NSSortDescriptor(key: key, ascending: ascending))
    }
    
    static func sortedWith<T>(key: String?, ascending: Bool, selector: Selector) -> Request<T> {
        return Request()
            .request(withSortDescriptor: NSSortDescriptor(key: key, ascending: ascending, selector: selector))
    }
}



