Cleaned up interfaces to removed endOfWork remains and make functions virtual pure when it was possible