using compositon instead of inheritance