class Allegro {}; class Input { private: Allegro allegro1 }; class Graphics { private: Allegro allegro2 }; class Game { private: Input keyBoardinput; Graphics Gamegraphics; }; In the input I need access to Allegro functions related to the user keyboard input. In the Graphics class,I want only functions that will enable me to draw things on the screen, like shapes etc. However the Game class also needs access to Input and Graphics functions while the game is playing.Any ideas on how I can improve the design. I know I can remove the Graphics and Input classes and have all the Allegro functions inside Game class, because what I want to do is to separate implementation and logic and to also avoid long classes that do too many things.