added cancel() and search()