diff --git a/lib/AccountManager/WebRequest.pm b/lib/AccountManager/WebRequest.pm
index a1c978c23eac7350c46b35219661d2ce46ca6638..ebee8ea865ecfaef04cdb8e57feaac2aa72205cb 100644
--- a/lib/AccountManager/WebRequest.pm
+++ b/lib/AccountManager/WebRequest.pm
@@ -71,16 +71,6 @@ sub new {
 
 sub run {
     my ($self) = @_;
-    $self->execute();
-    $self->respond();
-}
-
-## Execute a web request
-sub execute {
-    my ($self) = @_;
-
-    my $status;
-
 
     # process input parameters
     my %parameters = $self->{cgi}->Vars();
@@ -100,7 +90,7 @@ sub execute {
                 $self->{logger}->error(
                     "Incorrect parameter format : $parameter"
                 );
-                return;
+                $self->respond();
             }
         }
 
@@ -143,12 +133,12 @@ sub execute {
     # process requested action
     if ($actions{$action}) {
         my $method = $actions{$action};
-        $status = $self->$method();
+        $self->$method();
     } else {
-        ## inknown action
+        ## unknown action
         push @{ $self->{out}->{errors} }, "unknown_action";
         $self->{logger}->error( "Unknown action '$action'");
-
+        $self->respond();
     }
 
     return 1;
@@ -195,14 +185,14 @@ sub req_account_wizard {
     if ($EVAL_ERROR) {
         push @{ $self->{out}->{errors} }, "internal";
         $self->{logger}->error("Failed to load federation metadata: $EVAL_ERROR");
-        return;
+        $self->respond();
     }
 
     $self->{out}->{metadata} = $metadata->parse(type => 'sp');
 
     $self->{out}->{subtitle} = 'Select your Service Provider';
 
-    return 1;
+    $self->respond();
 }
 
 ## Select a Service Provider and return metadata sctucture for the SP
@@ -213,7 +203,7 @@ sub req_select_sp {
     unless ($self->{in}->{sp_entityid}) {
         push @{ $self->{out}->{errors} }, "missing_sp_entityid";
         $self->{logger}->error("Missing parameter sp_entityid");
-        return;
+        $self->respond();
     }
 
     # Create a persistent service provider object
@@ -236,7 +226,7 @@ sub req_select_sp {
         if ($EVAL_ERROR) {
             push @{ $self->{out}->{errors} }, "internal";
             $self->{logger}->error("Failed to load federation metadata: $EVAL_ERROR");
-            return;
+            $self->respond();
         }
 
         my $sps = $metadata->parse(id => $self->{in}->{sp_entityid});
@@ -245,7 +235,7 @@ sub req_select_sp {
             $self->{logger}->errorf(
                 "No such SP '%s' in metadata", $self->{in}->{sp_entityid}
             );
-            return;
+            $self->respond();
         }
         my $sp = $sps->[0];
 
@@ -258,7 +248,7 @@ sub req_select_sp {
         unless ($provider->save()) {
             push @{ $self->{out}->{errors} }, "internal";
             $self->{logger}->error("Failed to save service provider object");
-            return;
+            $self->respond();
         }
     }
 
@@ -280,7 +270,7 @@ sub req_select_sp {
     $self->{out}->{provider} = $provider;
     $self->{out}->{subtitle} = 'Select your Service Provider';
 
-    return 1;
+    $self->respond();
 }
 
 ## Generate an authentication token to validate an email address
@@ -291,13 +281,13 @@ sub req_generate_token {
     unless ($self->{in}->{sp_entityid}) {
         push @{ $self->{out}->{errors} }, "missing_sp_entityid";
         $self->{logger}->error("Missing parameter sp_entityid");
-        return;
+        $self->respond();
     }
 
     unless ($self->{in}->{email_address}) {
         push @{ $self->{out}->{errors} }, "missing_email_address";
         $self->{logger}->error("Missing parameter email_address");
-        return;
+        $self->respond();
     }
 
     my $provider = AccountManager::Service->new(
@@ -308,7 +298,7 @@ sub req_generate_token {
     unless ($provider->load(speculative => 1)) {
         push @{ $self->{out}->{errors} }, "no_such_entity";
         $self->{logger}->errorf("No such SP '%s' in database", $self->{in}->{sp_entityid});
-        return;
+        $self->respond();
     }
 
     # override metadata contacts if needed
@@ -335,7 +325,7 @@ sub req_generate_token {
             $self->{in}->{sp_entityid},
             $self->{in}->{email_address}
         );
-        return;
+        $self->respond();
     }
 
     # delete any previous token for the same email/service couple
@@ -352,7 +342,7 @@ sub req_generate_token {
                 "Failed to delete previous authentication token with ID %s",
                 $old_token->id()
             );
-            return;
+            $self->respond();
         }
     }
 
@@ -371,7 +361,7 @@ sub req_generate_token {
     unless ($token->save()) {
         push @{ $self->{out}->{errors} }, "internal";
         $self->{logger}->error("Failed to save authentication token");
-        return;
+        $self->respond();
     }
 
     $self->{out}->{email_address} = $self->{in}->{email_address};
@@ -386,7 +376,7 @@ sub req_generate_token {
     open(my $handle, '|-', "$sendmail -f $sender $recipient") or do {
         push @{ $self->{out}->{errors} }, "mail_notification_error";
         $self->{logger}->errorf("Unable to run sendmail executable: %s", $ERRNO);
-        return;
+        $self->respond();
     };
 
     my $tt2 = Template->new({
@@ -412,7 +402,7 @@ sub req_generate_token {
     unless ($tt2->process($template, $data, $handle)) {
         push @{ $self->{out}->{errors} }, "mail_notification_error";
         $self->{logger}->errorf("Mail notification error: %s", $tt2->error());
-        return;
+        $self->respond();
     }
 
     close $handle;
@@ -424,7 +414,7 @@ sub req_generate_token {
         $token->token(),
     );
 
-    return 1;
+    $self->respond();
 }
 
 ## Validate an authentication token
@@ -436,13 +426,13 @@ sub req_validate_token {
     unless ($self->{in}->{sp_entityid}) {
         push @{ $self->{out}->{errors} }, "missing_sp_entityid";
         $self->{logger}->error("Missing parameter sp_entityid");
-        return;
+        $self->respond();
     }
 
     unless ($self->{in}->{authentication_token}) {
         push @{ $self->{out}->{errors} }, "missing_authentication_token";
         $self->{logger}->error("Missing parameter authentication_token");
-        return;
+        $self->respond();
     }
 
     my $token = AccountManager::Token->new(
@@ -457,7 +447,7 @@ sub req_validate_token {
             $self->{in}->{authentication_token},
             $self->{in}->{sp_entityid}
         );
-        return;
+        $self->respond();
     }
 
     if (! $token->sp_entityid() eq $self->{in}->{sp_entityid}) {
@@ -467,7 +457,7 @@ sub req_validate_token {
             $self->{in}->{authentication_token},
             $self->{in}->{sp_entityid}
         );
-        return;
+        $self->respond();
     }
 
     ## delete the token
@@ -511,7 +501,7 @@ sub req_validate_token {
             "Failed to create test accounts for SP with entityid %s",
             $self->{in}->{sp_entityid}
         );
-        return;
+        $self->respond();
     }
 
     ## Update simpleSAMLphp configuration to enable test accounts
@@ -532,7 +522,7 @@ sub req_validate_token {
             "Failed to create simpleSAMLphp configuration file: %s",
             $EVAL_ERROR
         );
-        return;
+        $self->respond();
     }
 
     $self->{logger}->infof(
@@ -545,14 +535,14 @@ sub req_validate_token {
     $self->{out}->{accounts} = \@accounts;
     $self->{out}->{subtitle} = 'Complete Email Challenge';
 
-    return 1;
+    $self->respond();
 }
 
 ## Return the homepage of the service
 sub req_home {
     my ($self) = @_;
 
-    return 1;
+    $self->respond();
 }
 
 1;