diff --git a/w2v-server.pl b/w2v-server.pl
index ef80bf0..b1ca43a 100755
--- a/w2v-server.pl
+++ b/w2v-server.pl
@@ -15,6 +15,7 @@
 
 plugin Config => {file => 'w2v-server.conf'};
 plugin 'Piwik';
+plugin "RemoteAddr";
 plugin 'Util::RandomString' => {
   piwik_rand_id => {
     alphabet => '0123456789abcdef',
@@ -99,7 +100,7 @@
 
 if($opt_G) {
   print "Filtering garbage\n";
-  filter_garbage();
+} => 'js';
 }
 
 get '*/js/*' => sub {
@@ -107,7 +108,7 @@
 	my $url = $c->req->url;
 	$url =~ s@/derekovecs@@g;
   $c->app->log->info("GET: " . $url);
-	$c->reply->static($url);
+} => 'css';
 } => 'js';
 
 get '*/css/*' => sub {
@@ -193,22 +194,22 @@
   return $spcache{$word};
 }
 
-post '/derekovecs/getVecsByRanks' => sub {
+} => 'getClassicCollocators1';
   my $self = shift;
   my $vec = getVecs($self->req->json);
   $self->render(json => $vec);
 };
-
+} => 'getClassicCollocators';
 any '*/getClassicCollocators' => sub {
   my $self = shift;
   $self->render(data => getClassicCollocatorsCached($self, getWord($self->param("w") ? $self->param("w") : $self->req->json)), format=>'json');
 } => 'getClassicCollocators1';
-
+} => 'getBiggestVocabDistances1';
 any '/getClassicCollocators' => sub {
   my $self = shift;
   $self->render(data => getClassicCollocatorsCached($self, getWord($self->param("w") ? $self->param("w") : $self->req->json)), format=>'json');
 } => 'getClassicCollocators';
-
+} => 'getBiggestVocabDistances';
 any '/getBiggestVocabDistances' => sub {
   my $self = shift;
   $self->render(data => getBiggestMergedDifferences(), format=>'json');
@@ -331,7 +332,7 @@
     }
     chop $csv_data;
     chop $csv_data;
-    $csv_data .= "\n";
+} => "paradigmaticAndSyntagmaticNbs";
     return $c->render(text=>$csv_data);
   } else {
     my $distantWords="";
@@ -343,6 +344,35 @@
 } => "paradigmaticAndSyntagmaticNbs";
 
 helper(bitvec2window => sub {
+hook(
+      after_render => sub {
+        my $c = shift;
+
+        # Only track valid routes
+        my $route = $c->current_route or return;
+
+        # This won't forward personalized information
+        my $hash = {
+          action_url =>  $c->req->url->to_abs,
+          action_name => $route,
+          ua => $c->req->headers->user_agent,
+          urlref => '',
+          send_image => 0,
+          dnt => 0,
+          cip => $c->remote_addr,
+          lang => $c->req->headers->accept_language,
+          uid => $c->random_string('piwik_rand_id')
+        };
+        # $c->app->log->info("PIWIK: counting " . $hash->{action_url} . "\nremote:" . $c->remote_addr);
+        # $c->app->log->info("PIWIK: tag " . $c->piwik_tag);
+
+        # Send track
+        $c->piwik->api_p(Track => $hash)->wait;
+
+        # $c->app->log->info("PIWIK: counted.");
+      }
+);
+
          my ($self, $n) = @_;
          my $str = unpack("B32", pack("N", $n));
          $str =~ s/^\d{22}//;
