fixed abstraction