Global Event Systems & Data Observers
Legacy codebases relied heavily on static access patterns, causing hidden dependencies and initialization order problems.
Solution
I introduced a manager-based event system combined with data observers. Events were instantiated on demand, decoupling publishers and listeners and allowing systems to react when dependencies became available.
Outcome
Responsibilities were clearly separated, debugging became easier through centralized logging, and feature development accelerated.

Trade-Off
The system was not thread-safe, requiring discipline when used alongside asynchronous tasks.
