diff --git a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm
index 19e12072e652d44e283609ea2a83fdea74ee795e..2d390514b70cdbf18f38198a8cfc58b359b7d3b8 100644
--- a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm
@@ -837,12 +837,12 @@ sub fetch_all_by_external_name {
 
   my @ids = $entryAdaptor->list_gene_ids_by_extids($external_name, $external_db_name, $override);
 
-  my %genes_by_dbIDs =
-	map { $_->dbID(), $_ } @{$self->fetch_all_by_dbID_list(\@ids)};
+  my %genes_by_dbIDs = map { $_->dbID(), $_ } @{$self->fetch_all_by_dbID_list(\@ids)};
 
-  my @result = map { $genes_by_dbIDs{$_} } @ids;
-
-  return \@result;
+  my @features = map { $genes_by_dbIDs{$_} } @ids;
+  my @reference = grep { $_->slice()->is_reference() } @features;
+  my @non_reference = grep { ! $_->slice()->is_reference() } @features;
+  return [ @reference, @non_reference ];
 }
 
 =head2 fetch_all_by_description
diff --git a/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm
index 933d491abbc7d05c9f6beec9c6e5cfd14e099f3d..7c459cbfd509a8923a443718208c0e64cc4a4c8d 100644
--- a/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm
@@ -519,7 +519,10 @@ sub fetch_all_by_external_name {
     $entryAdaptor->list_transcript_ids_by_extids( $external_name,
                                                   $external_db_name, $override );
 
-  return $self->fetch_all_by_dbID_list( \@ids );
+  my @features = @{ $self->fetch_all_by_dbID_list( \@ids ) };
+  my @reference = grep { $_->slice()->is_reference() } @features;
+  my @non_reference = grep { ! $_->slice()->is_reference() } @features;
+  return [ @reference, @non_reference ];
 }
 
 =head2 fetch_all_by_GOTerm
diff --git a/modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm
index 0de5dfafab767022c5eb9416ff2f3c4ff29a3265..9588fbd43db8e91e7c627ba8b2c011395f059c24 100644
--- a/modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/TranslationAdaptor.pm
@@ -313,16 +313,23 @@ sub fetch_all_by_external_name {
 
   my $transcript_adaptor = $self->db()->get_TranscriptAdaptor();
 
-  my @out;
+  my @reference;
+  my @non_reference;
   foreach my $id (@ids) {
     my $transcript = $transcript_adaptor->fetch_by_translation_id($id);
 
     if ( defined($transcript) ) {
-      push @out, $self->fetch_by_Transcript($transcript);
+      my $translation = $self->fetch_by_Transcript($transcript);
+      if($transcript->slice()->is_reference()) {
+        push(@reference, $translation);
+      }
+      else {
+        push(@non_reference, $translation);
+      }
     }
   }
 
-  return \@out;
+  return [@reference, @non_reference];
 }
 
 =head2 fetch_all_by_GOTerm