choose between composition and inheritance