diff --git a/misc-scripts/xref_mapping/XrefParser/GOParser.pm b/misc-scripts/xref_mapping/XrefParser/GOParser.pm
index 9f6e52bf541775fbd3fcd7b1ad8f7348a766fdec..48bc4a5b34d1d7bc42d2e15c05e6e22d2707d17e 100644
--- a/misc-scripts/xref_mapping/XrefParser/GOParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/GOParser.pm
@@ -16,6 +16,9 @@ sub run {
   my $release_file = $ref_arg->{rel_file};
   my $verbose      = $ref_arg->{verbose};
 
+  my $gene_source_id = $self->get_source_id_for_source_name('GO_to_gene');
+
+
   if((!defined $source_id) or (!defined $species_id) or (!defined $files) ){
     croak "Needs to pass source_id, species_id and  files as pairs";
   }
@@ -166,36 +169,23 @@ sub run {
 	#WB      CE20707 ZYG-9           GO:0008017      WB:WBPaper00003099|PMID:9606208 ISS             F                       protein  taxon:6239      20030829        WB
 	if(!defined($wormset)){
 	  $wormset = 1;
-	  $worm_separator = qw{::};
-	  %worm = %{$self->get_valid_xrefs_for_direct_xrefs('worm', $worm_separator)};
-	}
-	my $worm_acc=$array[1];
-	if(!defined($worm{$worm_acc})){ 
-	  if(defined($worm{$array[10]})){
-	    $worm_acc = $array[10];
-	  }
-	  elsif(defined($worm{$array[2]})){
-	    $worm_acc = $array[2];
-	  }
+          %worm = %{$self->get_valid_codes("wormbase_gene",$species_id)};
 	}
-	
-	if(defined($worm{$worm_acc})){
-	  my ($xref_id, $stable_id, $type, $link) = split(/$worm_separator/x,$worm{$worm_acc});
 
-	  my $new_xref_id = $self->get_xref($array[4],$source_id, $species_id);
+        my $worm_acc = $array[1];
+
+	if(defined($worm{$worm_acc})){
+          foreach my $xref_id (@{$worm{$worm_acc}}) {
+            $self->add_dependent_xref({ master_xref_id => $xref_id,
+                                        acc            => $array[4],
+                                        label          => $array[4],
+                                        desc           => $go_to_desc{$array[4]} || '',
+                                        linkage        => $array[6],
+                                        source_id      => $gene_source_id,
+                                        species_id     => $species_id} );
+            $count++;
+          }
 
-	  if(!defined($new_xref_id)){
-	    $new_xref_id = 
-	      $self->add_xref({ acc        => $array[4],
-				label      => $array[4],
-				source_id  => $source_id,
-				species_id => $species_id,
-				info_type  => "DIRECT"} );
-	    $count++;
-	  }
-	  if(!defined($self->get_direct_xref($stable_id,$type, $array[6]))){
-	    $self->add_direct_xref($new_xref_id, $stable_id, $type, $array[6]);
-	  }
 	}
 	else{
 	  $miss++;