diff --git a/bin/account-manager-client.pl b/bin/account-manager-client.pl
index d10d5073f90a51e0a24e604240da0e225a9285c2..08d1ecc38ab6c60a63013dc7f711ba9420614bdf 100755
--- a/bin/account-manager-client.pl
+++ b/bin/account-manager-client.pl
@@ -158,13 +158,11 @@ sub parse_federation_metadata {
     };
     die "unable to load federation metadata: $EVAL_ERROR" if $EVAL_ERROR;
 
-    my %args;
-    if ($options{sp_entityid}) {
-        $args{filter_entity_id} = $options{sp_entityid};
-    }
-
+    my $data;
     eval {
-        $federation_metadata->parse(%args);
+        $data = $federation_metadata->parse(
+            entity_id => $options{sp_entityid},
+        );
     };
     die "unable to parse federation metadata: $EVAL_ERROR\n" if $EVAL_ERROR;
 
@@ -173,9 +171,7 @@ sub parse_federation_metadata {
 
     ## List SAML entities
     printf "Hashref representing the metadata:\n";
-    IdPAccountManager::Tools::dump_var(
-        $federation_metadata->{federation_metadata_as_hashref},
-        0, \*STDOUT);
+    IdPAccountManager::Tools::dump_var($data, 0, \*STDOUT);
 
 }
 
diff --git a/lib/IdPAccountManager/SAMLMetadata.pm b/lib/IdPAccountManager/SAMLMetadata.pm
index 588eea72dbbb767adf3043156ae54b922f84f626..2a6d2499e78cc4b0d1962be25911f4f00b86809e 100644
--- a/lib/IdPAccountManager/SAMLMetadata.pm
+++ b/lib/IdPAccountManager/SAMLMetadata.pm
@@ -39,42 +39,9 @@ sub new {
 sub parse {
     my ($self, %args) = @_;
 
-    my %parser_args = (
-        metadata_as_xml    => $self->{doc},
-        filter_entity_type => 'sp'
-    );
-
-    if ($args{filter_entity_id}) {
-        $parser_args{filter_entity_id} = $args{filter_entity_id};
-    }
-
-    $self->{federation_metadata_as_hashref} =
-      $self->_parse_saml_metadata(%parser_args);
-
-    die "Failed to parse federation metadata"
-        unless defined $self->{federation_metadata_as_hashref};
-
-    return 1;
-}
-
-## Dumps the SAML metadata content
-sub print {
-    my ($self, $fd) = @_;
-    $fd = \*STDOUT unless $fd;
-
-    my $root = $self->{doc}->documentElement();
-    print $fd $root->toString();
-}
-
-## Parse a SAML federation metadata file
-sub _parse_saml_metadata {
-    my ($self, %args) = @_;
-
-    my $root = $args{metadata_as_xml};
-
     my @extracted_array;
     foreach my $EntityDescriptor (
-        @{ $root->getElementsByLocalName('EntityDescriptor') })
+        @{ $self->{doc}->getElementsByLocalName('EntityDescriptor') })
     {
 
         my $extracted_data = {};
@@ -85,9 +52,8 @@ sub _parse_saml_metadata {
             }
         }
 
-        next
-          if ($args{filter_entity_id}
-            && ($args{filter_entity_id} ne $extracted_data->{entityid}));
+        next if ($args{entity_id}
+            && ($args{entity_id} ne $extracted_data->{entityid}));
 
         $extracted_data->{xml_md} =
           IdPAccountManager::Tools::escape_xml($EntityDescriptor->toString());
@@ -283,6 +249,15 @@ sub _parse_saml_metadata {
     return \@extracted_array;
 }
 
+## Dumps the SAML metadata content
+sub print {
+    my ($self, $fd) = @_;
+    $fd = \*STDOUT unless $fd;
+
+    my $root = $self->{doc}->documentElement();
+    print $fd $root->toString();
+}
+
 1;
 __END__
 
diff --git a/lib/IdPAccountManager/WebRequest.pm b/lib/IdPAccountManager/WebRequest.pm
index 9dff134d30fb1f49f71e43ef622efa1877151a50..65548e7fcb976d73e3ce8af3933a72de166c6a95 100755
--- a/lib/IdPAccountManager/WebRequest.pm
+++ b/lib/IdPAccountManager/WebRequest.pm
@@ -249,7 +249,7 @@ sub req_account_wizard {
     }
 
     eval {
-        $federation_metadata->parse();
+        $self->{param_out} = $federation_metadata->parse();
     };
     if ($EVAL_ERROR) {
         push @{ $self->{param_out}->{errors} }, "internal";
@@ -260,9 +260,6 @@ sub req_account_wizard {
         return undef;
     }
 
-    $self->{param_out}->{federation_metadata_as_hashref} =
-      $federation_metadata->{federation_metadata_as_hashref};
-
     return 1;
 }