listview.js: less spaghetti, more jenga