diff --git a/modules/Bio/EnsEMBL/CircularSlice.pm b/modules/Bio/EnsEMBL/CircularSlice.pm
index df6091da897cdadec8f4a7a94e1490af7e3c5a01..812e86a731202a32634fc9a19c2af1a1aee393a3 100644
--- a/modules/Bio/EnsEMBL/CircularSlice.pm
+++ b/modules/Bio/EnsEMBL/CircularSlice.pm
@@ -798,69 +798,6 @@ sub expand {
 } ## end sub expand
 
 
-=head2 get_all_Attributes
-
-  Arg [1]    : optional string $attrib_code
-               The code of the attribute type to retrieve values for.
-  Example    : ($htg_phase) = @{$slice->get_all_Attributes('htg_phase')};
-               @slice_attributes    = @{$slice->get_all_Attributes()};
-  Description: Gets a list of Attributes of this slice''s seq_region.
-               Optionally just get Attrubutes for given code.
-  Returntype : listref Bio::EnsEMBL::Attribute
-  Exceptions : warning if slice does not have attached adaptor
-  Caller     : general
-  Status     : Stable
-
-=cut
-
-sub get_all_Attributes {
-  my $self        = shift;
-  my $attrib_code = shift;
-
-  my $result;
-  my @results;
-
-  if ( !$self->adaptor() ) {
-    warning('Cannot get attributes without an adaptor.');
-    return [];
-  }
-
-  my $attribute_adaptor = $self->adaptor->db->get_AttributeAdaptor();
-
-## circular BOF
-  my ($sl1, $sl2) = $self->_split;
-  my $pta_ref = [];
-
-  if ( defined $attrib_code ) {
-    my @res1 =
-      grep { uc( $_->code() ) eq uc($attrib_code) }
-      @{ $attribute_adaptor->fetch_all_by_Slice($sl1) };
-    my @res2 =
-      grep { uc( $_->code() ) eq uc($attrib_code) }
-      @{ $attribute_adaptor->fetch_all_by_Slice($sl2) };
-    my @res;
-    push @res, @res1, @res2;
-    $result = \@res;
-  } else {
-    my @res1 = @{ $attribute_adaptor->fetch_all_by_Slice($sl1) };
-    my @res2 = @{ $attribute_adaptor->fetch_all_by_Slice($sl2) };
-    my @res;
-    push @res, @res1, @res2;
-    $result = \@res;
-  }
-
-## circular EOF
-
-  #  if( defined $attrib_code ) {
-  #    @results = grep { uc($_->code()) eq uc($attrib_code) }
-  #      @{$attribute_adaptor->fetch_all_by_Slice( $self )};
-  #    $result = \@results;
-  #  } else {
-  #    $result = $attribute_adaptor->fetch_all_by_Slice( $self );
-  #  }
-
-  return $result;
-} ## end sub get_all_Attributes
 
 =head2 get_all_PredictionTranscripts
 
@@ -1140,174 +1077,6 @@ sub get_all_genotyped_VariationFeatures {
 }
 
 
