prefer composition over inheritance