more robust way to do the search (update thread included in __call__)