OOP Re design