docs: function() {
    if (!fhStats) {
      fhStats = fhs.FHStats({host: stats_host, port: stats_port, enabled: stats_enabled});
    }
  
    function formatStatsName(stat, apiStats) {
      var statsType = (apiStats) ? "api" : "app";
      return appname + '_' + statsType + '_' + stat;
    }
  
    function inc(stat, apiStats, cb) {
      if ((typeof apiStats === "function") && (!cb)) {
        cb = apiStats;
        apiStats = undefined;
      }
  
      fhStats.inc(formatStatsName(stat, apiStats), function(err) {
        if (err) {
          console.error("Error %s", err);
        }
        if (cb) {
          cb(err);
        }
      });
    }
  
    function dec(stat, apiStats, cb) {
      if ((typeof apiStats === "function") && (!cb)) {
        cb = apiStats;
        apiStats = undefined;
      }
  
      fhStats.dec(formatStatsName(stat, apiStats), function(err) {
        if (err) {
          console.error("Error %s", err);
        }
        if (cb) {
          cb(err);
        }
      });
    }
  
    function timing(stat, time, apiStats, cb) {
      if ((typeof apiStats === "function") && (!cb)) {
        cb = apiStats;
        apiStats = undefined;
      }
  
      fhStats.timing(formatStatsName(stat, apiStats), time, function(err) {
        if (err) {
          console.error("Error %s", err);
        }
        if (cb) {
          cb(err);
        }
      });
    }
  
    function gauge(stat, value, apiStats, cb) {
      if ((typeof apiStats === "function") && (!cb)) {
        cb = apiStats;
        apiStats = undefined;
      }
  
      fhStats.gauge(formatStatsName(stat, apiStats), value, function(err) {
        if (err) {
          console.error("Error %s", err);
        }
        if (cb) {
          cb(err);
        }
      });
    }
  
    return {
      inc: inc,
      dec: dec,
      timing: timing,
      gauge: gauge
    };
  }