code: function Device(Connection) {
    var self = this;
  
    // call super class
    EventEmitter2.call(this, {
      wildcard: true,
      delimiter: ':',
      maxListeners: 1000 // default would be 10!
    });
  
    if (this.log) {
      this.log = _.wrap(this.log, function(func, msg) {
        func(self.constructor.name + ': ' + msg);
      });
    } else if (Device.prototype.log) {
      Device.prototype.log = _.wrap(Device.prototype.log, function(func, msg) {
        func(self.constructor.name + ': ' + msg);
      });
      this.log = Device.prototype.log;
    } else {
      var debug = require('debug')(this.constructor.name);
      this.log = function(msg) {
        debug(msg);
      };
    }
  
    this.id = uuid();
    this.Connection = Connection;
  
    this.attributes = { id: this.id };
  
    this.on('disconnect', function() {
      self.connection = null;
    });
  }
docs: Device represents your physical device.
  @param {Object} Connection The constructor function of the connection.