Refactored prototype approach, events and