Solution restructure
Refactoring to introduce a listener base class