diff --git a/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm b/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm
index 8dee16dae7f62b08a9f471adf9c05bb7e3567dda..49e70d3e51704fbed58d54b9b99198991fccfe06 100644
--- a/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm
+++ b/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm
@@ -926,9 +926,10 @@ sub dump_core_xrefs {
   # execute several queries with a max of 200 entries in each IN clause - more efficient
   my $batch_size = 200;
 
-  # keep track of what xref_ids have been written to prevent duplicates; e.g. several dependent
-  # xrefs my be dependent on the same master xref.
+  # keep track of what xref_id & object_xref_ids have been written to prevent 
+  # duplicates; e.g. several dependent xrefs may be dependent on the same master xref.
   my %xrefs_written;
+  my %object_xrefs_written;
 
   while(@xref_ids) {
 
@@ -959,6 +960,9 @@ sub dump_core_xrefs {
     # core database so we add on $xref_id_offset
     while ($xref_sth->fetch()) {
 
+      # make sure label is set to /something/ so that the website displays something
+      $label = $accession if (!$label);
+
       if (!$xrefs_written{$xref_id}) {
 	my $external_db_id = $source_to_external_db{$source_id};
 	print XREF ($xref_id+$xref_id_offset) . "\t" . $external_db_id . "\t" . $accession . "\t" . $label . "\t" . $version . "\t" . $description . "\n";
@@ -977,6 +981,7 @@ sub dump_core_xrefs {
     while ($dep_sth->fetch()) {
 
       my $external_db_id = $source_to_external_db{$source_id};
+      $label = $accession if (!$label);
 
       if (!$xrefs_written{$xref_id}) {
 	print XREF ($xref_id+$xref_id_offset) . "\t" . $external_db_id . "\t" . $accession . "\t" . $label . "\t" . $version . "\t" . $description . "\tDEPENDENT\n";
@@ -991,11 +996,15 @@ sub dump_core_xrefs {
 	#print "xref $accession has " . scalar(@ensembl_object_ids) . " associated ensembl objects\n";
 	foreach my $object_id (@ensembl_object_ids) {
 	  my $type = $ensembl_object_types{$object_id};
-	  print OBJECT_XREF "$object_xref_id\t$object_id\t$type\t" . ($xref_id+$xref_id_offset) . "\tDEPENDENT\n";
-	  $object_xref_id++;
-	  # Add this mapping to the list - note NON-OFFSET xref_id is used
-	  my $key = $type . ":" . $object_id;
-	  push @{$object_xref_mappings->{$key}}, $xref_id;
+	  my $full_key = $type.":".$object_id.":".$xref_id;
+	  if (!$object_xrefs_written{$full_key}) {
+	    print OBJECT_XREF "$object_xref_id\t$object_id\t$type\t" . ($xref_id+$xref_id_offset) . "\tDEPENDENT\n";
+	    $object_xref_id++;
+	    # Add this mapping to the list - note NON-OFFSET xref_id is used
+	    my $key = $type . ":" . $object_id;
+	    push @{$object_xref_mappings->{$key}}, $xref_id;
+	    $object_xrefs_written{$full_key} = 1;
+	  }
 	}
       }
     }
@@ -1382,12 +1391,12 @@ sub do_upload {
     }
 
     # is this nicer than using the mysql client?
+    print "Setting $table display_xrefs from $file\n";
     open(DISPLAY_XREF, $file);
     while(<DISPLAY_XREF>) {
 
       $sth = $self->dbi()->prepare($_);
-      print $_;
-      #$sth->execute();
+      $sth->execute();
 
     }