! Rewrite Searching using typeclasses, separate from IdGeneration