diff --git a/lib/Kalamar/Controller/Search2.pm b/lib/Kalamar/Controller/Search2.pm
index af9d0b5..7bb0b99 100644
--- a/lib/Kalamar/Controller/Search2.pm
+++ b/lib/Kalamar/Controller/Search2.pm
@@ -22,6 +22,7 @@
   my $err = $tx->error;
 
   if ($err) {
+    # print $err->code, "\n";
     return Mojo::Promise->new->reject([
       [$err->{code}, $err->{message}]
     ]);
@@ -42,6 +43,7 @@
     return Mojo::Promise->new->reject($err);
   };
 
+  # TODO: What does status mean?
   if ($json->{status}) {
     return Mojo::Promise->new->reject([
       [undef, 'Middleware error ' . $json->{'status'}]
@@ -154,6 +156,8 @@
       $match->{matchID} =~ s!^match\-(?:[^\/]+\/){2}[^-]+?-!!;
   };
 
+  return unless $match->{textSigle};
+
   # Set IDs based on the sigle
   (
     $match->{corpusID},
@@ -315,6 +319,7 @@
 
     # Wrap a user agent method with a promise
     $promise = $c->user->auth_request_p(get => $url)
+
       # TODO: Better use a single then
       ->then(\&_catch_http_errors)
       ->then(
@@ -337,6 +342,10 @@
   # Wait for rendering
   $c->render_later;
 
+  # Choose the snippet based on the parameter
+  my $template = scalar $v->param('snippet') ? 'snippet' : 'search2';
+  $c->stash(template => $template);
+
   # Process response
   $promise->then(
     sub {
@@ -385,23 +394,25 @@
       return $c->_process_matches($json);
     }
 
+  # Render template
+  )->then(
+    sub {
+      return $c->render(
+        q => $query,
+        ql => $query{ql},
+        start_page => $query{p},
+      );
+    }
+
   # Deal with errors
   )->catch(
     sub {
       $c->_notify_on_errors(shift);
-    }
-
-  # Render template
-  )->finally(
-    sub {
-      # Choose the snippet based on the parameter
-      my $template = scalar $v->param('snippet') ? 'snippet' : 'search2';
-
       return $c->render(
-        template => $template,
+        results => c(),
         q => $query,
         ql => $query{ql},
-        start_page => $query{p},
+        start_page => 1
       );
     }
   )
diff --git a/t/fixtures/fake_backend.pl b/t/fixtures/fake_backend.pl
index 9573f3f..a49b05f 100644
--- a/t/fixtures/fake_backend.pl
+++ b/t/fixtures/fake_backend.pl
@@ -117,8 +117,10 @@
     $c->stash('matchId')
   ));
 
+  my $slug = slugify($file);
+
   # Get response based on query parameter
-  my $response = $c->load_response(slugify($file));
+  my $response = $c->load_response($slug);
   return $c->render(%$response);
 };
 
diff --git a/t/fixtures/response_matchinfo_fail_x_x_p0-1.json b/t/fixtures/response_matchinfo_fail_x_x_p0-1.json
new file mode 100644
index 0000000..13f9ef4
--- /dev/null
+++ b/t/fixtures/response_matchinfo_fail_x_x_p0-1.json
@@ -0,0 +1,7 @@
+{
+  "status":200,
+  "json" : {
+    "@context":"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+    "met
+  }
+}
diff --git a/t/fixtures/response_matchinfo_goe_agf_02286_p-2-0.json b/t/fixtures/response_matchinfo_goe_agf_02286_p-2-0.json
new file mode 100644
index 0000000..d743984
--- /dev/null
+++ b/t/fixtures/response_matchinfo_goe_agf_02286_p-2-0.json
@@ -0,0 +1,14 @@
+{
+  "status":200,
+  "json" : {
+    "errors":[
+      [730,"Invalid match identifier","match-GOE/AGF/02286-p-2-0"]
+    ],
+    "@context":"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+    "meta":{
+      "version":"Krill-0.58.0"
+    },
+    "startMore":true,
+    "endMore":true
+  }
+}
diff --git a/t/fixtures/response_matchinfo_goe_agf_02286_p75682-75683.json b/t/fixtures/response_matchinfo_goe_agf_02286_p75682-75683.json
new file mode 100644
index 0000000..9f91d10
--- /dev/null
+++ b/t/fixtures/response_matchinfo_goe_agf_02286_p75682-75683.json
@@ -0,0 +1,28 @@
+{
+  "status":200,
+  "json" : {
+    "@context":"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+    "meta":{
+      "version":"Krill-0.58.0"
+    },
+    "field":"tokens",
+    "pubPlace":"München",
+    "textSigle":"GOE/AGF/02286",
+    "docSigle":"GOE/AGF",
+    "corpusSigle":"GOE",
+    "title":"Materialien zur Geschichte der Farbenlehre",
+    "author":"Goethe, Johann Wolfgang von",
+    "availability":"QAO-NC",
+    "layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens",
+    "startMore":true,
+    "endMore":true,
+    "license":"QAO-NC",
+    "snippet":"<span class=\"context-left\"><span class=\"more\"></span></span><span class=\"match\"><mark>Baum</mark></span><span class=\"context-right\"><span class=\"more\"></span></span>",
+    "matchID":"match-GOE/AGF/02286-p75682-75683",
+    "pubDate":"1982",
+    "context":{
+      "left":["token",0],
+      "right":["token",0]
+    }
+  }
+}
diff --git a/t/fixtures/response_matchinfo_notfound2_x_x_p0-1.json b/t/fixtures/response_matchinfo_notfound2_x_x_p0-1.json
new file mode 100644
index 0000000..4a7e430
--- /dev/null
+++ b/t/fixtures/response_matchinfo_notfound2_x_x_p0-1.json
@@ -0,0 +1,4 @@
+{
+  "status":404,
+  "inline" : ""
+}
diff --git a/t/fixtures/response_matchinfo_notfound_x_x_p0-1.json b/t/fixtures/response_matchinfo_notfound_x_x_p0-1.json
new file mode 100644
index 0000000..b3cdf57
--- /dev/null
+++ b/t/fixtures/response_matchinfo_notfound_x_x_p0-1.json
@@ -0,0 +1,13 @@
+{
+  "status":200,
+  "json" : {
+    "@context":"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
+    "meta":{
+      "version":"Krill-0.58.0"
+    },
+    "textSigle":"NOTFOUND/X/X",
+    "startMore":true,
+    "endMore":true,
+    "matchID":"match-NOTFOUND/X/X-p0-1"
+  }
+}
diff --git a/t/match_info.t b/t/match_info.t
index 42a1aa7..3e4b72c 100644
--- a/t/match_info.t
+++ b/t/match_info.t
@@ -28,6 +28,46 @@
 $t->get_ok('/corpus2/WPD15/232/39681/p2133-2134?spans=false&foundry=*')
   ->status_is(200)
   ->json_is('/textSigle', 'WPD15/232/39681')
