diff --git a/.gitignore b/.gitignore
index bb07aac..43657d5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,5 +24,6 @@
 *.db
 *.old
 .*
+t/kalamar_user_client.t
 !.gitignore
 npm-debug.log
\ No newline at end of file
diff --git a/kalamar.conf b/kalamar.conf
index 2fa18ef..79e4f70 100644
--- a/kalamar.conf
+++ b/kalamar.conf
@@ -1,14 +1,28 @@
 {
   Search => {
     engine => 'Kalamar::API',
-#    api => 'http://10.0.10.13:7070/api/v0.1/'
-    api => 'http://localhost:9999/api/v0.1/'
+    # api => 'http://10.0.10.13:7070/api/v0.1/'
+    # api => 'http://localhost:9999/api/v0.1/'
+    api => 'http://10.0.10.51:7070/api/v0.1/'
   },
   CHI => {
     default => {
       driver => 'FastMmap',
       root_dir => app->home . '/cache/data',
-      cache_size => '12m'
+      cache_size => '100m',
+      max_size => '100m'
+    },
+    user => {
+      l1_cache => {
+	driver => 'FastMmap',
+	root_dir => app->home . '/cache/usermap',
+	cache_size => '50m',
+	max_size => '50m'
+      },
+      driver => 'File',
+      root_dir => app->home . '/cache/userfile',
+      max_key_length => 64,
+      max_size => '500m'
     }
   },
   hypnotoad => {
diff --git a/lib/Kalamar/Plugin/KalamarUser.pm b/lib/Kalamar/Plugin/KalamarUser.pm
index a9ea947..a7d13bb 100644
--- a/lib/Kalamar/Plugin/KalamarUser.pm
+++ b/lib/Kalamar/Plugin/KalamarUser.pm
@@ -3,6 +3,7 @@
 use Mojo::ByteStream 'b';
 
 has 'api';
+has 'ua';
 
 sub register {
   my ($plugin, $mojo, $param) = @_;
@@ -14,6 +15,7 @@
 
   # Set API!
   $plugin->api($param->{api}) or return;
+  $plugin->ua(Mojo::UserAgent->new);
 
   # Get the user token necessary for authorization
   $mojo->helper(
@@ -36,7 +38,7 @@
       my $c = shift;
       my ($user, $pwd) = @_;
 
-      return if index($user, ':') >= 0;
+      return if (index($user, ':') >= 0);
 
       my $url = Mojo::URL->new($plugin->api)->path('auth/apiToken');
       my $tx = $c->ua->get($url => {
@@ -75,7 +77,7 @@
       my $c = shift;
       my $param = shift;
 
-      return unless $param =~ m/^details$/;
+      return unless $param =~ m/^details|settings$/;
 
       # The user may be logged in
       my $auth = ($c->stash('auth') || $c->session('auth')) or return;
@@ -90,7 +92,18 @@
       my $value = $chi->get($user . '_' . $param);
 
       unless ($value) {
-	$value = $plugin->get_authorized($auth, 'user/' . $param) or return;
+
+	my $tx = $plugin->build_authorized_tx($auth, 'GET', 'user/' . $param);
+	$tx = $plugin->ua->start($tx);
+	unless ($value = $tx->success) {
+#	  warn $tx->code;
+	  return;
+	}
+#	else {
+#	  warn $c->dumper($value->json);
+#	};
+	$value = $value->json;
+
 	$chi->set($user . '_' . $param => $value);
       };
 
@@ -118,21 +131,25 @@
   );
 };
 
-
-# Issue an authorized request
-sub get_authorized {
+sub build_authorized_tx {
   my $plugin = shift;
 
-  my ($auth, $path) = @_;
+  my $ua = $plugin->ua;
+  my ($auth, $method, $path, @values) = @_;
+
+  my $header;
+  if (@values && ref $values[0] eq 'HASH') {
+    $header = shift @values;
+  }
+  else {
+    $header = {};
+  };
+
   my $url = Mojo::URL->new($plugin->api)->path($path);
 
-  # Get authorized
-  # TODO: REUSE USERAGENT
-  my $tx = Mojo::UserAgent->new->get($url => {
-    Authorization => $auth
-  });
+  $header->{Authorization} = $auth;
 
-  return $tx->success ? $tx->success->json : undef;
+  return $ua->build_tx($method, $url => $header => @values);
 };
 
 
@@ -140,3 +157,11 @@
 
 
 __END__
+
+# Failure
+entity {
+  "errors":[
+    [204,"authentication token is expired","eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0MSIsImlzcyI6Imh0dHA6IiwiZXhwIjoxNDUyOTY2NzAxOTYxfQ.W_rJjJ8i82Srw7MiSPRGeIBLE-rMPmSPK9BA7Dt_7Yc"]
+  ]
+}
+
