 	}
 	
 	public func limit(limit: Int) -> Self {
-		self.limit = limit
+		_limit = limit
 		parameters["limit"] = limit
 		return self
 	}
 	
+	var useLocal = true
+	
+	public func local(local: Bool) -> Self {
+		useLocal = local
+		return self
+	}
+	
 	public func getRaw(closure: (JSON, NSError?) -> Void) {
-		if self.object.search.searchLocal(self, closure: closure) {
-			return
+		if useLocal {
+			if self.object.search.searchLocal(self, closure: closure) {
+				return
+			}
 		}
 		
 		let whereExp = constraints.whereClause()

			param[key] = ["$regex": match.pattern, "$options": options]
		case .Or(let left, let right):
			param["$or"] = [left.whereClause(), right.whereClause()]
		case .In(let left, let right):
			param["$in"] = right.map({ $0.object})
		case .NotIn(let left, let right):
			param["$nin"] = right.map({ $0.object})
		}
	}
}

	}
	
	func searchLocal<T: ParseObject>(query: Query<T>, closure: (JSON, NSError?) -> Void) -> Bool {
		if let cache = self.memcache {
			dispatch_barrier_async(local_search_queue) {
				query.constraints.replaceSubQueries()
				var results: [JSON] = []
				var count = 0
				for object in cache {
					if query.constraints.match(object) {
						count++
						if !query.fetchesCount {
							results.append(object)
							//TOOD
						}
					}
				}
