WIP: fuzzy search

works, but could use several performance optimizations