implemented EngineInterface