diff --git a/index.html b/index.html
index c7a756a8d..01bdcfcbe 100644
--- a/index.html
+++ b/index.html
@@ -90,6 +90,7 @@
+
diff --git a/js/id/ui/entity_editor.js b/js/id/ui/entity_editor.js
index e50495921..6a5713516 100644
--- a/js/id/ui/entity_editor.js
+++ b/js/id/ui/entity_editor.js
@@ -106,18 +106,11 @@ iD.ui.EntityEditor = function(context, entity) {
.attr('class', 'inspector-inner raw-membership-editor col12')
.call(rawMembershipEditor);
- if (!entity.isNew()) {
- var osmLink = tageditorpreset.append('div')
- .attr('class', 'col12 inspector-inner')
- .append('a')
- .attr('href', context.connection().entityURL(entity))
- .attr('target', '_blank');
+ var viewOnOSM = iD.ui.ViewOnOSM(context);
- osmLink.append('span')
- .attr('class','icon icon-pre-text out-link');
-
- osmLink.append('span').text(t('inspector.view_on_osm'));
- }
+ editorwrap.append('div')
+ .attr('class', 'col12 inspector-inner inspector-external-links')
+ .call(viewOnOSM, entity);
presetUI.change(tags);
rawTagEditor.tags(tags);
diff --git a/js/id/ui/view_on_osm.js b/js/id/ui/view_on_osm.js
new file mode 100644
index 000000000..55077e405
--- /dev/null
+++ b/js/id/ui/view_on_osm.js
@@ -0,0 +1,19 @@
+iD.ui.ViewOnOSM = function(context) {
+ return function(selection, entity) {
+ selection.style('display', entity.isNew() ? 'none' : null);
+
+ var osmLink = selection.selectAll('.view-on-osm')
+ .data([entity]);
+
+ var enter = osmLink.enter().append('a')
+ .attr('class', 'view-on-osm')
+ .attr('target', '_blank');
+
+ enter.append('span')
+ .attr('class', 'icon icon-pre-text out-link');
+ enter.append('span')
+ .text(t('inspector.view_on_osm'));
+
+ osmLink.attr('href', context.connection().entityURL(entity));
+ }
+};