added abstraction