refactoring OO concept practice 2 & practice 3