finalized OOP model of the program