-=head2 get_all_Genes
-
-  Arg [1]    : (optional) string $logic_name
-               The name of the analysis used to generate the genes to retrieve
-  Arg [2]    : (optional) string $dbtype
-               The dbtype of genes to obtain.  This assumes that the db has
-               been added to the DBAdaptor under this name (using the
-               DBConnection::add_db_adaptor method).
-  Arg [3]    : (optional) boolean $load_transcripts
-               If set to true, transcripts will be loaded immediately rather
-               than being lazy-loaded on request.  This will result in a
-               significant speed up if the Transcripts and Exons are going to
-               be used (but a slow down if they are not).
-  Arg [4]    : (optional) string $source
-               The source of the genes to retrieve.
-  Arg [5]    : (optional) string $biotype
-               The biotype of the genes to retrieve.
-  Example    : @genes = @{$slice->get_all_Genes};
-  Description: Retrieves all genes that overlap this slice.
-  Returntype : listref of Bio::EnsEMBL::Genes
-  Exceptions : none
-  Caller     : none
-  Status     : Stable
-
-=cut
-
-sub get_all_Genes {
-  my ( $self, $logic_name, $dbtype, $load_transcripts, $source,
-       $biotype )
-    = @_;
-
-  if ( !$self->adaptor() ) {
-    warning('Cannot get Genes without attached adaptor');
-    return [];
-  }
-
-  my $ga;
-  if ($dbtype) {
-    my $db = $reg->get_db( $self->adaptor()->db(), $dbtype );
-    if ( defined($db) ) {
-      $ga = $reg->get_adaptor( $db->species(), $db->group(), "Gene" );
-    } else {
-      $ga = $reg->get_adaptor( $self->adaptor()->db()->species(),
-                               $dbtype, "Gene" );
-    }
-    if ( !defined $ga ) {
-      warning("$dbtype genes not available");
-      return [];
-    }
-  } else {
-    $ga = $self->adaptor->db->get_GeneAdaptor();
-  }
-
-## circular BOF
-  my ($sl1, $sl2) = $self->_split;
-  my ( @arr, @arr1, @arr2 );
-  @arr1 = @{
-    $ga->fetch_all_by_Slice( $sl1, $logic_name, $load_transcripts,
-                             $source, $biotype ) };
-  @arr2 = @{
-    $ga->fetch_all_by_Slice( $sl2, $logic_name, $load_transcripts,
-                             $source, $biotype ) };
-  push @arr, @arr1, @arr2;
-  return \@arr;
-
-  ## circular EOF
-
-} ## end sub get_all_Genes
-
-
-=head2 get_all_Transcripts
-
-  Arg [1]    : (optional) boolean $load_exons
-               If set to true exons will not be lazy-loaded but will instead
-               be loaded right away.  This is faster if the exons are
-               actually going to be used right away.
-  Arg [2]    : (optional) string $logic_name
-               the logic name of the type of features to obtain
-  Arg [3]    : (optional) string $db_type
-  Example    : @transcripts = @{$slice->get_all_Transcripts)_};
-  Description: Gets all transcripts which overlap this slice.  If you want to
-               specify a particular analysis or type, then you are better off
-               using get_all_Genes or get_all_Genes_by_type and iterating
-               through the transcripts of each gene.
-  Returntype : reference to a list of Bio::EnsEMBL::Transcripts
-  Exceptions : none
-  Caller     : general
-  Status     : Stable
-
-=cut
-
-sub get_all_Transcripts {
-  my $self       = shift;
-  my $load_exons = shift;
-  my $logic_name = shift;
-  my $dbtype     = shift;
-  if ( !$self->adaptor() ) {
-    warning('Cannot get Transcripts without attached adaptor');
-    return [];
-  }
-
-  my $ta;
-  if ($dbtype) {
-    my $db = $reg->get_db( $self->adaptor()->db(), $dbtype );
-    if ( defined($db) ) {
-      $ta =
-        $reg->get_adaptor( $db->species(), $db->group(), "Transcript" );
-    } else {
-      $ta = $reg->get_adaptor( $self->adaptor()->db()->species(),
-                               $dbtype, "Transcript" );
-    }
-    if ( !defined $ta ) {
-      warning("$dbtype genes not available");
-      return [];
-    }
-  } else {
-    $ta = $self->adaptor->db->get_TranscriptAdaptor();
-  }
-
-## circular BOF
-  my ($sl1, $sl2) = $self->_split;
-  my ( @arr, @arr1, @arr2 );
-  @arr1 =
-    @{ $ta->fetch_all_by_Slice( $sl1, $load_exons, $logic_name ) };
-  @arr2 =
-    @{ $ta->fetch_all_by_Slice( $sl2, $load_exons, $logic_name ) };
-  push @arr, @arr1, @arr2;
-  return \@arr;
-## circular EOF
-
-} ## end sub get_all_Transcripts
-
-=head2 get_all_Exons
-
-  Arg [1]    : none
-  Example    : @exons = @{$slice->get_all_Exons};
-  Description: Gets all exons which overlap this slice.  Note that these exons
-               will not be associated with any transcripts, so this may not
-               be terribly useful.
-  Returntype : reference to a list of Bio::EnsEMBL::Exons
-  Exceptions : none
-  Caller     : general
-  Status     : Stable
-
-=cut
-
-sub get_all_Exons {
-  my $self = shift;
-
-  if ( !$self->adaptor() ) {
-    warning('Cannot get Exons without attached adaptor');
-    return [];
-  }
-
-  ## circular BOF
-  my ($sl1, $sl2) = $self->_split;
-  my ( @arr, @arr1, @arr2 );
-  @arr1 =
-    @{ $sl1->adaptor->db->get_ExonAdaptor->fetch_all_by_Slice($sl1) };
-  @arr2 =
-    @{ $sl2->adaptor->db->get_ExonAdaptor->fetch_all_by_Slice($sl2) };
-  push @arr, @arr1, @arr2;
-  return \@arr;
-  ## circular EOF
-
-  #rturn $self->adaptor->db->get_ExonAdaptor->fetch_all_by_Slice($self);
-} ## end sub get_all_Exons
-
 =head2 get_all_QtlFeatures
 
   Args       : none
diff --git a/modules/Bio/EnsEMBL/Utils/IO/GTFSerializer.pm b/modules/Bio/EnsEMBL/Utils/IO/GTFSerializer.pm
index a450ff773b8a2fc7da6e16e37b00723f1b6819bb..0bddbe103f78ba2c51bcc7938b6946ee38f97277 100644
--- a/modules/Bio/EnsEMBL/Utils/IO/GTFSerializer.pm
+++ b/modules/Bio/EnsEMBL/Utils/IO/GTFSerializer.pm
@@ -68,12 +68,6 @@ sub print_feature {
   my @startcs =  $self->_make_start_codon_features($transcript);
   my @endcs   =  $self->_make_stop_codon_features($transcript);
   my ($hasstart, $hasend) = $self->_check_start_and_stop($transcript);
-  #
-  # production does not use this option
-  #
-  # if (!$include_codons) {
-  #   $hasstart = $hasend = 0;
-  # }
 
   # TODO: ask Andy if this is safe
   my $dbname = $transcript->adaptor()->dbc()->dbname();
@@ -392,8 +386,7 @@ sub _check_start_and_stop {
 
   return (0,0) unless defined $trans->translation;
 
-  my $tln = $trans->translation;
-  my $cds_seq     = uc($trans->translateable_seq); 
+  my $cds_seq = uc($trans->translateable_seq); 
 
   my $startseq = substr($cds_seq, 0, 3); 
   my $endseq = substr($cds_seq, -3); 
@@ -401,7 +394,7 @@ sub _check_start_and_stop {
   my $has_start = 1;
   my $has_end = 1;
 
-  # reimplemented because verterbrate specific
+  # reimplemented since there are alternatively valid codon tables
   $has_start = 0  if ($startseq ne "ATG");
   $has_end = 0 if ($endseq ne "TAG" && $endseq ne "TGA" && $endseq ne "TAA");