for OOP Term Project