anchor.diff:      GroupListComponent(this._auth, this._api, this._element, 
                          this._router, this._rp, this._sse, this._ts) {
   
  -        this.initCurrentPage(this._rp.route, this._fetchCurrentPage);
           this._ts.title = 'Groups';
   
           // Add event listeners...
           RouteHandle rh = this._rp.route.newHandle();
  +        this._queryWatcher = new QueryWatcher(
  +            rh,
  +            ['page', 'rpp'],
  +            this._fetchCurrentPage
  +        );
   
           List<StreamSubscription> listeners = [
  -            this._sse.onGroup.listen(this.groupListener),
  -            rh.onEnter.listen((e) {
  -                this._fetchCurrentPage();
  -            }),
  +            this._sse.onGroup.listen(this._groupListener),
           ];
   
           // ...and remove event listeners when we leave this route.
  -        rh.onLeave.take(1).listen((e) {
  -            listeners.forEach((listener) => listener.cancel());
  -        });
  +        UnsubOnRouteLeave(rh, [
  +            this._sse.onGroup.listen(this._groupListener),
  +        ]);
   
           this._fetchCurrentPage();
           this._fetchSites();
  
positive.code:                 });
                  // Deleting groups affects paging of results, redirect to the final page
                  // if the page no longer exists.
                  int lastPage = (response.data['total_count']/this._resultsPerPage).ceil();
                  if (lastPage == 0) { 
                      lastPage = 1;
                  }
                  if (this.currentPage > lastPage) {
                      Uri uri = Uri.parse(window.location.toString());
                      Map queryParameters = new Map.from(uri.queryParameters);
  
  
negative.code:     templateUrl: 'packages/hgprofiler/component/group/list.html',
      useShadowDom: false
  )
  class GroupListComponent extends Object
                      implements ShadowRootAware {
  
      List<Breadcrumb> crumbs = [
  