Straightening out imports and dependencies for better use in identity and provisioner.
diff --git a/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/ExampleConfiguration.java b/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/ExampleConfiguration.java
index f0ab242..7e23f49 100644
--- a/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/ExampleConfiguration.java
+++ b/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/ExampleConfiguration.java
@@ -28,7 +28,7 @@
 @Configuration
 @EnableAutoConfiguration
 @EnableTenantContext
-@EnableAnubis(storeTenantKeysAtInitialization = false)
+@EnableAnubis(provideSignatureStorage = false)
 @EnableServiceException
 @ComponentScan({
     "io.mifos.anubis.example.nokeystorage"
diff --git a/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/SpecialTenantSignatureRepository.java b/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/SpecialTenantSignatureRepository.java
index c74903f..679d4e3 100644
--- a/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/SpecialTenantSignatureRepository.java
+++ b/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/SpecialTenantSignatureRepository.java
@@ -63,4 +63,21 @@
     final Optional<ApplicationSignatureSet> sigset = Optional.ofNullable(applicationSignatureSetMap.get(timestamp));
     return sigset.map(ApplicationSignatureSet::getApplicationSignature);
   }
+
+  @Override
+  public Optional<ApplicationSignatureSet> getLatestSignatureSet() {
+    Optional<String> timestamp = getMostRecentTimestamp();
+    return timestamp.flatMap(this::getSignatureSet);
+  }
+
+  @Override
+  public Optional<Signature> getLatestApplicationSignature() {
+    Optional<String> timestamp = getMostRecentTimestamp();
+    return timestamp.flatMap(this::getApplicationSignature);
+  }
+
+  private Optional<String> getMostRecentTimestamp() {
+    return getAllSignatureSetKeyTimestamps().stream()
+            .max(String::compareTo);
+  }
 }
diff --git a/library/src/main/java/io/mifos/anubis/config/AnubisImportSelector.java b/library/src/main/java/io/mifos/anubis/config/AnubisImportSelector.java
index 7da83f3..2d5c6c7 100644
--- a/library/src/main/java/io/mifos/anubis/config/AnubisImportSelector.java
+++ b/library/src/main/java/io/mifos/anubis/config/AnubisImportSelector.java
@@ -55,24 +55,30 @@
     classesToImport.add(GuestAuthenticator.class);
 
     classesToImport.add(PermittableRestController.class);
-    classesToImport.add(SignatureRestController.class);
     classesToImport.add(PermittableService.class);
 
-    final boolean storeTenantKeysAtInitialization = (boolean)importingClassMetadata
-        .getAnnotationAttributes(EnableAnubis.class.getTypeName())
-        .get("storeTenantKeysAtInitialization");
+    final boolean provideSignatureRestController = (boolean)importingClassMetadata
+            .getAnnotationAttributes(EnableAnubis.class.getTypeName())
+            .get("provideSignatureRestController");
+    final boolean provideSignatureStorage = (boolean) importingClassMetadata
+            .getAnnotationAttributes(EnableAnubis.class.getTypeName())
+            .get("provideSignatureStorage");
+    final boolean generateEmptyInitializeEndpoint = (boolean)importingClassMetadata
+            .getAnnotationAttributes(EnableAnubis.class.getTypeName())
+            .get("generateEmptyInitializeEndpoint");
 
-    if (storeTenantKeysAtInitialization) {
-      classesToImport.add(SignatureCreatorRestController.class);
+    if (provideSignatureRestController) {
+      classesToImport.add(SignatureRestController.class);
+
+      if (provideSignatureStorage)
+        classesToImport.add(SignatureCreatorRestController.class);
+    }
+
+    if (provideSignatureStorage)
       classesToImport.add(TenantAuthorizationDataRepository.class);
 
-      final boolean generateEmptyInitializeEndpoint = (boolean)importingClassMetadata
-          .getAnnotationAttributes(EnableAnubis.class.getTypeName())
-          .get("generateEmptyInitializeEndpoint");
-
-      if (generateEmptyInitializeEndpoint)
-        classesToImport.add(EmptyInitializeResourcesRestController.class);
-    }
+    if (generateEmptyInitializeEndpoint)
+      classesToImport.add(EmptyInitializeResourcesRestController.class);
 
 
     return classesToImport.stream().map(Class::getCanonicalName).toArray(String[]::new);
