# TODO - ✔ Remove dependency on decorators - ✔ Synchronized should be a mixin - ✔ Behavior items should derive type/name - ✔ Precompile behavior traversals - ✔ Abstract physics world tick optimizations - ✔ Cache current routine for Behaved tick - ✔ Apply patches to matter.js ( https://github.com/liabru/matter-js/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Abchevalier ) - ✔ Inline traits into entity, remove Proxy - ✔ Eliminate immutable.toJS() - ✔ Track dirty entity state (entityList.tick()) - ✔ Investigate visibleEntities path - ✔ Investigate lookupEmitListeners path - ✔ Investigate visibleBoundingBoxes path - ✔ EventEmitter::emit is too hot - ✔ Entity packets - ✔ Decouple input normalization from action registry - ❌ entityList.fromJSON() - ❌ Socket WebWorker can't connect in Firefox - ✔ Don't run emitter destruction tickers on server - ❌ Investigate unrolling equalsClose - ✔ Bitshifts for on_positionChanged x/y boxing - ❌ Memoize Object.getOwnPropertyNames results per trait constructor - ✔ EE optimizations (lookupEmitListeners) - ❌ Core.fastApply, search for /\(.../ - ✔ Rename visibleBoundingBox(es)? to visibleAabb(s)? - ❌ Property.fastAccess to skip getter, this.entity.currentAnimation - ✔ Trait::isDirty should be flat - ❌ Trait params fromJS is super slow - ❌ Entity::is is slow?