implements Engine class