Changed overall abstraction