 	func composeQuery(inout param: [String: AnyObject])
 }
 
-public class Query<T: ParseObject> {
-	var constraints = Constraints(className: T.className)
+public class _Query {
+	var constraints: Constraints
 	var order: String?
 	var limit: Int?
 	var includeKeys: String?
 	var includeRelations: String?
 	var skip: Int?
 	var fetchesCount = false
-	var useLocal = true
-	
-	public init(constraints: Constraint...) {
+	
+	init(className: String, constraints: Constraint...) {
+		self.constraints = Constraints(className: className)
 		self.constraints.inner.extend(constraints)
 	}
 	
-	public func get(closure: ([T], NSError?) -> Void) {
+	func getRaw(closure: ([String: AnyObject]?, NSError?) -> Void) {
+		var parameters: [String: AnyObject] = [:]
+		var _where: [String: AnyObject] = [:]
+		self.composeQuery(&_where)
+		if _where.count > 0 {
+			if let data = NSJSONSerialization.dataWithJSONObject(_where, options: nil, error: nil) {
+				parameters["where"] = NSString(data: data, encoding: NSUTF8StringEncoding)
+			}
+		}
+		if let keys = includeKeys {
+			parameters["keys"] = keys
+		}
+		if let relations = includeRelations {
+			parameters["include"] = relations
+		}
+		if let limit = limit {
+			parameters["limit"] = limit
+		}
+		if let skip = skip {
+			parameters["skip"] = skip
+		}
+		if let order = order {
+			parameters["order"] = order
+		}
+		if fetchesCount {
+			parameters["count"] = 1
+		}
+		let _path = path(constraints.className)
+		println("sending \(parameters) to \(_path)")
+		Client.request(.GET, _path, parameters, closure)
+	}
+	
+	func list(closure: ([Data], NSError?) -> Void) {
 		getRaw { (json, error) in
 			if let json = json {
 				if let array = json["results"] as? [[String: AnyObject]] {
-					closure(array.map { T(json: Data(raw: $0)) }, error)
+					closure(array.map { Data(raw: $0) }, error)
 					return
 				}
 			}

			self.writeCache(json)
			done?(jsons)
		}
	}
}


	}
	
	static func writeCache(json: [String: AnyObject]) {
		let key = "v3.\(T.className).json"
		let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
		if let root = paths.first as? NSString {
			NSJSONSerialization.dataWithJSONObject(json, options: nil, error: nil)?
