docs: function HumixSense(conf) {
  
  
      if (!(this instanceof HumixSense)) {
          return new HumixSense(conf);
      }
  
      if (!conf) {
          // looking for default config
          conf = require('./config.js');
  
          // if default config doesn't exist, abort.
          if (!conf) {
              console.error('default config does not exist.');
              process.exit(1);
          }
      }
  
      var self = this;
      self.config = conf;
  
  
      // setup logs
  
      log = humixLogger.createLogger(conf.moduleName, {filename: conf.log.filename,
                                                       fileLevel: conf.log.fileLevel,
                                                       consoleLevel: conf.log.consoleLevel});
      console.log("creating logger, consolelevel:"+conf.log.consoleLevel);
      log.info('creating HumixSense communication');
  
  
      var natsIP = conf.natsIP || 'localhost';
      var natsPort = conf.natsPort || '4222';
      nats = require ('nats').connect('nats://'+natsIP+':'+natsPort);
  
      self.module = null;;
  
  
  
      log.info('using config: ' + JSON.stringify(self.config));
  
      EventEmitter.call(this);
  
      // register module to humix sense controller
  
      nats.request('humix.sense.mgmt.register', JSON.stringify(self.config), function () {
  
          log.info('module registration completed');
  
          self.module = new HumixSenseModule(self.config, log);
  
          self.emit('connection', self.module);
      });
  
  
      nats.subscribe('humix.sense.mgmt.' + self.config.moduleName + '.start', function (request, replyTo) {
  
          log.debug('received start event');
  
          self.emit('start');
  
      });
  
  
      nats.subscribe('humix.sense.mgmt.' + self.config.moduleName + '.stop', function (request, replyTo) {
  
          log.debug('received stop event');
  
          self.emit('stop');
  
          // no hard stop here. Module should handle this gracefully
          // process.exit(1);
      });
  
      // subscribe module health check status with PING / PONG
      nats.subscribe('humix.sense.mgmt.' + self.config.moduleName + '.ping', function (request, replyto) {
          nats.publish(replyto, 'humix.sense.mgmt.' + self.config.moduleName + '.pong');
      })
  }