         core.fire(command: RemoveObject(at: ref))
     }
     
-    func getObject<T>(at objectRef: DatabaseReference, core: Core<T>, completion: @escaping (_ objectJSON: JSONObject?) -> Void) {
+    func getObject<T>(at objectRef: DatabaseQuery, core: Core<T>, completion: @escaping (_ objectJSON: JSONObject?) -> Void) {
         core.fire(command: GetObject(at: objectRef, completion: completion))
     }
     


private struct GetObject<T: State>: Command {
    
    var ref: DatabaseReference
    var completion: ((JSONObject?) -> Void)
    
    init(at ref: DatabaseReference, completion: @escaping ((JSONObject?) -> Void)) {
        self.ref = ref
        self.completion = completion
    }
    
    func execute(state: T, core: Core<T>) {
        ref.observeSingleEvent(of: .value) { snapshot in
            self.completion(snapshot.jsonValue)
        }
    }

    func updateObject<T>(at ref: DatabaseReference, parameters: JSONObject, core: Core<T>)
    func updateObjectDirectly<T>(at ref: DatabaseReference, parameters: JSONObject, core: Core<T>)
    func removeObject<T>(at ref: DatabaseReference, core: Core<T>)
    func getObject<T>(at objectQuery: DatabaseQuery, core: Core<T>, completion: @escaping (_ objectJSON: JSONObject?) -> Void)
    func observeObject<T>(at objectRef: DatabaseReference, core: Core<T>, _ completion: @escaping (_ objectJSON: JSONObject?) -> Void)
    
    func stopObservingObject<T>(at objectRef: DatabaseReference, core: Core<T>)
