diff --git a/static_src/elements/help/mr-cue/cue-helpers.js b/static_src/elements/help/mr-cue/cue-helpers.js
index 4aa30d7..0d0a65e 100644
--- a/static_src/elements/help/mr-cue/cue-helpers.js
+++ b/static_src/elements/help/mr-cue/cue-helpers.js
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
diff --git a/static_src/elements/help/mr-cue/cue-helpers.test.js b/static_src/elements/help/mr-cue/cue-helpers.test.js
index 3bc084a..c8d34bf 100644
--- a/static_src/elements/help/mr-cue/cue-helpers.test.js
+++ b/static_src/elements/help/mr-cue/cue-helpers.test.js
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
diff --git a/static_src/elements/help/mr-cue/mr-cue.js b/static_src/elements/help/mr-cue/mr-cue.js
index 5c39d2b..3a27faa 100644
--- a/static_src/elements/help/mr-cue/mr-cue.js
+++ b/static_src/elements/help/mr-cue/mr-cue.js
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
diff --git a/static_src/elements/help/mr-cue/mr-cue.test.js b/static_src/elements/help/mr-cue/mr-cue.test.js
index 2722076..20ae68d 100644
--- a/static_src/elements/help/mr-cue/mr-cue.test.js
+++ b/static_src/elements/help/mr-cue/mr-cue.test.js
@@ -1,4 +1,4 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
+// Copyright 2019 The Chromium Authors
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
diff --git a/static_src/elements/help/mr-cue/mr-fed-ref-cue.js b/static_src/elements/help/mr-cue/mr-fed-ref-cue.js
deleted file mode 100644
index 8e8626f..0000000
--- a/static_src/elements/help/mr-cue/mr-fed-ref-cue.js
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {html, css} from 'lit-element';
-import * as userV0 from 'reducers/userV0.js';
-import * as issueV0 from 'reducers/issueV0.js';
-import {store} from 'reducers/base.js';
-import 'elements/chops/chops-button/chops-button.js';
-import 'elements/chops/chops-dialog/chops-dialog.js';
-import {fromShortlink, GoogleIssueTrackerIssue} from 'shared/federated.js';
-import {MrCue} from './mr-cue.js';
-
-/**
- * `<mr-fed-ref-cue>`
- *
- * Displays information and login/logout links for the federated references
- * info popup.
- *
- */
-export class MrFedRefCue extends MrCue {
-  /** @override */
-  static get properties() {
-    return {
-      ...MrCue.properties,
-      fedRefShortlink: {type: String},
-    };
-  }
-
-  /** @override */
-  static get styles() {
-    return [
-      ...MrCue.styles,
-      css`
-        :host {
-          margin: 0;
-          width: 120px;
-          font-size: 11px;
-        }
-      `,
-    ];
-  }
-
-  get message() {
-    const fedRef = fromShortlink(this.fedRefShortlink);
-    if (fedRef && fedRef instanceof GoogleIssueTrackerIssue) {
-      let authLink;
-      if (this.user && this.user.gapiEmail) {
-        authLink = html`
-          <br /><br />
-          <a href="#"
-            @click=${() => store.dispatch(userV0.initGapiLogout())}
-          >Sign out</a>
-          <br />
-          (for references only)
-        `;
-      } else {
-        const clickLoginHandler = async () => {
-          await store.dispatch(userV0.initGapiLogin(this.issue));
-          // Re-fetch related issues.
-          store.dispatch(issueV0.fetchRelatedIssues(this.issue));
-        };
-        authLink = html`
-          <br /><br />
-          Googlers, to enable viewing status & title,
-          <a href="#"
-            @click=${clickLoginHandler}
-            >sign in here</a> with your Google email.
-        `;
-      }
-      return html`
-        This references an issue in the ${fedRef.trackerName} issue tracker.
-        ${authLink}
-      `;
-    } else {
-      return html`
-        This references an issue in another tracker. Status not displayed.
-      `;
-    }
-  }
-}
-
-customElements.define('mr-fed-ref-cue', MrFedRefCue);
