Refactored OptionsGroup class for cleaner OOP model and cleaner event model