simplify by using a composite component