composition over inheritance