client-side search works, but I am finding out a lot of stuff I will have to refactor at some point