Is this in correct order? It looks to me that if this widget is rerendered (due to `change` event), then views that were removed won't be removed from widget's DOM, but maybe `build_views()` does some magic. I would swap lines 19 and {20,21}.