Implemented open/close principle