diff --git a/modules/Bio/EnsEMBL/Utils/ConversionSupport.pm b/modules/Bio/EnsEMBL/Utils/ConversionSupport.pm
index 120c87a46ef157b1dba5e14b2cb38f4de0d75f43..f6aa997df9e1e6d56644a6a46e902105d9a7b25d 100644
--- a/modules/Bio/EnsEMBL/Utils/ConversionSupport.pm
+++ b/modules/Bio/EnsEMBL/Utils/ConversionSupport.pm
@@ -194,6 +194,9 @@ sub parse_common_options {
   Example     : $support->parse_extra_options('string_opt=s', 'numeric_opt=n');
   Description : Parse extra commandline options by passing them on to
                 Getopt::Long and storing parameters in $self->param('name).
+                If the last option is '...' then unknown options are kept
+                in @ARGV for future calls to this method. Without '...'
+                then it is an error to have further options.
   Return type : true on success
   Exceptions  : none (caugth by $self->error)
   Caller      : general
@@ -202,7 +205,12 @@ sub parse_common_options {
 
 sub parse_extra_options {
   my ($self, @params) = @_;
-  Getopt::Long::Configure("no_pass_through");
+  if(@params and $params[-1] eq "...") {
+    pop @params;
+    Getopt::Long::Configure("pass_through");
+  } else {
+    Getopt::Long::Configure("no_pass_through");
+  }
   eval {
     # catch warnings to pass to $self->error
     local $SIG{__WARN__} = sub { die @_; };