use composition rather than private inheritance