Add change listener; refactor name to key and add search method