Refactor prototype chain, use THREE.EventDispatcher