Game Engine using Inversion of control to maximize reuse of classes between project and minimize dependencies between them.