object level abstraction added