diff --git a/library/src/main/java/io/mifos/anubis/config/EnableAnubis.java b/library/src/main/java/io/mifos/anubis/config/EnableAnubis.java
index 9eb6fee..555e6fb 100644
--- a/library/src/main/java/io/mifos/anubis/config/EnableAnubis.java
+++ b/library/src/main/java/io/mifos/anubis/config/EnableAnubis.java
@@ -29,6 +29,7 @@
     AnubisSecurityConfigurerAdapter.class
 })
 public @interface EnableAnubis {
-  boolean storeTenantKeysAtInitialization() default true;
+  boolean provideSignatureRestController() default true;
+  boolean provideSignatureStorage() default true;
   boolean generateEmptyInitializeEndpoint() default false;
 }
diff --git a/library/src/main/java/io/mifos/anubis/config/TenantSignatureRepository.java b/library/src/main/java/io/mifos/anubis/config/TenantSignatureRepository.java
index de6b1eb..5ab3d40 100644
--- a/library/src/main/java/io/mifos/anubis/config/TenantSignatureRepository.java
+++ b/library/src/main/java/io/mifos/anubis/config/TenantSignatureRepository.java
@@ -35,7 +35,11 @@
 
   Optional<ApplicationSignatureSet> getSignatureSet(String timestamp);
 
+  Optional<ApplicationSignatureSet> getLatestSignatureSet();
+
   void deleteSignatureSet(String timestamp);
 
   Optional<Signature> getApplicationSignature(String timestamp);
+
+  Optional<Signature> getLatestApplicationSignature();
 }
diff --git a/library/src/main/java/io/mifos/anubis/controller/SignatureRestController.java b/library/src/main/java/io/mifos/anubis/controller/SignatureRestController.java
index 33f1248..205ea0f 100644
--- a/library/src/main/java/io/mifos/anubis/controller/SignatureRestController.java
+++ b/library/src/main/java/io/mifos/anubis/controller/SignatureRestController.java
@@ -72,8 +72,7 @@
   public
   @ResponseBody ResponseEntity<ApplicationSignatureSet> getLatestSignatureSet()
   {
-    final Optional<String> timestamp = getMostRecentTimestamp();
-    return timestamp.flatMap(tenantSignatureRepository::getSignatureSet)
+    return tenantSignatureRepository.getLatestSignatureSet()
             .map(ResponseEntity::ok)
             .orElseThrow(() -> ServiceException.notFound("No valid signature found."));
   }
@@ -108,14 +107,8 @@
   public
   @ResponseBody ResponseEntity<Signature> getLatestApplicationSignature()
   {
-    final Optional<String> timestamp = getMostRecentTimestamp();
-    return timestamp.flatMap(tenantSignatureRepository::getApplicationSignature)
+    return tenantSignatureRepository.getLatestApplicationSignature()
             .map(ResponseEntity::ok)
             .orElseThrow(() -> ServiceException.notFound("No valid signature found."));
   }
-
-  private Optional<String> getMostRecentTimestamp() {
-    return tenantSignatureRepository.getAllSignatureSetKeyTimestamps().stream()
-            .max(String::compareTo);
-  }
 }
\ No newline at end of file
diff --git a/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java b/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java
index c6e5c9e..d07aed7 100644
--- a/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java
+++ b/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java
@@ -111,11 +111,6 @@
     return new Signature(applicationSignature.getPublicKeyMod(), applicationSignature.getPublicKeyExp());
   }
 
-  public Optional<ApplicationSignatureSet> getSignatureSet(final String timestamp) {
-    Assert.notNull(timestamp);
-    return getRow(timestamp).map(TenantAuthorizationDataRepository::mapRowToSignatureSet);
-  }
-
   public void deleteSignatureSet(final String timestamp) {
     Assert.notNull(timestamp);
     //Don't actually delete, just invalidate, so that if someone starts coming at me with an older keyset, I'll
@@ -303,4 +298,26 @@
             .map(x -> x.get(TIMESTAMP_COLUMN, String.class))
             .collect(Collectors.toList());
   }
+
+  public Optional<ApplicationSignatureSet> getSignatureSet(final String timestamp) {
+    Assert.notNull(timestamp);
+    return getRow(timestamp).map(TenantAuthorizationDataRepository::mapRowToSignatureSet);
+  }
+
+  @Override
+  public Optional<ApplicationSignatureSet> getLatestSignatureSet() {
+    Optional<String> timestamp = getMostRecentTimestamp();
+    return timestamp.flatMap(this::getSignatureSet);
+  }
+
+  @Override
+  public Optional<Signature> getLatestApplicationSignature() {
+    Optional<String> timestamp = getMostRecentTimestamp();
+    return timestamp.flatMap(this::getApplicationSignature);
+  }
+
+  private Optional<String> getMostRecentTimestamp() {
+    return getAllSignatureSetKeyTimestamps().stream()
+            .max(String::compareTo);
+  }
 }
\ No newline at end of file