Engine refactoring #36, #37, #38