use defrecord so we can invoke searchers