search implimentation