model = db model.searchTerms = {'cat','cookie','catastrophe'} class view(mvc.views): def home(doc, loading, suggestionList): if loading: doc.body.searchBox = Input(type = 'text') doc.body.suggestions = Ol(join(map(Li,suggestionList))) class control(mvc.controls): def home(doc): def updateSuggestions(searchBoxValue=doc.body.searchBox.value): if searchBoxValue == '': doc.update(suggestionList=model.searchTerms) else: doc.update(suggestionList=Query(model.searchTerms,searchBoxValue)) doc.load = updateSuggestions doc.body.searchBox.keypress = updateSuggestions doc.updateOnModelChanges(model.searchTerms, updateSuggestions) #or maybe something like: class control(mvc.controls): def home(doc): doc.load = doc.update(suggestionList=model.searchTerms) doc.body.searchBox.keypress = doc.update(suggestionList=Query(model.searchTerms,doc.body.searchBox.value)) doc.watchForDataChanges(model.searchTerms, doc.lastState) #curious for any level of repetition it is useful to eliminate by better OO / structuring / message passing #really would like to have the most agile web development process