addSearchListener now returns a boolean: duplicates are not added
cleanup
implemented basic parallel search