added Engine class