simplify eventEmiter
added cache