exercises 3.09 -- 3.19 OOP