reducing cyclomatic complexity of EventEngine.removeListener
adding options argument to EventEngine.trigger for validating arguments passed to handlers. adding custom error for when that fails
adding abstract/observable class