implement incremental search