#28 typeahead and client-side validation