whole_func_string: function list(qs, limit, token, cb) {
      token = token ? parseInt(token, 10) : 0;
      if (isNaN(token)) {
        return cb(new Error('invalid token'));
      }
      getCollection(function (err, collection) {
        if (err) { return cb(err); }
        collection.find({})
          .skip(token)
          .limit(limit)
          .toArray(function (err, results) {
            if (err) { return cb(err); }
            var hasMore =
              results.length === limit ? token + results.length : false;
            cb(null, results.map(fromMongo), hasMore);
            //cb(null, results.map(fromMongo), hasMore, results.length);
          });
      });
    }
func_code_string: function list(qs, limit, token, cb) {
      token = token ? parseInt(token, 10) : 0;
      if (isNaN(token)) {
        return cb(new Error('invalid token'));
      }
      getCollection(function (err, collection) {
        if (err) { return cb(err); }
        collection.find({})
          .skip(token)
          .limit(limit)
          .toArray(function (err, results) {
            if (err) { return cb(err); }
            var hasMore =
              results.length === limit ? token + results.length : false;
            cb(null, results.map(fromMongo), hasMore);
            //cb(null, results.map(fromMongo), hasMore, results.length);
          });
      });
    }
func_documentation_string: [START list]