more constant abstraction work