started abstraction dirtywork