implimented typeahead