remove an abstraction too far