full search implimentation