I know singletons are bad, my old game engine used a singleton 'Game' object that handles everything from holding all data to the actual game loop. Now I'm making a new one. The problem is, to draw something in SFML you use window.draw(sprite) where window is an sf::RenderWindow. There are 2 options I see here: 1. Make a singleton Game object which every entity in the game retrieves (what I used before) 2. Make this the constructor for entities: Entity(x, y, window, view, ...etc) (this is just ridiculous and annoying) What would be the proper way to do this while keeping an Entity's constructor to just x and y? EDIT: I could try and keep track of everything I make in the main game loop, and just manually draw their sprite in the game loop, but that too seems messy, and I also want absolute full control over an entire draw function for the entity.