Completed OOP exercise