hw advanced OOP