added abstraction methods and changed name