Refactoring the example into separate engine files
Separating out the Engine into separate files