refactored Enginer into class, with process wrapped in Option