Cleanup testbed
diff --git a/lib/Korap/Example.pm b/lib/Korap/Example.pm
deleted file mode 100644
index 58fbd8b..0000000
--- a/lib/Korap/Example.pm
+++ /dev/null
@@ -1,12 +0,0 @@
-package Korap::Example;
-use Mojo::Base 'Mojolicious::Controller';
-
-# This action will render a template
-sub welcome {
-  my $self = shift;
-
-  # Render template "example/welcome.html.ep" with message
-  $self->render(msg => 'Welcome to the Mojolicious real-time web framework!');
-}
-
-1;
diff --git a/lib/Korap/Plugin/KorapSearch.pm b/lib/Korap/Plugin/KorapSearch.pm
index 0245e5d..343e50d 100644
--- a/lib/Korap/Plugin/KorapSearch.pm
+++ b/lib/Korap/Plugin/KorapSearch.pm
@@ -2,6 +2,8 @@
 use Mojo::Base 'Mojolicious::Plugin';
 use Mojo::ByteStream 'b';
 
+# TODO: This will probably be an engine for M::P::Search
+
 sub register {
   my ($plugin, $mojo, $param) = @_;
   $param ||= {};
@@ -73,14 +75,18 @@
 
       my $ua = Mojo::UserAgent->new($url);
       $c->app->log->debug($url->to_string);
+
+      # Blocking request
+      # TODO: Make non-blocking
       my $tx = $ua->get($url);
 
+      # Request successful
       if (my $res = $tx->success) {
 	my $json = $res->json;
 
-	my $b_hit = $json->{benchmarkHitCounter};
+	# Reformat benchmark counter
+	my $b_hit    = $json->{benchmarkHitCounter};
 	my $b_search = $json->{benchmarkSearchResults};
-
 	if ($b_hit =~ s/\s+(m)?s$//) {
 	  $b_hit = sprintf("%.2f", $b_hit) . ($1 ? $1 : '') . 's';
 	};
@@ -88,21 +94,30 @@
 	  $b_search = sprintf("%.2f", $b_search) . ($1 ? $1 : '') . 's';
 	};
 
-	$c->stash('search.bm.hit' => $b_hit);
-	$c->stash('search.bm.result' => $b_search);
-	$c->stash('search.itemsPerPage' => $json->{itemsPerPage});
+	for ($c->stash) {
+	  $_->{'search.bm.hit'}       = $b_hit;
+	  $_->{'search.bm.result'}    = $b_search;
+	  $_->{'search.itemsPerPage'} = $json->{itemsPerPage};
+	  $_->{'search.query'}        = $json->{request}->{query};
+	  $_->{'search.hits'}         = $json->{matches};
+	  $_->{'search.totalResults'} = $json->{totalResults};
+	};
+
 	if ($json->{error}) {
 	  $c->notify('error' => $json->{error});
 	};
-	$c->stash('search.query' => $json->{request}->{query});
-	$c->stash('search.hits' => $json->{matches});
-	$c->stash('search.totalResults' => $json->{totalResults});
       }
+
+      # Request failed
       else {
 	my $res = $tx->res;
 	$c->notify('error' =>  $res->code . ': ' . $res->message);
       };
+
+      # Run embedded template
       my $v = $cb->();
+
+      # Delete useless stash keys
       foreach (qw/hits totalResults bm.hit bm.result itemsPerPage error query/) {
 	delete $c->stash->{'search.' . $_};
       };
@@ -110,6 +125,8 @@
     }
   );
 
+
+  # Establish 'search_hits' helper
   $mojo->helper(
     search_hits => sub {
       my $c = shift;
@@ -122,15 +139,20 @@
 
       my $hits = delete $c->stash->{'search.hits'};
       my $string;
+
+      # Iterate over all hits
       foreach (@$hits) {
 	local $_ = $_;
 	$c->stash('search.hit' => $_);
 	$string .= $cb->($_);
       };
-      delete $c->stash->{'lucy.hit'};
+
+      # Delete unnecessary stash values
+      delete $c->stash->{'search.hit'};
       return b($string || '');
     }
   );
 };
 
+
 1;
diff --git a/lib/Korap/Plugin/Notifications.pm b/lib/Korap/Plugin/Notifications.pm
index c07df47..af1833b 100644
--- a/lib/Korap/Plugin/Notifications.pm
+++ b/lib/Korap/Plugin/Notifications.pm
@@ -4,6 +4,9 @@
 
 our $TYPE_RE = qr/^[-a-zA-Z_]+$/;
 
+# This will be separated published as Mojolicious::Plugin::Notifications
+# (wasn't exclusively developed for KorAP)
+
 # Todo: Support multiple notification center,
 #       so the notifications can be part of
 #       json as well as XML
@@ -21,7 +24,9 @@
 
   my $debug = $mojo->mode eq 'development' ? 1 : 0;
 
-  my $center = camelize(delete $param->{use} // __PACKAGE__ . '::HTML');
+  my $center = camelize(
+    delete $param->{use} // __PACKAGE__ . '::HTML'
+  );
 
   if (index($center,'::') < 0) {
     $center = __PACKAGE__ . '::' . $center;
@@ -111,26 +116,3 @@
 
 The notification won't be included in case no notifications are
 in the queue and no parameters are passed.
-
-
-
-% if (flash('fine') || flash('alert') || stash('fine') || stash('alert')) {
-%= javascript '/js/humane.min.js'
-%= javascript begin
-  humane.baseCls = 'humane-libnotify';
-%   if (flash('fine') || stash('fine')) {
-  humane.log("<%= l(flash('fine') || stash('fine')) %>", {
-    timeout: 3000,
-    clickToClose: true,
-    addnCls: 'humane-libnotify-success'
-  });
-%   };
-%   if (flash('alert') || stash('alert')) {
-  humane.log("<%= l(flash('alert') || stash('alert')) %>", {
-    timeout: 3000,
-    clickToClose: true,
-    addnCls: 'humane-libnotify-error'
-  });
-%   };
-%= end
-% };