add search feature
add tests for search feature
Merge branch 'search'