+  ->json_like('/snippet', qr!<span class=\"context-left\">!)
   ;
 
+$t->get_ok('/corpus2/GOE/AGF/02286/p75682-75683')
+  ->status_is(200)
+  ->json_is('/textSigle', 'GOE/AGF/02286')
+  ->json_is('/title','Materialien zur Geschichte der Farbenlehre')
+  ;
+
+# TODO:
+#   It's surprising, that it doesn't return a 404!
+$t->get_ok('/corpus2/notfound/X/X/p0-1')
+  ->status_is(200)
+  ->json_is('/textSigle', 'NOTFOUND/X/X')
+  ->json_is('/corpusID', undef)
+  ;
+
+# TODO:
+#   Should probably return a 500!
+$t->get_ok('/corpus2/fail/x/x/p0-0')
+  ->status_is(200)
+  ->json_is('/notifications/0/0', 'error')
+  ->json_is('/notifications/0/1', '500: Internal Server Error')
+  ;
+
+# TODO:
+#   Should probably return a 4xx!
+$t->get_ok('/corpus2/GOE/AGF/02286/p-2-0')
+  ->status_is(200)
+  ->json_is('/notifications/0/0', 'error')
+  ->json_is('/notifications/0/1', '730: Invalid match identifier')
+  ;
+
+# TODO:
+#   It's surprising, that it doesn't return a 404!
+$t->get_ok('/corpus2/notfound2/X/X/p0-1')
+  ->status_is(200)
+  ->json_is('/notifications/0/0', 'error')
+  ->json_is('/notifications/0/1', '404: Not Found')
+  ;
+
+
 done_testing;
