Starting Idea
The idea was to create a videogame engine that had to be independent of the games that it runs. The game itself is a DLL. Once the engine builds itself up, starting the libraries and creating the singletons, the DLL is dinamicly charged so the programmer that uses our engine doesn't have to worry about doing it. With this idea in mind we had to be very careful to develop the engine so there is no dependencies between game and engine.