Implement Typeahead feature
(merged from typeahead branch)