composition vs inheritance vs static-method