Refactor the Engine into its own project