diff --git a/lib/Kalamar/Plugin/KalamarErrors.pm b/lib/Kalamar/Plugin/KalamarErrors.pm
index fd4a174..977ecc5 100644
--- a/lib/Kalamar/Plugin/KalamarErrors.pm
+++ b/lib/Kalamar/Plugin/KalamarErrors.pm
@@ -2,6 +2,41 @@
 use Mojo::Base 'Mojolicious::Plugin';
 
 
+# Notify types
+sub _notify {
+  my ($c, $json, $type, $notify_type) = @_;
+  my $msgs = $json->{$type};
+
+  return unless $msgs;
+
+  # wrong structure
+  unless (ref $msgs && ref $msgs eq 'ARRAY') {
+    $c->notify(error => 'Message structure failed');
+    return 1;
+  }
+
+  # Get errors
+  foreach my $m (@$msgs) {
+
+    # Error is correctly defined
+    if (ref $m && ref $m eq 'ARRAY') {
+      $c->notify(
+        $notify_type =>
+          ($m->[0] ? $m->[0] . ': ' : '') .
+          ($m->[1] || 'Unknown')
+        );
+    }
+
+    # Wrong structure
+    else {
+      $c->notify(error => 'Message structure failed');
+    };
+  };
+
+  return 1;
+};
+
+
 # Register error plugin
 sub register {
   my ($plugin, $mojo) = @_;
@@ -11,42 +46,16 @@
   $mojo->helper(
     notify_on_warnings => sub {
       my ($c, $json) = @_;
-
-      my $warnings = $json->{warnings};
-
-      return unless $warnings;
-
-      # TODO: Check for ref!
-      foreach my $w (@$warnings) {
-        $c->notify(
-          warn =>
-            ($w->[0] ? $w->[0] . ': ' : '') .
-            $w->[1]
-          );
-      };
-
-      return 1;
+      return _notify($c, $json, 'warnings', 'warning');
     }
   );
 
+
   # Notify on errors
   $mojo->helper(
     notify_on_errors => sub {
       my ($c, $json) = @_;
-
-      my $errors = $json->{errors};
-
-      return unless $errors;
-
-      foreach my $e (@$errors) {
-        $c->notify(
-          error =>
-            ($e->[0] ? $e->[0] . ': ' : '') .
-            ($e->[1] || 'Unknown')
-          );
-      };
-
-      return 1;
+      return _notify($c, $json, 'errors', 'error');
     }
   );
 
@@ -77,9 +86,6 @@
       if ($json) {
         $c->stash(api_response => $json);
 
-        # TODO:
-        #   Check for references of errors and warnings!
-
         # There are errors
         if ($c->notify_on_errors($json)) {
 
diff --git a/t/fixtures/response_matchinfo_brokenerr2_x_x_p0-1.json b/t/fixtures/response_matchinfo_brokenerr2_x_x_p0-1.json
new file mode 100644
index 0000000..63e2dc6
--- /dev/null
+++ b/t/fixtures/response_matchinfo_brokenerr2_x_x_p0-1.json
@@ -0,0 +1,8 @@
+{
+  "comment" : "q=[orth=das",
+  "status" : 417,
+  "json" : {
+    "@context" : "http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld",
+    "errors" : "Error 1"
+  }
+}
diff --git a/t/fixtures/response_matchinfo_brokenerr_x_x_p0-1.json b/t/fixtures/response_matchinfo_brokenerr_x_x_p0-1.json
new file mode 100644
index 0000000..1ac2217
--- /dev/null
+++ b/t/fixtures/response_matchinfo_brokenerr_x_x_p0-1.json
@@ -0,0 +1,8 @@
+{
+  "comment" : "q=[orth=das",
+  "status" : 409,
+  "json" : {
+    "@context" : "http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld",
+    "errors" : [2, "Warning 3"]
+  }
+}
diff --git a/t/fixtures/response_matchinfo_brokenwarn_x_x_p0-1.json b/t/fixtures/response_matchinfo_brokenwarn_x_x_p0-1.json
new file mode 100644
index 0000000..bdd1d79
--- /dev/null
+++ b/t/fixtures/response_matchinfo_brokenwarn_x_x_p0-1.json
@@ -0,0 +1,11 @@
+{
+  "comment" : "q=[orth=das",
+  "status" : 200,
+  "json" : {
+    "@context" : "http://korap.ids-mannheim.de/ns/koral/0.3/context.jsonld",
+    "warnings" : [
+      [1, "Warning 1"],
+      "Warning 2"
+    ]
+  }
+}
diff --git a/t/match_info.t b/t/match_info.t
index 1b6f8ef..58191a5 100644
--- a/t/match_info.t
+++ b/t/match_info.t
@@ -69,6 +69,26 @@
   ->json_is('/notifications/0/1', '404: Not Found')
   ;
 
+$t->get_ok('/corpus2/brokenerr/X/X/p0-1')
+  ->status_is(409)
+  ->json_is('/notifications/0/0', 'error')
+  ->json_is('/notifications/0/1', 'Message structure failed')
+  ;
+
+$t->get_ok('/corpus2/brokenwarn/X/X/p0-1')
+  ->status_is(200)
+  ->json_is('/notifications/0/0', 'warning')
+  ->json_is('/notifications/0/1', '1: Warning 1')
+  ->json_is('/notifications/1/0', 'error')
+  ->json_is('/notifications/1/1', 'Message structure failed')
+  ;
+
+$t->get_ok('/corpus2/brokenerr2/X/X/p0-1')
+  ->status_is(417)
+  ->json_is('/notifications/0/0', 'error')
+  ->json_is('/notifications/0/1', 'Message structure failed')
+  ;
+
 
 done_testing;
 __END__
