anchor.diff:          credentials['googleDriveRootFolder'] = rootFolderDriveId;
           CartSystem.instance.googleDriveRootFolder = rootFolderDriveId;
           CartSystem.instance.credentials = credentials;
  -        return (new File(CartSystem.instance.oauth['web']['credentialsFilePath'])).writeAsString(decoder.convert(credentials));
  +        return PinUtility.writeJsonFile(CartSystem.instance.oauth['web']['credentialsFilePath'], credentials, withIndent: true);
         } else {
           // just pass the result to next step
           return new Future.value(_);
  
positive.code:         CartConst.SESSION_EXPIRES_KEY: expires.millisecondsSinceEpoch
      };
      CartSystem.instance.session = session;
      return (new File(CartConst.CONFIG_SESSION_PATH)).writeAsString(decoder.convert(session));
    }
  
    static Future<File> _removeSessionToken(HttpContext ctx) {
      _setCookie(ctx, CartConst.SESSION_TOKEN_KEY, '');
      CartSystem.instance.session = {};
      return (new File(CartConst.CONFIG_SESSION_PATH)).writeAsString(JSON.encode({})).catchError((e, trace) {
        PinUtility.handleError(e, trace);
      });
    }
  
    static void _setCookie(HttpContext ctx, String name, String value, {DateTime expires: null}) {
  
negative.code: 
    static Future<File> _updateSessionToken(HttpContext ctx) {
      String token = PinUtility.uuid();
  
      var expires = new DateTime.now();
      expires = expires.add(new Duration(seconds: CartSystem.instance.setting['cookieLive']));
  