had to scale back abstraction on search