added a couple of interfaces in order to make interchangeble classes and fixed up engine to work with the cchanges