anchor.diff:      // for each getter:
      classMirror.getters.forEach((getterKey, getter) {
         if (!getter.isPrivate && !getter.isStatic) {
  -        print("getter: ${getter.qualifiedName}");
  +        _log("getter: ${getter.qualifiedName}");
           var futureField = instanceMirror.getField(getterKey);
  -        print("got future field: $futureField");
  -        
  -        var onGetFutureFieldSuccess = (instanceMirrorField) {
  -          print("Got reflecteee for $getterKey: ${instanceMirrorField.reflectee}");
  -          resultMap[getterKey] = instanceMirrorField.reflectee;
  +        _log("got future field: $futureField");
  +
  +        var onGetFutureFieldError = (error) {
  +          _log("Error: $error");
  +          completer.completeError(error);
           };
  -        
  -        var onGetFutureFieldError = (error) {
  -          print("Error: $error");
  -          completer.complete(error);
  +
  +        var onGetFutureFieldSuccess = (mirrors.InstanceMirror instanceMirrorField) {
  +          Object reflectee = instanceMirrorField.reflectee;
  +          _log("Got reflectee for $getterKey: ${reflectee}");
  +          if (isPrimative(reflectee)){
  +            resultMap[getterKey] = reflectee;
  +          } else {
  +            Future<String> recursed = objectToJson(reflectee).catchError(onGetFutureFieldError);
  +            recursed.then((json) => resultMap[getterKey] = json);
  +            futuresList.add(recursed);
  +          }
           };
  -        
  +
           futureField.then(onGetFutureFieldSuccess, onError:onGetFutureFieldError);
           futuresList.add(futureField);
         }
  
positive.code:     classMirror.variables.forEach((varKey, variable) {
        if (!variable.isPrivate && !variable.isStatic) {
          var futureField = instanceMirror.getField(varKey);
          
          var onGetFutureFieldSuccess = (instanceMirrorField) {
            print("Got reflecteee for $varKey: ${instanceMirrorField.reflectee}");
            resultMap[varKey] = instanceMirrorField.reflectee;
          };
          
          var onGetFutureFieldError = (error) => completer.complete(error);
          
          futureField.then(onGetFutureFieldSuccess, onError:onGetFutureFieldError);
          futuresList.add(futureField);
  
negative.code: Future objectToSerializable(Object object, [key=null]) {
    var completer = new Completer();
      
    if (isPrimative(object)) {
      _serializeNative(object, completer, key);
    }
    else if (object is Map) {
  