removed abstraction