dont switch abstraction levels