inherit from EventEmitter