diff --git a/modules/Bio/EnsEMBL/CoordSystem.pm b/modules/Bio/EnsEMBL/CoordSystem.pm
index c11094699853db0d9165d04b02702f74706a03c1..df9ce0ea5688ce5907bc92fc344dc502add0074a 100644
--- a/modules/Bio/EnsEMBL/CoordSystem.pm
+++ b/modules/Bio/EnsEMBL/CoordSystem.pm
@@ -122,60 +122,66 @@ sub new {
 
   my $self = $class->SUPER::new(@_);
 
-  my ($name,$version, $top_level, $sequence_level, $default, $rank) =
-    rearrange(['NAME','VERSION','TOP_LEVEL', 'SEQUENCE_LEVEL',
-               'DEFAULT', 'RANK'], @_);
+  my ( $name, $version, $top_level, $sequence_level, $default, $rank ) =
+    rearrange( [ 'NAME',      'VERSION',
+                 'TOP_LEVEL', 'SEQUENCE_LEVEL',
+                 'DEFAULT',   'RANK' ],
+               @_ );
 
-  throw('The NAME argument is required') if(!$name);
+  $version = '' if ( !defined($version) );
 
-  $version = '' if(!defined($version));
-
-  $top_level       = ($top_level)      ? 1 : 0;
-  $sequence_level  = ($sequence_level) ? 1 : 0;
-  $default         = ($default)        ? 1 : 0;
+  $top_level      = ($top_level)      ? 1 : 0;
+  $sequence_level = ($sequence_level) ? 1 : 0;
+  $default        = ($default)        ? 1 : 0;
   $rank ||= 0;
 
-  if($top_level) {
-    if($rank) {
+  if ( $top_level == 1 ) {
+    if ( $rank == 1 ) {
       throw('RANK argument must be 0 if TOP_LEVEL is 1');
     }
 
-    if($name) {
-      if($name ne 'toplevel') {
-        throw('The NAME argument must be "toplevel" if TOP_LEVEL is 1')
+    if ( defined($name) ) {
+      if ( $name ne 'toplevel' ) {
+        throw('The NAME argument must be "toplevel" if TOP_LEVEL is 1');
       }
     } else {
       $name = 'toplevel';
     }
 
-    if($sequence_level) {
+    if ( $sequence_level == 1 ) {
       throw("SEQUENCE_LEVEL argument must be 0 if TOP_LEVEL is 1");
     }
 
     $default = 0;
 
   } else {
-    if(!$rank) {
-      throw("RANK argument must be non-zero if not toplevel CoordSystem");
+
+    if ( $rank == 0 ) {
+      throw("RANK argument must be non-zero unless TOP_LEVEL is 1");
     }
-    if($name eq 'toplevel') {
-      throw("Cannot name coord system 'toplevel' unless TOP_LEVEL is 1");
+
+    if ( !defined($name) ) {
+      throw('The NAME argument is required');
+    } elsif ( $name eq 'toplevel' ) {
+      throw(   "Cannot name coord system 'toplevel' "
+             . "unless TOP_LEVEL is 1" );
     }
+
   }
 
-  if($rank !~ /^\d+$/) {
+  if ( $rank !~ /^\d+$/ ) {
     throw('The RANK argument must be a positive integer');
   }
 
-  $self->{'version'} = $version;
-  $self->{'name'} = $name;
-  $self->{'top_level'} = $top_level;
+  $self->{'version'}        = $version;
+  $self->{'name'}           = $name;
+  $self->{'top_level'}      = $top_level;
   $self->{'sequence_level'} = $sequence_level;
-  $self->{'default'} = $default;
-  $self->{'rank'}    = $rank;
+  $self->{'default'}        = $default;
+  $self->{'rank'}           = $rank;
 
   return $self;
-}
+} ## end sub new
 
 
 =head2 name