Alright, I get it now. But what should I do about objects that don't belong anywhere? Let's say the inputManager. It needs to be referenced in completely unrelated parts of the code such as the menu state, game loop, and player. None of these classes are related, but I still need to pass the inputManager to them. Or a logger, it needs to be in virtually every class, but passing around a single pointer seems unneeded.