diff --git a/modules/Bio/EnsEMBL/Slice.pm b/modules/Bio/EnsEMBL/Slice.pm
index 94646e2949f3768deaab329e05fd1d8ec00e2351..32881b3eaab94cd130fb50f4095ec4b6c6a7b2fd 100644
--- a/modules/Bio/EnsEMBL/Slice.pm
+++ b/modules/Bio/EnsEMBL/Slice.pm
@@ -73,6 +73,7 @@ use Bio::EnsEMBL::Utils::Sequence qw(reverse_comp);
 
 use Bio::EnsEMBL::ProjectionSegment;
 
+use Data::Dumper;
 #inheritance to Bio::EnsEMBL::Root will eventually be removed
 @ISA = qw(Bio::EnsEMBL::Root Bio::PrimarySeqI);
 
@@ -1149,15 +1150,21 @@ sub get_all_SNPs {
 =cut
 
 sub get_all_Genes{
-   my ($self, $logic_name) = @_;
+   my ($self, $logic_name, $dbtype) = @_;
+   my $db;
+   if($dbtype) {
+     $db = $self->adaptor->db->get_db_adaptor($dbtype);
+     if(!$db) {
+       warning("Don't have db $dbtype returning empty list\n");
+       return [];
+     }
+   } else {
+     $db = $self->adaptor->db;
+   }
 
-   #caching is performed on a per slice basis in the GeneAdaptor
-   return $self->adaptor->db->get_GeneAdaptor->fetch_all_by_Slice($self,
-								  $logic_name);
+   return $db->get_GeneAdaptor()->fetch_all_by_Slice( $self, $logic_name );
 }
 
-
-
 =head2 get_all_Genes_by_type