abstraction changes