killbill-uncached

removed cache

10/8/2019 2:50:51 PM

Changes

ignored 1(+1 -0)

Details

diff --git a/account/src/main/java/org/killbill/billing/account/api/svcs/DefaultAccountInternalApi.java b/account/src/main/java/org/killbill/billing/account/api/svcs/DefaultAccountInternalApi.java
index 8cf856a..e6d0a05 100644
--- a/account/src/main/java/org/killbill/billing/account/api/svcs/DefaultAccountInternalApi.java
+++ b/account/src/main/java/org/killbill/billing/account/api/svcs/DefaultAccountInternalApi.java
@@ -41,11 +41,11 @@ import org.killbill.billing.account.dao.AccountEmailModelDao;
 import org.killbill.billing.account.dao.AccountModelDao;
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.cache.AccountBCDCacheLoader;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.AccountBCDCacheLoader;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
 import org.killbill.billing.util.dao.NonEntityDao;
 
 import com.google.common.base.Function;
@@ -57,17 +57,16 @@ public class DefaultAccountInternalApi extends DefaultAccountApiBase implements 
 
     private final ImmutableAccountInternalApi immutableAccountInternalApi;
     private final AccountDao accountDao;
-    private final CacheController<UUID, Integer> bcdCacheController;
+    // private final CacheController<UUID, Integer> bcdCacheController;
 
     @Inject
     public DefaultAccountInternalApi(final ImmutableAccountInternalApi immutableAccountInternalApi,
                                      final AccountDao accountDao,
-                                     final NonEntityDao nonEntityDao,
-                                     final CacheControllerDispatcher cacheControllerDispatcher) {
-        super(accountDao, nonEntityDao, cacheControllerDispatcher);
+                                     final NonEntityDao nonEntityDao) {
+        super(accountDao, nonEntityDao);
         this.immutableAccountInternalApi = immutableAccountInternalApi;
         this.accountDao = accountDao;
-        this.bcdCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_BCD);
+        // this.bcdCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_BCD);
     }
 
     @Override
@@ -99,17 +98,18 @@ public class DefaultAccountInternalApi extends DefaultAccountApiBase implements 
         final MutableAccountData mutableAccountData = currentAccount.toMutableAccountData();
         mutableAccountData.setBillCycleDayLocal(bcd);
         final AccountModelDao accountToUpdate = new AccountModelDao(currentAccount.getId(), mutableAccountData);
-        bcdCacheController.remove(currentAccount.getId());
-        bcdCacheController.putIfAbsent(currentAccount.getId(), new Integer(bcd));
+        // bcdCacheController.remove(currentAccount.getId());
+        // bcdCacheController.putIfAbsent(currentAccount.getId(), new Integer(bcd));
         accountDao.update(accountToUpdate, true, context);
     }
 
     @Override
     public int getBCD(final InternalTenantContext context) throws AccountApiException {
-        final CacheLoaderArgument arg = createBCDCacheLoaderArgument(context);
+        // final CacheLoaderArgument arg = createBCDCacheLoaderArgument(context);
         Preconditions.checkNotNull(context.getAccountRecordId(), "Context missing accountRecordId");
         final ImmutableAccountData account = immutableAccountInternalApi.getImmutableAccountDataByRecordId(context.getAccountRecordId(), context);
-        final Integer result = bcdCacheController.get(account.getId(), arg);
+        // final Integer result = bcdCacheController.get(account.getId(), arg);
+        final Integer result = accountDao.getAccountBCD(account.getId(), context);
         return result != null ? result : DefaultMutableAccountData.DEFAULT_BILLING_CYCLE_DAY_LOCAL;
     }
 
@@ -160,23 +160,23 @@ public class DefaultAccountInternalApi extends DefaultAccountApiBase implements 
         return accountModelDao;
     }
 
-    private CacheLoaderArgument createBCDCacheLoaderArgument(final InternalTenantContext context) {
-        final AccountBCDCacheLoader.LoaderCallback loaderCallback = new AccountBCDCacheLoader.LoaderCallback() {
-            @Override
-            public Integer loadAccountBCD(final UUID accountId, final InternalTenantContext context) {
-                Integer result = accountDao.getAccountBCD(accountId, context);
-                if (result != null) {
-                    // If the value is 0, then account BCD was not set so we don't want to create a cache entry
-                    result = result.equals(DefaultMutableAccountData.DEFAULT_BILLING_CYCLE_DAY_LOCAL) ? null : result;
-                }
-                return result;
-            }
-        };
-        final Object[] args = new Object[1];
-        args[0] = loaderCallback;
-        final ObjectType irrelevant = null;
-        return new CacheLoaderArgument(irrelevant, args, context);
-    }
+    // private CacheLoaderArgument createBCDCacheLoaderArgument(final InternalTenantContext context) {
+    //     final AccountBCDCacheLoader.LoaderCallback loaderCallback = new AccountBCDCacheLoader.LoaderCallback() {
+    //         @Override
+    //         public Integer loadAccountBCD(final UUID accountId, final InternalTenantContext context) {
+    //             Integer result = accountDao.getAccountBCD(accountId, context);
+    //             if (result != null) {
+    //                 // If the value is 0, then account BCD was not set so we don't want to create a cache entry
+    //                 result = result.equals(DefaultMutableAccountData.DEFAULT_BILLING_CYCLE_DAY_LOCAL) ? null : result;
+    //             }
+    //             return result;
+    //         }
+    //     };
+    //     final Object[] args = new Object[1];
+    //     args[0] = loaderCallback;
+    //     final ObjectType irrelevant = null;
+    //     return new CacheLoaderArgument(irrelevant, args, context);
+    // }
 
     @Override
     public List<Account> getChildrenAccounts(final UUID parentAccountId, final InternalCallContext context) throws AccountApiException {
diff --git a/account/src/main/java/org/killbill/billing/account/api/svcs/DefaultImmutableAccountInternalApi.java b/account/src/main/java/org/killbill/billing/account/api/svcs/DefaultImmutableAccountInternalApi.java
index b7f27de..6adb006 100644
--- a/account/src/main/java/org/killbill/billing/account/api/svcs/DefaultImmutableAccountInternalApi.java
+++ b/account/src/main/java/org/killbill/billing/account/api/svcs/DefaultImmutableAccountInternalApi.java
@@ -31,11 +31,11 @@ import org.killbill.billing.account.api.ImmutableAccountInternalApi;
 import org.killbill.billing.account.dao.AccountModelDao;
 import org.killbill.billing.account.dao.AccountSqlDao;
 import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
-import org.killbill.billing.util.cache.ImmutableAccountCacheLoader.LoaderCallback;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.ImmutableAccountCacheLoader.LoaderCallback;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.dao.EntitySqlDao;
 import org.killbill.billing.util.entity.dao.EntitySqlDaoTransactionWrapper;
@@ -52,46 +52,49 @@ public class DefaultImmutableAccountInternalApi implements ImmutableAccountInter
 
     private final EntitySqlDaoTransactionalJdbiWrapper transactionalSqlDao;
     private final NonEntityDao nonEntityDao;
-    private final CacheController<Long, ImmutableAccountData> accountCacheController;
-    private final CacheController<String, Long> recordIdCacheController;
+    // private final CacheController<Long, ImmutableAccountData> accountCacheController;
+    // private final CacheController<String, Long> recordIdCacheController;
 
     @Inject
     public DefaultImmutableAccountInternalApi(final IDBI dbi,
                                               @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi,
                                               final Clock clock,
-                                              final NonEntityDao nonEntityDao,
-                                              final CacheControllerDispatcher cacheControllerDispatcher) {
+                                              final NonEntityDao nonEntityDao) {
         // This API will directly issue queries instead of relying on the DAO (introduced to avoid Guice circular dependencies with InternalCallContextFactory)
-        this.transactionalSqlDao = new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, null);
+        this.transactionalSqlDao = new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock,
+         // null,
+          nonEntityDao, null);
         this.nonEntityDao = nonEntityDao;
-        this.accountCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_IMMUTABLE);
-        this.recordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.RECORD_ID);
+        // this.accountCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_IMMUTABLE);
+        // this.recordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.RECORD_ID);
     }
 
     @Override
     public ImmutableAccountData getImmutableAccountDataById(final UUID accountId, final InternalTenantContext context) throws AccountApiException {
-        final Long recordId = nonEntityDao.retrieveRecordIdFromObject(accountId, ObjectType.ACCOUNT, recordIdCacheController);
+        final Long recordId = nonEntityDao.retrieveRecordIdFromObject(accountId, ObjectType.ACCOUNT, null);
         return getImmutableAccountDataByRecordId(recordId, context);
     }
 
     @Override
     public ImmutableAccountData getImmutableAccountDataByRecordId(final Long recordId, final InternalTenantContext context) throws AccountApiException {
-        final CacheLoaderArgument arg = createImmutableAccountCacheLoaderArgument(context);
-        return accountCacheController.get(recordId, arg);
+        // final CacheLoaderArgument arg = createImmutableAccountCacheLoaderArgument(context);
+        // return accountCacheController.get(recordId, arg);
+        final Account account = getAccountByRecordIdInternal(recordId, context);
+        return account != null ? new DefaultImmutableAccountData(account) : null;
     }
 
-    private CacheLoaderArgument createImmutableAccountCacheLoaderArgument(final InternalTenantContext context) {
-        final LoaderCallback loaderCallback = new LoaderCallback() {
-            @Override
-            public ImmutableAccountData loadAccount(final Long recordId, final InternalTenantContext context) {
-                final Account account = getAccountByRecordIdInternal(recordId, context);
-                return account != null ? new DefaultImmutableAccountData(account) : null;
-            }
-        };
-
-        final Object[] args = {loaderCallback};
-        return new CacheLoaderArgument(null, args, context);
-    }
+    // private CacheLoaderArgument createImmutableAccountCacheLoaderArgument(final InternalTenantContext context) {
+    //     final LoaderCallback loaderCallback = new LoaderCallback() {
+    //         @Override
+    //         public ImmutableAccountData loadAccount(final Long recordId, final InternalTenantContext context) {
+    //             final Account account = getAccountByRecordIdInternal(recordId, context);
+    //             return account != null ? new DefaultImmutableAccountData(account) : null;
+    //         }
+    //     };
+
+    //     final Object[] args = {loaderCallback};
+    //     return new CacheLoaderArgument(null, args, context);
+    // }
 
     private Account getAccountByRecordIdInternal(final Long recordId, final InternalTenantContext context) {
         final AccountModelDao accountModelDao = transactionalSqlDao.execute(true, new EntitySqlDaoTransactionWrapper<AccountModelDao>() {
diff --git a/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountApiBase.java b/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountApiBase.java
index a77c9e7..881d737 100644
--- a/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountApiBase.java
+++ b/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountApiBase.java
@@ -29,34 +29,33 @@ import org.killbill.billing.account.api.ImmutableAccountData;
 import org.killbill.billing.account.dao.AccountDao;
 import org.killbill.billing.account.dao.AccountModelDao;
 import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.dao.NonEntityDao;
 
 public class DefaultAccountApiBase {
 
     private final AccountDao accountDao;
-    private final CacheController<Long, ImmutableAccountData> accountCacheController;
-    private final CacheController<String, Long> recordIdCacheController;
+    // private final CacheController<Long, ImmutableAccountData> accountCacheController;
+    // private final CacheController<String, Long> recordIdCacheController;
     private final NonEntityDao nonEntityDao;
 
     public DefaultAccountApiBase(final AccountDao accountDao,
-                                 final NonEntityDao nonEntityDao,
-                                 final CacheControllerDispatcher cacheControllerDispatcher) {
+                                 final NonEntityDao nonEntityDao) {
         this.accountDao = accountDao;
         this.nonEntityDao = nonEntityDao;
-        this.accountCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_IMMUTABLE);
-        this.recordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.RECORD_ID);
+        // this.accountCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_IMMUTABLE);
+        // this.recordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.RECORD_ID);
     }
 
     protected Account getAccountById(final UUID accountId, final InternalTenantContext context) throws AccountApiException {
-        final Long recordId = nonEntityDao.retrieveRecordIdFromObject(accountId, ObjectType.ACCOUNT, recordIdCacheController);
+        final Long recordId = nonEntityDao.retrieveRecordIdFromObject(accountId, ObjectType.ACCOUNT, null);
         final Account account = getAccountByRecordIdInternal(recordId, context);
         if (account == null) {
             throw new AccountApiException(ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID, accountId);
         }
-        accountCacheController.putIfAbsent(recordId, new DefaultImmutableAccountData(account));
+        // accountCacheController.putIfAbsent(recordId, new DefaultImmutableAccountData(account));
         return account;
     }
 
@@ -66,8 +65,8 @@ public class DefaultAccountApiBase {
             throw new AccountApiException(ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_KEY, key);
         }
         final Account account = new DefaultAccount(accountModelDao);
-        final Long recordId = nonEntityDao.retrieveRecordIdFromObject(account.getId(), ObjectType.ACCOUNT, recordIdCacheController);
-        accountCacheController.putIfAbsent(recordId, new DefaultImmutableAccountData(account));
+        final Long recordId = nonEntityDao.retrieveRecordIdFromObject(account.getId(), ObjectType.ACCOUNT, null);
+        // accountCacheController.putIfAbsent(recordId, new DefaultImmutableAccountData(account));
         return account;
     }
 
diff --git a/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java b/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java
index c69c1a1..cd882e6 100644
--- a/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java
+++ b/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java
@@ -38,7 +38,7 @@ import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.util.api.AuditLevel;
 import org.killbill.billing.util.audit.AuditLogWithHistory;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.callcontext.TenantContext;
@@ -63,9 +63,8 @@ public class DefaultAccountUserApi extends DefaultAccountApiBase implements Acco
     public DefaultAccountUserApi(final ImmutableAccountInternalApi immutableAccountInternalApi,
                                  final AccountDao accountDao,
                                  final NonEntityDao nonEntityDao,
-                                 final CacheControllerDispatcher cacheControllerDispatcher,
                                  final InternalCallContextFactory internalCallContextFactory) {
-        super(accountDao, nonEntityDao, cacheControllerDispatcher);
+        super(accountDao, nonEntityDao);
         this.immutableAccountInternalApi = immutableAccountInternalApi;
         this.internalCallContextFactory = internalCallContextFactory;
         this.accountDao = accountDao;
diff --git a/account/src/main/java/org/killbill/billing/account/dao/DefaultAccountDao.java b/account/src/main/java/org/killbill/billing/account/dao/DefaultAccountDao.java
index 91cd877..1ab81f5 100644
--- a/account/src/main/java/org/killbill/billing/account/dao/DefaultAccountDao.java
+++ b/account/src/main/java/org/killbill/billing/account/dao/DefaultAccountDao.java
@@ -42,9 +42,9 @@ import org.killbill.billing.util.api.AuditLevel;
 import org.killbill.billing.util.audit.AuditLogWithHistory;
 import org.killbill.billing.util.audit.ChangeType;
 import org.killbill.billing.util.audit.dao.AuditDao;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.dao.TableName;
@@ -72,17 +72,19 @@ public class DefaultAccountDao extends EntityDaoBase<AccountModelDao, Account, A
 
     private static final Logger log = LoggerFactory.getLogger(DefaultAccountDao.class);
 
-    private final CacheController<Long, ImmutableAccountData> accountImmutableCacheController;
+    // private final CacheController<Long, ImmutableAccountData> accountImmutableCacheController;
     private final PersistentBus eventBus;
     private final InternalCallContextFactory internalCallContextFactory;
     private final Clock clock;
     private final AuditDao auditDao;
 
     @Inject
-    public DefaultAccountDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final PersistentBus eventBus, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher,
+    public DefaultAccountDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final PersistentBus eventBus, final Clock clock,
                              final InternalCallContextFactory internalCallContextFactory, final NonEntityDao nonEntityDao, final AuditDao auditDao) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory), AccountSqlDao.class);
-        this.accountImmutableCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_IMMUTABLE);
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock,
+         // null,
+          nonEntityDao, internalCallContextFactory), AccountSqlDao.class);
+        // this.accountImmutableCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_IMMUTABLE);
         this.eventBus = eventBus;
         this.internalCallContextFactory = internalCallContextFactory;
         this.clock = clock;
@@ -101,9 +103,9 @@ public class DefaultAccountDao extends EntityDaoBase<AccountModelDao, Account, A
 
         final AccountModelDao refreshedEntity = transactionalSqlDao.execute(false, getCreateEntitySqlDaoTransactionWrapper(entity, context));
         // Populate the caches only after the transaction has been committed, in case of rollbacks
-        transactionalSqlDao.populateCaches(refreshedEntity);
+        // transactionalSqlDao.populateCaches(refreshedEntity);
         // Eagerly populate the account-immutable cache as well
-        accountImmutableCacheController.putIfAbsent(refreshedEntity.getRecordId(), new DefaultImmutableAccountData(refreshedEntity));
+        // accountImmutableCacheController.putIfAbsent(refreshedEntity.getRecordId(), new DefaultImmutableAccountData(refreshedEntity));
     }
 
     @Override
diff --git a/api/src/main/java/org/killbill/billing/tenant/api/TenantInternalApi.java b/api/src/main/java/org/killbill/billing/tenant/api/TenantInternalApi.java
index 73f06f0..6fe5f9e 100644
--- a/api/src/main/java/org/killbill/billing/tenant/api/TenantInternalApi.java
+++ b/api/src/main/java/org/killbill/billing/tenant/api/TenantInternalApi.java
@@ -25,17 +25,17 @@ import org.killbill.billing.tenant.api.TenantKV.TenantKey;
 
 public interface TenantInternalApi {
 
-    public interface CacheInvalidationCallback {
+    // public interface CacheInvalidationCallback {
 
-        /**
-         * @param key           the TenantKey
-         * @param cookie        the cookie that should be interpreted by the specific implementation of the CacheInvalidationCallback.
-         * @param tenantContext the context containing the tenant info
-         */
-        public void invalidateCache(TenantKey key, Object cookie, InternalTenantContext tenantContext);
-    }
+    //     /**
+    //      * @param key           the TenantKey
+    //      * @param cookie        the cookie that should be interpreted by the specific implementation of the CacheInvalidationCallback.
+    //      * @param tenantContext the context containing the tenant info
+    //      */
+    //     public void invalidateCache(TenantKey key, Object cookie, InternalTenantContext tenantContext);
+    // }
 
-    public void initializeCacheInvalidationCallback(final TenantKey key, final CacheInvalidationCallback cacheInvalidationCallback);
+    // public void initializeCacheInvalidationCallback(final TenantKey key, final CacheInvalidationCallback cacheInvalidationCallback);
 
     public List<String> getTenantCatalogs(InternalTenantContext tenantContext);
 
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/caching/CatalogCacheInvalidationCallback.java b/catalog/src/main/java/org/killbill/billing/catalog/caching/CatalogCacheInvalidationCallback.java
index 852cd06..5efee02 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/caching/CatalogCacheInvalidationCallback.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/caching/CatalogCacheInvalidationCallback.java
@@ -15,30 +15,30 @@
  * under the License.
  */
 
-package org.killbill.billing.catalog.caching;
+// package org.killbill.billing.catalog.caching;
 
-import javax.inject.Inject;
+// import javax.inject.Inject;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
-import org.killbill.billing.tenant.api.TenantKV.TenantKey;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantKV.TenantKey;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-public class CatalogCacheInvalidationCallback implements CacheInvalidationCallback {
+// public class CatalogCacheInvalidationCallback implements CacheInvalidationCallback {
 
-    private final Logger log = LoggerFactory.getLogger(CatalogCacheInvalidationCallback.class);
+//     private final Logger log = LoggerFactory.getLogger(CatalogCacheInvalidationCallback.class);
 
-    private final CatalogCache catalogCache;
+//     private final CatalogCache catalogCache;
 
-    @Inject
-    public CatalogCacheInvalidationCallback(final CatalogCache catalogCache) {
-        this.catalogCache = catalogCache;
-    }
+//     @Inject
+//     public CatalogCacheInvalidationCallback(final CatalogCache catalogCache) {
+//         this.catalogCache = catalogCache;
+//     }
 
-    @Override
-    public void invalidateCache(TenantKey key, final Object cookie, final InternalTenantContext tenantContext) {
-        log.info("Invalidate catalog cache for tenantRecordId='{}'", tenantContext.getTenantRecordId());
-        catalogCache.clearCatalog(tenantContext);
-    }
-}
+//     @Override
+//     public void invalidateCache(TenantKey key, final Object cookie, final InternalTenantContext tenantContext) {
+//         log.info("Invalidate catalog cache for tenantRecordId='{}'", tenantContext.getTenantRecordId());
+//         catalogCache.clearCatalog(tenantContext);
+//     }
+// }
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultCatalogCache.java b/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultCatalogCache.java
index 067bd95..c895dcc 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultCatalogCache.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultCatalogCache.java
@@ -38,11 +38,11 @@ import org.killbill.billing.catalog.plugin.api.CatalogPluginApi;
 import org.killbill.billing.catalog.plugin.api.VersionedPluginCatalog;
 import org.killbill.billing.osgi.api.OSGIServiceRegistration;
 import org.killbill.billing.payment.api.PluginProperty;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
-import org.killbill.billing.util.cache.TenantCatalogCacheLoader.LoaderCallback;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.TenantCatalogCacheLoader.LoaderCallback;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.callcontext.TenantContext;
 import org.slf4j.Logger;
@@ -56,10 +56,10 @@ public class DefaultCatalogCache implements CatalogCache {
 
     private final Logger logger = LoggerFactory.getLogger(DefaultCatalogCache.class);
 
-    private final CacheController<Long, DefaultVersionedCatalog> cacheController;
+    // private final CacheController<Long, DefaultVersionedCatalog> cacheController;
     private final VersionedCatalogLoader loader;
-    private final CacheLoaderArgument cacheLoaderArgumentWithTemplateFiltering;
-    private final CacheLoaderArgument cacheLoaderArgument;
+    // private final CacheLoaderArgument cacheLoaderArgumentWithTemplateFiltering;
+    // private final CacheLoaderArgument cacheLoaderArgument;
     private final OSGIServiceRegistration<CatalogPluginApi> pluginRegistry;
     private final VersionedCatalogMapper versionedCatalogMapper;
     private final PriceOverride priceOverride;
@@ -70,18 +70,18 @@ public class DefaultCatalogCache implements CatalogCache {
     @Inject
     public DefaultCatalogCache(final OSGIServiceRegistration<CatalogPluginApi> pluginRegistry,
                                final VersionedCatalogMapper versionedCatalogMapper,
-                               final CacheControllerDispatcher cacheControllerDispatcher,
+                               // final CacheControllerDispatcher cacheControllerDispatcher,
                                final VersionedCatalogLoader loader,
                                final PriceOverride priceOverride,
                                final InternalCallContextFactory internalCallContextFactory) {
         this.pluginRegistry = pluginRegistry;
         this.versionedCatalogMapper = versionedCatalogMapper;
-        this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_CATALOG);
+        // this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_CATALOG);
         this.loader = loader;
         this.priceOverride = priceOverride;
         this.internalCallContextFactory = internalCallContextFactory;
-        this.cacheLoaderArgumentWithTemplateFiltering = initializeCacheLoaderArgument(true);
-        this.cacheLoaderArgument = initializeCacheLoaderArgument(false);
+        // this.cacheLoaderArgumentWithTemplateFiltering = initializeCacheLoaderArgument(true);
+        // this.cacheLoaderArgument = initializeCacheLoaderArgument(false);
         setDefaultCatalog();
     }
 
@@ -116,8 +116,8 @@ public class DefaultCatalogCache implements CatalogCache {
         // The cache loader might choke on some bad xml -- unlikely since we check its validity prior storing it,
         // but to be on the safe side;;
         try {
-            DefaultVersionedCatalog tenantCatalog = cacheController.get(tenantContext.getTenantRecordId(),
-                                                                        filterTemplateCatalog ? cacheLoaderArgumentWithTemplateFiltering : cacheLoaderArgument);
+            DefaultVersionedCatalog tenantCatalog =  null; // cacheController.get(tenantContext.getTenantRecordId(),
+                                                                        // filterTemplateCatalog ? cacheLoaderArgumentWithTemplateFiltering : cacheLoaderArgument);
             // It means we are using a default catalog in a multi-tenant deployment, that does not really match a real use case, but we want to support it
             // for test purpose.
             if (useDefaultCatalog && tenantCatalog == null) {
@@ -126,7 +126,7 @@ public class DefaultCatalogCache implements CatalogCache {
                     final StandaloneCatalogWithPriceOverride curWithOverride = new StandaloneCatalogWithPriceOverride(cur, priceOverride, tenantContext.getTenantRecordId(), internalCallContextFactory);
                     tenantCatalog.add(curWithOverride);
                 }
-                cacheController.putIfAbsent(tenantContext.getTenantRecordId(), tenantCatalog);
+                // cacheController.putIfAbsent(tenantContext.getTenantRecordId(), tenantCatalog);
             }
 
             if (tenantCatalog != null) {
@@ -141,9 +141,9 @@ public class DefaultCatalogCache implements CatalogCache {
 
     @Override
     public void clearCatalog(final InternalTenantContext tenantContext) {
-        if (!InternalCallContextFactory.INTERNAL_TENANT_RECORD_ID.equals(tenantContext.getTenantRecordId())) {
-            cacheController.remove(tenantContext.getTenantRecordId());
-        }
+        // if (!InternalCallContextFactory.INTERNAL_TENANT_RECORD_ID.equals(tenantContext.getTenantRecordId())) {
+            // cacheController.remove(tenantContext.getTenantRecordId());
+        // }
     }
 
     private DefaultVersionedCatalog getCatalogFromPlugins(final InternalTenantContext internalTenantContext) throws CatalogApiException {
@@ -161,17 +161,17 @@ public class DefaultCatalogCache implements CatalogCache {
             //
             final DateTime latestCatalogUpdatedDate = plugin.getLatestCatalogVersion(ImmutableList.<PluginProperty>of(), tenantContext);
             // A null latestCatalogUpdatedDate bypasses caching, by fetching full catalog from plugin below (compatibility mode with 0.18.x or non optimized plugin api mode)
-            final boolean cacheable = latestCatalogUpdatedDate != null;
-            if (cacheable) {
-                final DefaultVersionedCatalog tenantCatalog = cacheController.get(internalTenantContext.getTenantRecordId(), cacheLoaderArgument);
-                if (tenantCatalog != null) {
-                    initializeCatalog(tenantCatalog);
-                    if (tenantCatalog.getEffectiveDate().compareTo(latestCatalogUpdatedDate.toDate()) == 0) {
-                        // Current cached version matches the one from the plugin
-                        return tenantCatalog;
-                    }
-                }
-            }
+            // final boolean cacheable = latestCatalogUpdatedDate != null;
+            // if (cacheable) {
+            //     final DefaultVersionedCatalog tenantCatalog = cacheController.get(internalTenantContext.getTenantRecordId(), cacheLoaderArgument);
+            //     if (tenantCatalog != null) {
+            //         initializeCatalog(tenantCatalog);
+            //         if (tenantCatalog.getEffectiveDate().compareTo(latestCatalogUpdatedDate.toDate()) == 0) {
+            //             // Current cached version matches the one from the plugin
+            //             return tenantCatalog;
+            //         }
+            //     }
+            // }
 
             final VersionedPluginCatalog pluginCatalog = plugin.getVersionedPluginCatalog(ImmutableList.<PluginProperty>of(), tenantContext);
             // First plugin that gets something (for that tenant) returns it
@@ -184,10 +184,10 @@ public class DefaultCatalogCache implements CatalogCache {
                 final DefaultVersionedCatalog resolvedPluginCatalog = versionedCatalogMapper.toVersionedCatalog(pluginCatalog, internalTenantContext);
 
                 // Always clear the cache for safety
-                cacheController.remove(internalTenantContext.getTenantRecordId());
-                if (cacheable) {
-                    cacheController.putIfAbsent(internalTenantContext.getTenantRecordId(), resolvedPluginCatalog);
-                }
+                // cacheController.remove(internalTenantContext.getTenantRecordId());
+                // if (cacheable) {
+                //     cacheController.putIfAbsent(internalTenantContext.getTenantRecordId(), resolvedPluginCatalog);
+                // }
 
                 return resolvedPluginCatalog;
             }
@@ -211,19 +211,19 @@ public class DefaultCatalogCache implements CatalogCache {
     // nothing about catalog.
     //
     // This is a contract between the TenantCatalogCacheLoader and the DefaultCatalogCache
-    private CacheLoaderArgument initializeCacheLoaderArgument(final boolean filterTemplateCatalog) {
-        final LoaderCallback loaderCallback = new LoaderCallback() {
-            @Override
-            public Catalog loadCatalog(final List<String> catalogXMLs, final Long tenantRecordId) throws CatalogApiException {
-                return loader.load(catalogXMLs, filterTemplateCatalog, tenantRecordId);
-            }
-        };
-        final Object[] args = new Object[1];
-        args[0] = loaderCallback;
-        final ObjectType irrelevant = null;
-        final InternalTenantContext notUsed = null;
-        return new CacheLoaderArgument(irrelevant, args, notUsed);
-    }
+    // private CacheLoaderArgument initializeCacheLoaderArgument(final boolean filterTemplateCatalog) {
+    //     final LoaderCallback loaderCallback = new LoaderCallback() {
+    //         @Override
+    //         public Catalog loadCatalog(final List<String> catalogXMLs, final Long tenantRecordId) throws CatalogApiException {
+    //             return loader.load(catalogXMLs, filterTemplateCatalog, tenantRecordId);
+    //         }
+    //     };
+    //     final Object[] args = new Object[1];
+    //     args[0] = loaderCallback;
+    //     final ObjectType irrelevant = null;
+    //     final InternalTenantContext notUsed = null;
+    //     return new CacheLoaderArgument(irrelevant, args, notUsed);
+    // }
 
     @VisibleForTesting
     void setDefaultCatalog() {
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultOverriddenPlanCache.java b/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultOverriddenPlanCache.java
index 813a14b..f75deb6 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultOverriddenPlanCache.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultOverriddenPlanCache.java
@@ -50,49 +50,54 @@ import org.killbill.billing.catalog.dao.CatalogOverridePhaseDefinitionModelDao;
 import org.killbill.billing.catalog.dao.CatalogOverrideTierDefinitionModelDao;
 import org.killbill.billing.catalog.dao.CatalogOverrideUsageDefinitionModelDao;
 import org.killbill.billing.catalog.override.DefaultPriceOverride;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
-import org.killbill.billing.util.cache.OverriddenPlanCacheLoader.LoaderCallback;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.OverriddenPlanCacheLoader.LoaderCallback;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 
 public class DefaultOverriddenPlanCache implements OverriddenPlanCache {
 
-    private final CacheController<String, Plan> cacheController;
-    private final LoaderCallback loaderCallback;
+    // private final CacheController<String, Plan> cacheController;
+    // private final LoaderCallback loaderCallback;
     private final CatalogOverrideDao overrideDao;
 
     @Inject
-    public DefaultOverriddenPlanCache(final CatalogOverrideDao overrideDao, final CacheControllerDispatcher cacheControllerDispatcher) {
+    public DefaultOverriddenPlanCache(final CatalogOverrideDao overrideDao){//, final CacheControllerDispatcher cacheControllerDispatcher) {
         this.overrideDao = overrideDao;
-        this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.OVERRIDDEN_PLAN);
-        this.loaderCallback = new LoaderCallback() {
-            @Override
-            public Plan loadPlan(final String planName, final StaticCatalog catalog, final InternalTenantContext context) throws CatalogApiException {
-                return loadOverriddenPlan(planName, (StandaloneCatalog) catalog, context);
-            }
-        };
+        // this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.OVERRIDDEN_PLAN);
+        // this.loaderCallback = new LoaderCallback() {
+        //     @Override
+        //     public Plan loadPlan(final String planName, final StaticCatalog catalog, final InternalTenantContext context) throws CatalogApiException {
+        //         return loadOverriddenPlan(planName, (StandaloneCatalog) catalog, context);
+        //     }
+        // };
     }
 
     @Override
     public DefaultPlan getOverriddenPlan(final String planName, final StandaloneCatalog catalog, final InternalTenantContext context) {
-        final ObjectType irrelevant = null;
-        final Object[] args = new Object[2];
-        args[0] = loaderCallback;
-        args[1] = catalog;
-
-        final CacheLoaderArgument argument = new CacheLoaderArgument(irrelevant, args, context);
-        final DefaultPlan defaultPlan = (DefaultPlan) cacheController.get(planName, argument);
-        defaultPlan.initialize(catalog);
+        // final ObjectType irrelevant = null;
+        // final Object[] args = new Object[2];
+        // args[0] = loaderCallback;
+        // args[1] = catalog;
+
+        // final CacheLoaderArgument argument = new CacheLoaderArgument(irrelevant, args, context);
+        // final DefaultPlan defaultPlan = (DefaultPlan) cacheController.get(planName, argument);
+        DefaultPlan defaultPlan = null;
+        try {
+            defaultPlan = (DefaultPlan) loadOverriddenPlan(planName, (StandaloneCatalog) catalog, context);
+            defaultPlan.initialize(catalog);
+        } catch(CatalogApiException ex){
+        }
         return defaultPlan;
     }
 
     @Override
     public void addDryRunPlan(final String planName, final Plan plan) {
-        cacheController.putIfAbsent(planName, plan);
+        // cacheController.putIfAbsent(planName, plan);
     }
 
     private DefaultPlan loadOverriddenPlan(final String planName, final StandaloneCatalog catalog, final InternalTenantContext context) throws CatalogApiException {
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultCatalogService.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultCatalogService.java
index 37a00a1..0af51d0 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultCatalogService.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultCatalogService.java
@@ -29,7 +29,7 @@ import org.killbill.billing.platform.api.KillbillService;
 import org.killbill.billing.platform.api.LifecycleHandlerType;
 import org.killbill.billing.platform.api.LifecycleHandlerType.LifecycleLevel;
 import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
 import org.killbill.billing.tenant.api.TenantKV.TenantKey;
 import org.killbill.billing.util.config.definition.CatalogConfig;
 import org.slf4j.Logger;
@@ -44,17 +44,18 @@ public class DefaultCatalogService implements KillbillService, CatalogService {
     private final CatalogConfig config;
     private final TenantInternalApi tenantInternalApi;
     private final CatalogCache catalogCache;
-    private final CacheInvalidationCallback cacheInvalidationCallback;
+    // private final CacheInvalidationCallback cacheInvalidationCallback;
     private boolean isInitialized;
 
     @Inject
     public DefaultCatalogService(final CatalogConfig config,
                                  final TenantInternalApi tenantInternalApi,
-                                 final CatalogCache catalogCache,
-                                 @Named(CatalogModule.CATALOG_INVALIDATION_CALLBACK) final CacheInvalidationCallback cacheInvalidationCallback) {
+                                 final CatalogCache catalogCache//,
+                                 // @Named(CatalogModule.CATALOG_INVALIDATION_CALLBACK) final CacheInvalidationCallback cacheInvalidationCallback
+                                 ) {
         this.config = config;
         this.catalogCache = catalogCache;
-        this.cacheInvalidationCallback = cacheInvalidationCallback;
+        // this.cacheInvalidationCallback = cacheInvalidationCallback;
         this.tenantInternalApi = tenantInternalApi;
         this.isInitialized = false;
     }
@@ -77,7 +78,7 @@ public class DefaultCatalogService implements KillbillService, CatalogService {
 
     @LifecycleHandlerType(LifecycleLevel.INIT_SERVICE)
     public synchronized void initialize() throws ServiceException {
-        tenantInternalApi.initializeCacheInvalidationCallback(TenantKey.CATALOG, cacheInvalidationCallback);
+        // tenantInternalApi.initializeCacheInvalidationCallback(TenantKey.CATALOG, cacheInvalidationCallback);
     }
 
     @Override
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/glue/CatalogModule.java b/catalog/src/main/java/org/killbill/billing/catalog/glue/CatalogModule.java
index b7ec777..f187c23 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/glue/CatalogModule.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/glue/CatalogModule.java
@@ -25,7 +25,7 @@ import org.killbill.billing.catalog.api.CatalogUserApi;
 import org.killbill.billing.catalog.api.DefaultCatalogInternalApi;
 import org.killbill.billing.catalog.api.user.DefaultCatalogUserApi;
 import org.killbill.billing.catalog.caching.CatalogCache;
-import org.killbill.billing.catalog.caching.CatalogCacheInvalidationCallback;
+// import org.killbill.billing.catalog.caching.CatalogCacheInvalidationCallback;
 import org.killbill.billing.catalog.caching.DefaultCatalogCache;
 import org.killbill.billing.catalog.caching.DefaultOverriddenPlanCache;
 import org.killbill.billing.catalog.caching.OverriddenPlanCache;
@@ -39,7 +39,7 @@ import org.killbill.billing.catalog.plugin.VersionedCatalogMapper;
 import org.killbill.billing.catalog.plugin.api.CatalogPluginApi;
 import org.killbill.billing.osgi.api.OSGIServiceRegistration;
 import org.killbill.billing.platform.api.KillbillConfigSource;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
 import org.killbill.billing.util.config.definition.CatalogConfig;
 import org.killbill.billing.util.glue.KillBillModule;
 import org.skife.config.ConfigurationObjectFactory;
@@ -80,7 +80,7 @@ public class CatalogModule extends KillBillModule {
 
     public void installCatalogConfigCache() {
         bind(CatalogCache.class).to(DefaultCatalogCache.class).asEagerSingleton();
-        bind(CacheInvalidationCallback.class).annotatedWith(Names.named(CATALOG_INVALIDATION_CALLBACK)).to(CatalogCacheInvalidationCallback.class).asEagerSingleton();
+        // bind(CacheInvalidationCallback.class).annotatedWith(Names.named(CATALOG_INVALIDATION_CALLBACK)).to(CatalogCacheInvalidationCallback.class).asEagerSingleton();
 
         bind(OverriddenPlanCache.class).to(DefaultOverriddenPlanCache.class).asEagerSingleton();
     }
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/DefaultBlockingStateDao.java b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/DefaultBlockingStateDao.java
index 9547418..bb26552 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/DefaultBlockingStateDao.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/DefaultBlockingStateDao.java
@@ -47,9 +47,9 @@ import org.killbill.billing.entitlement.block.BlockingChecker.BlockingAggregator
 import org.killbill.billing.entitlement.block.StatelessBlockingChecker;
 import org.killbill.billing.entitlement.engine.core.BlockingTransitionNotificationKey;
 import org.killbill.billing.platform.api.KillbillService.KILLBILL_SERVICES;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.dao.EntityDaoBase;
@@ -112,18 +112,21 @@ public class DefaultBlockingStateDao extends EntityDaoBase<BlockingStateModelDao
     private final Clock clock;
     private final NotificationQueueService notificationQueueService;
     private final PersistentBus eventBus;
-    private final CacheController<String, UUID> objectIdCacheController;
+    // private final CacheController<String, UUID> objectIdCacheController;
     private final NonEntityDao nonEntityDao;
 
     private final StatelessBlockingChecker statelessBlockingChecker = new StatelessBlockingChecker();
 
     public DefaultBlockingStateDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final NotificationQueueService notificationQueueService, final PersistentBus eventBus,
-                                   final CacheControllerDispatcher cacheControllerDispatcher, final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory), BlockingStateSqlDao.class);
+                                   // final CacheControllerDispatcher cacheControllerDispatcher, 
+                                   final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock,
+         // cacheControllerDispatcher, 
+         nonEntityDao, internalCallContextFactory), BlockingStateSqlDao.class);
         this.clock = clock;
         this.notificationQueueService = notificationQueueService;
         this.eventBus = eventBus;
-        this.objectIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
+        // this.objectIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
         this.nonEntityDao = nonEntityDao;
     }
 
@@ -276,13 +279,13 @@ public class DefaultBlockingStateDao extends EntityDaoBase<BlockingStateModelDao
         final List<BlockingState> bundleBlockingStates;
         final List<BlockingState> subscriptionBlockingStates;
         if (type == BlockingStateType.SUBSCRIPTION) {
-            final UUID accountId = nonEntityDao.retrieveIdFromObjectInTransaction(context.getAccountRecordId(), ObjectType.ACCOUNT, objectIdCacheController, handle);
+            final UUID accountId = nonEntityDao.retrieveIdFromObjectInTransaction(context.getAccountRecordId(), ObjectType.ACCOUNT, null, handle);
             final List<BlockingState> allBlockingStatesForAccount = getBlockingAllUpToForAccountRecordId(sqlDao, upToDate, context);
             accountBlockingStates = filterBlockingStates(allBlockingStatesForAccount, accountId, BlockingStateType.ACCOUNT);
             bundleBlockingStates = filterBlockingStates(allBlockingStatesForAccount, bundleId, BlockingStateType.SUBSCRIPTION_BUNDLE);
             subscriptionBlockingStates = filterBlockingStates(allBlockingStatesForAccount, blockableId, BlockingStateType.SUBSCRIPTION);
         } else if (type == BlockingStateType.SUBSCRIPTION_BUNDLE) {
-            final UUID accountId = nonEntityDao.retrieveIdFromObjectInTransaction(context.getAccountRecordId(), ObjectType.ACCOUNT, objectIdCacheController, handle);
+            final UUID accountId = nonEntityDao.retrieveIdFromObjectInTransaction(context.getAccountRecordId(), ObjectType.ACCOUNT, null, handle);
             final List<BlockingState> allBlockingStatesForAccount = getBlockingAllUpToForAccountRecordId(sqlDao, upToDate, context);
             accountBlockingStates = filterBlockingStates(allBlockingStatesForAccount, accountId, BlockingStateType.ACCOUNT);
             bundleBlockingStates = filterBlockingStates(allBlockingStatesForAccount, blockableId, BlockingStateType.SUBSCRIPTION_BUNDLE);
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/OptimizedProxyBlockingStateDao.java b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/OptimizedProxyBlockingStateDao.java
index 9e9ba63..eb47fe3 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/OptimizedProxyBlockingStateDao.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/OptimizedProxyBlockingStateDao.java
@@ -35,7 +35,7 @@ import org.killbill.billing.entitlement.engine.core.EventsStreamBuilder;
 import org.killbill.billing.subscription.api.SubscriptionBase;
 import org.killbill.billing.subscription.api.SubscriptionBaseInternalApi;
 import org.killbill.billing.subscription.api.user.SubscriptionBaseBundle;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.bus.api.PersistentBus;
@@ -49,8 +49,11 @@ public class OptimizedProxyBlockingStateDao extends ProxyBlockingStateDao {
 
     public OptimizedProxyBlockingStateDao(final EventsStreamBuilder eventsStreamBuilder, final SubscriptionBaseInternalApi subscriptionBaseInternalApi,
                                           final IDBI dbi, final IDBI roDbi, final Clock clock, final NotificationQueueService notificationQueueService, final PersistentBus eventBus,
-                                          final CacheControllerDispatcher cacheControllerDispatcher, final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
-        super(eventsStreamBuilder, subscriptionBaseInternalApi, dbi, roDbi, clock, notificationQueueService, eventBus, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory);
+                                          // final CacheControllerDispatcher cacheControllerDispatcher,
+                                          final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
+        super(eventsStreamBuilder, subscriptionBaseInternalApi, dbi, roDbi, clock, notificationQueueService, eventBus,
+         // cacheControllerDispatcher,
+          nonEntityDao, internalCallContextFactory);
     }
 
     /**
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/ProxyBlockingStateDao.java b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/ProxyBlockingStateDao.java
index d2840da..86355cd 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/ProxyBlockingStateDao.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/ProxyBlockingStateDao.java
@@ -46,7 +46,7 @@ import org.killbill.billing.platform.api.KillbillService.KILLBILL_SERVICES;
 import org.killbill.billing.subscription.api.SubscriptionBase;
 import org.killbill.billing.subscription.api.SubscriptionBaseInternalApi;
 import org.killbill.billing.subscription.api.user.SubscriptionBaseApiException;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.customfield.ShouldntHappenException;
 import org.killbill.billing.util.dao.NonEntityDao;
@@ -177,11 +177,14 @@ public class ProxyBlockingStateDao implements BlockingStateDao {
     @Inject
     public ProxyBlockingStateDao(final EventsStreamBuilder eventsStreamBuilder, final SubscriptionBaseInternalApi subscriptionBaseInternalApi,
                                  final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final NotificationQueueService notificationQueueService, final PersistentBus eventBus,
-                                 final CacheControllerDispatcher cacheControllerDispatcher, final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
+                                 // final CacheControllerDispatcher cacheControllerDispatcher, 
+                                 final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
         this.eventsStreamBuilder = eventsStreamBuilder;
         this.subscriptionInternalApi = subscriptionBaseInternalApi;
         this.clock = clock;
-        this.delegate = new DefaultBlockingStateDao(dbi, roDbi, clock, notificationQueueService, eventBus, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory);
+        this.delegate = new DefaultBlockingStateDao(dbi, roDbi, clock, notificationQueueService, eventBus,
+         // cacheControllerDispatcher, 
+         nonEntityDao, internalCallContextFactory);
     }
 
     @Override
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/EventsStreamBuilder.java b/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/EventsStreamBuilder.java
index 9f72b61..2eeeaaa 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/EventsStreamBuilder.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/EventsStreamBuilder.java
@@ -60,7 +60,7 @@ import org.killbill.billing.subscription.api.user.SubscriptionBaseApiException;
 import org.killbill.billing.subscription.api.user.SubscriptionBaseBundle;
 import org.killbill.billing.subscription.api.user.SubscriptionBaseTransition;
 import org.killbill.billing.util.bcd.BillCycleDayCalculator;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.callcontext.TenantContext;
 import org.killbill.billing.util.dao.NonEntityDao;
@@ -98,7 +98,7 @@ public class EventsStreamBuilder {
                                final Clock clock,
                                final NotificationQueueService notificationQueueService,
                                final PersistentBus eventBus,
-                               final CacheControllerDispatcher cacheControllerDispatcher,
+                               // final CacheControllerDispatcher cacheControllerDispatcher,
                                final NonEntityDao nonEntityDao,
                                final InternalCallContextFactory internalCallContextFactory) {
         this.accountInternalApi = accountInternalApi;
@@ -107,8 +107,12 @@ public class EventsStreamBuilder {
         this.checker = checker;
         this.clock = clock;
         this.internalCallContextFactory = internalCallContextFactory;
-        this.defaultBlockingStateDao = new DefaultBlockingStateDao(dbi, roDbi, clock, notificationQueueService, eventBus, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory);
-        this.blockingStateDao = new OptimizedProxyBlockingStateDao(this, subscriptionInternalApi, dbi, roDbi, clock, notificationQueueService, eventBus, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory);
+        this.defaultBlockingStateDao = new DefaultBlockingStateDao(dbi, roDbi, clock, notificationQueueService, eventBus, 
+            // cacheControllerDispatcher, 
+            nonEntityDao, internalCallContextFactory);
+        this.blockingStateDao = new OptimizedProxyBlockingStateDao(this, subscriptionInternalApi, dbi, roDbi, clock, notificationQueueService, eventBus,
+         // cacheControllerDispatcher, 
+         nonEntityDao, internalCallContextFactory);
     }
 
     public EventsStream refresh(final EventsStream eventsStream, final TenantContext tenantContext) throws EntitlementApiException {
@@ -194,7 +198,7 @@ public class EventsStreamBuilder {
         }
 
         // Build the EventsStream objects
-        final Map<UUID, Integer> bcdCache = new HashMap<UUID, Integer>();
+        // final Map<UUID, Integer> bcdCache = new HashMap<UUID, Integer>();
         final Map<UUID, Collection<EventsStream>> eventsStreamPerBundle = new HashMap<UUID, Collection<EventsStream>>();
         final Map<UUID, Collection<SubscriptionBase>> subscriptionsPerBundle = new HashMap<UUID, Collection<SubscriptionBase>>();
         for (final UUID bundleId : subscriptions.keySet()) {
@@ -247,7 +251,7 @@ public class EventsStreamBuilder {
                                                                      allSubscriptionsForBundle,
                                                                      blockingStates,
                                                                      accountBCD,
-                                                                     bcdCache,
+                                                                     // bcdCache,
                                                                      catalog,
                                                                      internalTenantContext);
                 eventsStreamPerBundle.get(bundleId).add(eventStream);
@@ -305,8 +309,10 @@ public class EventsStreamBuilder {
         // Retrieve the blocking states
         final List<BlockingState> blockingStatesForAccount = defaultBlockingStateDao.getBlockingAllForAccountRecordId(catalog, internalTenantContext);
 
-        final Map<UUID, Integer> bcdCache = new HashMap<UUID, Integer>();
-        return buildForEntitlement(blockingStatesForAccount, account, bundle, baseSubscription, subscription, allSubscriptionsForBundle, accountBCD, bcdCache, catalog, internalTenantContext);
+        // final Map<UUID, Integer> bcdCache = new HashMap<UUID, Integer>();
+        return buildForEntitlement(blockingStatesForAccount, account, bundle, baseSubscription, subscription, allSubscriptionsForBundle, accountBCD,
+         // bcdCache,
+          catalog, internalTenantContext);
     }
 
     // Special signature for OptimizedProxyBlockingStateDao to save some DAO calls
@@ -318,8 +324,10 @@ public class EventsStreamBuilder {
                                             final int accountBCD,
                                             final Catalog catalog,
                                             final InternalTenantContext internalTenantContext) throws EntitlementApiException {
-        final Map<UUID, Integer> bcdCache = new HashMap<UUID, Integer>();
-        return buildForEntitlement(blockingStatesForAccount, account, bundle, baseSubscription, baseSubscription, allSubscriptionsForBundle, accountBCD, bcdCache, catalog, internalTenantContext);
+        // final Map<UUID, Integer> bcdCache = new HashMap<UUID, Integer>();
+        return buildForEntitlement(blockingStatesForAccount, account, bundle, baseSubscription, baseSubscription, allSubscriptionsForBundle, accountBCD,
+             // bcdCache,
+              catalog, internalTenantContext);
     }
 
     private EventsStream buildForEntitlement(final Collection<BlockingState> blockingStatesForAccount,
@@ -329,7 +337,7 @@ public class EventsStreamBuilder {
                                              final SubscriptionBase subscription,
                                              final Collection<SubscriptionBase> allSubscriptionsForBundle,
                                              final int accountBCD,
-                                             final Map<UUID, Integer> bcdCache,
+                                             // final Map<UUID, Integer> bcdCache,
                                              final Catalog catalog,
                                              final InternalTenantContext internalTenantContext) throws EntitlementApiException {
         // Optimization: build lookup tables for blocking states states
@@ -384,7 +392,9 @@ public class EventsStreamBuilder {
         blockingStateSet.addAll(subscriptionBlockingStates);
         final List<BlockingState> blockingStates = ProxyBlockingStateDao.sortedCopy(blockingStateSet);
 
-        return buildForEntitlement(account, bundle, baseSubscription, subscription, allSubscriptionsForBundle, blockingStates, accountBCD, bcdCache, catalog, internalTenantContext);
+        return buildForEntitlement(account, bundle, baseSubscription, subscription, allSubscriptionsForBundle, blockingStates, accountBCD,
+         // bcdCache,
+          catalog, internalTenantContext);
     }
 
     private EventsStream buildForEntitlement(final ImmutableAccountData account,
@@ -394,7 +404,7 @@ public class EventsStreamBuilder {
                                              final Collection<SubscriptionBase> allSubscriptionsForBundle,
                                              final Collection<BlockingState> blockingStates,
                                              final int accountBCD,
-                                             final Map<UUID, Integer> bcdCache,
+                                             // final Map<UUID, Integer> bcdCache,
                                              final Catalog catalog,
                                              final InternalTenantContext internalTenantContext) throws EntitlementApiException {
 
@@ -403,7 +413,9 @@ public class EventsStreamBuilder {
             try {
                 final BillingAlignment alignment = catalog.billingAlignment(createPlanPhaseSpecifier(subscription), clock.getUTCNow(), subscription.getStartDate());
                 if (alignment != BillingAlignment.ACCOUNT || accountBCD != 0) {
-                    defaultAlignmentDay = BillCycleDayCalculator.calculateBcdForAlignment(bcdCache, subscription, baseSubscription, alignment, internalTenantContext, accountBCD);
+                    defaultAlignmentDay = BillCycleDayCalculator.calculateBcdForAlignment(
+                        // bcdCache,
+                         subscription, baseSubscription, alignment, internalTenantContext, accountBCD);
                 }
             } catch (final CatalogApiException e) {
                 throw new SubscriptionBaseApiException(e);

ignored 1(+1 -0)

diff --git a/ignored b/ignored
index ee1de1d..b6d423e 100644
--- a/ignored
+++ b/ignored
@@ -1,3 +1,4 @@
+org.killbill
 aopalliance
 br.ufrgs.inf.prosoft.applicationtracer
 ch.qos
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java b/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java
index ea76847..f725e46 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java
@@ -26,7 +26,7 @@ import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.glue.InvoiceModule;
 import org.killbill.billing.util.config.definition.InvoiceConfig;
 import org.killbill.billing.util.config.definition.KillbillConfig;
-import org.killbill.billing.util.config.tenant.CacheConfig;
+// import org.killbill.billing.util.config.tenant.CacheConfig;
 import org.killbill.billing.util.config.tenant.MultiTenantConfigBase;
 import org.skife.config.TimeSpan;
 
@@ -36,8 +36,9 @@ public class MultiTenantInvoiceConfig extends MultiTenantConfigBase implements I
     private final InvoiceConfig staticConfig;
 
     @Inject
-    public MultiTenantInvoiceConfig(@Named(InvoiceModule.STATIC_CONFIG) final InvoiceConfig staticConfig, final CacheConfig cacheConfig) {
-        super(cacheConfig);
+    public MultiTenantInvoiceConfig(@Named(InvoiceModule.STATIC_CONFIG) final InvoiceConfig staticConfig){//, final CacheConfig cacheConfig) {
+        // super(cacheConfig);
+        super();
         this.staticConfig = staticConfig;
     }
 
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
index 570d678..0165e3b 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
@@ -61,9 +61,9 @@ import org.killbill.billing.invoice.notification.NextBillingDatePoster;
 import org.killbill.billing.invoice.notification.ParentInvoiceCommitmentPoster;
 import org.killbill.billing.tag.TagInternalApi;
 import org.killbill.billing.util.UUIDs;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.config.definition.InvoiceConfig;
 import org.killbill.billing.util.dao.NonEntityDao;
@@ -120,7 +120,7 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
     private final CBADao cbaDao;
     private final InvoiceConfig invoiceConfig;
     private final Clock clock;
-    private final CacheController<String, UUID> objectIdCacheController;
+    // private final CacheController<String, UUID> objectIdCacheController;
     private final NonEntityDao nonEntityDao;
     private final ParentInvoiceCommitmentPoster parentInvoiceCommitmentPoster;
     private final TagInternalApi tagInternalApi;
@@ -132,14 +132,16 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
                              final NextBillingDatePoster nextBillingDatePoster,
                              final PersistentBus eventBus,
                              final Clock clock,
-                             final CacheControllerDispatcher cacheControllerDispatcher,
+                             // final CacheControllerDispatcher cacheControllerDispatcher,
                              final NonEntityDao nonEntityDao,
                              final InvoiceConfig invoiceConfig,
                              final InvoiceDaoHelper invoiceDaoHelper,
                              final CBADao cbaDao,
                              final ParentInvoiceCommitmentPoster parentInvoiceCommitmentPoster,
                              final InternalCallContextFactory internalCallContextFactory) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory), InvoiceSqlDao.class);
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock,
+         // cacheControllerDispatcher,
+          nonEntityDao, internalCallContextFactory), InvoiceSqlDao.class);
         this.tagInternalApi = tagInternalApi;
         this.nextBillingDatePoster = nextBillingDatePoster;
         this.eventBus = eventBus;
@@ -148,7 +150,7 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
         this.invoiceDaoHelper = invoiceDaoHelper;
         this.cbaDao = cbaDao;
         this.clock = clock;
-        this.objectIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
+        // this.objectIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
         this.nonEntityDao = nonEntityDao;
         this.parentInvoiceCommitmentPoster = parentInvoiceCommitmentPoster;
     }
@@ -919,7 +921,9 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
                 }
 
                 if (completion) {
-                    final UUID accountId = nonEntityDao.retrieveIdFromObjectInTransaction(context.getAccountRecordId(), ObjectType.ACCOUNT, objectIdCacheController, entitySqlDaoWrapperFactory.getHandle());
+                    final UUID accountId = nonEntityDao.retrieveIdFromObjectInTransaction(context.getAccountRecordId(), ObjectType.ACCOUNT,
+                     null,
+                      entitySqlDaoWrapperFactory.getHandle());
                     notifyBusOfInvoicePayment(entitySqlDaoWrapperFactory, invoicePayment, accountId, context.getUserToken(), context);
                 }
                 return null;
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
index 454f7bf..72d84a6 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
@@ -70,9 +70,9 @@ import org.killbill.billing.util.api.AuditUserApi;
 import org.killbill.billing.util.api.CustomFieldUserApi;
 import org.killbill.billing.util.api.RecordIdApi;
 import org.killbill.billing.util.api.TagUserApi;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
 import org.killbill.billing.util.config.tenant.PerTenantConfig;
@@ -114,7 +114,7 @@ public class AdminResource extends JaxRsResourceBase {
     private final AdminPaymentApi adminPaymentApi;
     private final InvoiceUserApi invoiceUserApi;
     private final TenantUserApi tenantApi;
-    private final CacheControllerDispatcher cacheControllerDispatcher;
+    // private final CacheControllerDispatcher cacheControllerDispatcher;
     private final RecordIdApi recordIdApi;
     private final PersistentBus persistentBus;
     private final NotificationQueueService notificationQueueService;
@@ -130,7 +130,7 @@ public class AdminResource extends JaxRsResourceBase {
                          final InvoicePaymentApi invoicePaymentApi,
                          final AdminPaymentApi adminPaymentApi,
                          final InvoiceUserApi invoiceUserApi,
-                         final CacheControllerDispatcher cacheControllerDispatcher,
+                         // final CacheControllerDispatcher cacheControllerDispatcher,
                          final TenantUserApi tenantApi,
                          final RecordIdApi recordIdApi,
                          final PersistentBus persistentBus,
@@ -143,7 +143,7 @@ public class AdminResource extends JaxRsResourceBase {
         this.invoiceUserApi = invoiceUserApi;
         this.tenantApi = tenantApi;
         this.recordIdApi = recordIdApi;
-        this.cacheControllerDispatcher = cacheControllerDispatcher;
+        // this.cacheControllerDispatcher = cacheControllerDispatcher;
         this.persistentBus = persistentBus;
         this.notificationQueueService = notificationQueueService;
         this.killbillHealthcheck = killbillHealthcheck;
@@ -333,16 +333,16 @@ public class AdminResource extends JaxRsResourceBase {
                                      @javax.ws.rs.core.Context final HttpServletRequest request) {
         if (null != cacheName && !cacheName.isEmpty()) {
             // Clear given cache
-            final CacheType cacheType = CacheType.findByName(cacheName);
-            if (cacheType != null) {
-                cacheControllerDispatcher.getCacheController(cacheType).removeAll();
-            } else {
+            // final CacheType cacheType = CacheType.findByName(cacheName);
+            // if (cacheType != null) {
+                // cacheControllerDispatcher.getCacheController(cacheType).removeAll();
+            // } else {
                 log.warn("Cache for specified cacheName='{}' does not exist or is not alive", cacheName);
                 return Response.status(Status.BAD_REQUEST).build();
-            }
+            // }
         } else {
             // if not given a specific cacheName, clear all
-            cacheControllerDispatcher.clearAll();
+            // cacheControllerDispatcher.clearAll();
         }
         return Response.status(Status.NO_CONTENT).build();
     }
@@ -360,16 +360,16 @@ public class AdminResource extends JaxRsResourceBase {
         final Long accountRecordId = recordIdApi.getRecordId(accountId, ObjectType.ACCOUNT, tenantContext);
 
         // clear account-record-id cache by accountId (note: String!)
-        final CacheController<String, Long> accountRecordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_RECORD_ID);
-        accountRecordIdCacheController.remove(accountId.toString());
+        // final CacheController<String, Long> accountRecordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_RECORD_ID);
+        // accountRecordIdCacheController.remove(accountId.toString());
 
         // clear account-immutable cache by account record id
-        final CacheController<Long, ImmutableAccountData> accountImmutableCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_IMMUTABLE);
-        accountImmutableCacheController.remove(accountRecordId);
+        // final CacheController<Long, ImmutableAccountData> accountImmutableCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_IMMUTABLE);
+        // accountImmutableCacheController.remove(accountRecordId);
 
         // clear account-bcd cache by accountId (note: UUID!)
-        final CacheController<UUID, Integer> accountBCDCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_BCD);
-        accountBCDCacheController.remove(accountId);
+        // final CacheController<UUID, Integer> accountBCDCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_BCD);
+        // accountBCDCacheController.remove(accountId);
 
         return Response.status(Status.NO_CONTENT).build();
     }
@@ -396,33 +396,33 @@ public class AdminResource extends JaxRsResourceBase {
             }
         };
 
-        // clear tenant-record-id cache by tenantId
-        final CacheController<String, Long> tenantRecordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_RECORD_ID);
-        tenantRecordIdCacheController.remove(currentTenant.getId().toString());
+        // // clear tenant-record-id cache by tenantId
+        // final CacheController<String, Long> tenantRecordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_RECORD_ID);
+        // tenantRecordIdCacheController.remove(currentTenant.getId().toString());
 
-        // clear tenant-payment-state-machine-config cache by tenantRecordId
-        final CacheController<String, Object> tenantPaymentStateMachineConfigCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_PAYMENT_STATE_MACHINE_CONFIG);
-        tenantPaymentStateMachineConfigCacheController.remove(tenantKeysMatcher);
+        // // clear tenant-payment-state-machine-config cache by tenantRecordId
+        // final CacheController<String, Object> tenantPaymentStateMachineConfigCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_PAYMENT_STATE_MACHINE_CONFIG);
+        // tenantPaymentStateMachineConfigCacheController.remove(tenantKeysMatcher);
 
-        // clear tenant cache by tenantApiKey
-        final CacheController<String, Tenant> tenantCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT);
-        tenantCacheController.remove(currentTenant.getApiKey());
+        // // clear tenant cache by tenantApiKey
+        // final CacheController<String, Tenant> tenantCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT);
+        // tenantCacheController.remove(currentTenant.getApiKey());
 
-        // clear tenant-kv cache by tenantRecordId
-        final CacheController<String, String> tenantKVCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_KV);
-        tenantKVCacheController.remove(tenantKeysMatcher);
+        // // clear tenant-kv cache by tenantRecordId
+        // final CacheController<String, String> tenantKVCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_KV);
+        // tenantKVCacheController.remove(tenantKeysMatcher);
 
-        // clear tenant-config cache by tenantRecordId
-        final CacheController<Long, PerTenantConfig> tenantConfigCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_CONFIG);
-        tenantConfigCacheController.remove(tenantRecordId);
+        // // clear tenant-config cache by tenantRecordId
+        // final CacheController<Long, PerTenantConfig> tenantConfigCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_CONFIG);
+        // tenantConfigCacheController.remove(tenantRecordId);
 
-        // clear tenant-overdue-config cache by tenantRecordId
-        final CacheController<Long, Object> tenantOverdueConfigCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_OVERDUE_CONFIG);
-        tenantOverdueConfigCacheController.remove(tenantRecordId);
+        // // clear tenant-overdue-config cache by tenantRecordId
+        // final CacheController<Long, Object> tenantOverdueConfigCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_OVERDUE_CONFIG);
+        // tenantOverdueConfigCacheController.remove(tenantRecordId);
 
-        // clear tenant-catalog cache by tenantRecordId
-        final CacheController<Long, Catalog> tenantCatalogCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_CATALOG);
-        tenantCatalogCacheController.remove(tenantRecordId);
+        // // clear tenant-catalog cache by tenantRecordId
+        // final CacheController<Long, Catalog> tenantCatalogCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_CATALOG);
+        // tenantCatalogCacheController.remove(tenantRecordId);
 
         return Response.status(Status.NO_CONTENT).build();
     }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
index 92dc6b6..4ab1e3d 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
@@ -201,13 +201,14 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
     protected Response createTagResponse(final UUID accountId, final List<Tag> tags, final AuditMode auditMode, final TenantContext context) throws TagDefinitionApiException {
         final AccountAuditLogsForObjectType tagsAuditLogs = auditUserApi.getAccountAuditLogs(accountId, ObjectType.TAG, auditMode.getLevel(), context);
 
-        final Map<UUID, TagDefinition> tagDefinitionsCache = new HashMap<UUID, TagDefinition>();
+        // final Map<UUID, TagDefinition> tagDefinitionsCache = new HashMap<UUID, TagDefinition>();
         final Collection<TagJson> result = new LinkedList<TagJson>();
         for (final Tag tag : tags) {
-            if (tagDefinitionsCache.get(tag.getTagDefinitionId()) == null) {
-                tagDefinitionsCache.put(tag.getTagDefinitionId(), tagUserApi.getTagDefinition(tag.getTagDefinitionId(), context));
-            }
-            final TagDefinition tagDefinition = tagDefinitionsCache.get(tag.getTagDefinitionId());
+            // if (tagDefinitionsCache.get(tag.getTagDefinitionId()) == null) {
+                // tagDefinitionsCache.put(tag.getTagDefinitionId(), tagUserApi.getTagDefinition(tag.getTagDefinitionId(), context));
+            // }
+            // final TagDefinition tagDefinition = tagDefinitionsCache.get(tag.getTagDefinitionId());
+            final TagDefinition tagDefinition = tagUserApi.getTagDefinition(tag.getTagDefinitionId(), context);
 
             final List<AuditLog> auditLogs = tagsAuditLogs.getAuditLogs(tag.getId());
             result.add(new TagJson(tag, tagDefinition, auditLogs));
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java
index 9e22594..d8913f0 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TestResource.java
@@ -48,7 +48,7 @@ import org.killbill.billing.util.api.AuditUserApi;
 import org.killbill.billing.util.api.CustomFieldUserApi;
 import org.killbill.billing.util.api.RecordIdApi;
 import org.killbill.billing.util.api.TagUserApi;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.TenantContext;
 import org.killbill.bus.api.BusEvent;
 import org.killbill.bus.api.BusEventWithMetadata;
@@ -93,21 +93,23 @@ public class TestResource extends JaxRsResourceBase {
     private final RecordIdApi recordIdApi;
     private final TenantUserApi tenantApi;
     private final CatalogUserApi catalogUserApi;
-    private final CacheControllerDispatcher cacheControllerDispatcher;
+    // private final CacheControllerDispatcher cacheControllerDispatcher;
 
     @Inject
     public TestResource(final JaxrsUriBuilder uriBuilder, final TagUserApi tagUserApi, final CustomFieldUserApi customFieldUserApi,
                         final AuditUserApi auditUserApi, final AccountUserApi accountUserApi, final RecordIdApi recordIdApi,
                         final PersistentBus persistentBus, final NotificationQueueService notificationQueueService, final PaymentApi paymentApi,
                         final InvoicePaymentApi invoicePaymentApi, final TenantUserApi tenantApi, final CatalogUserApi catalogUserApi,
-                        final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher, final Context context) {
+                        final Clock clock, 
+                        // final CacheControllerDispatcher cacheControllerDispatcher,
+                         final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, invoicePaymentApi, null, clock, context);
         this.persistentBus = persistentBus;
         this.notificationQueueService = notificationQueueService;
         this.recordIdApi = recordIdApi;
         this.catalogUserApi = catalogUserApi;
         this.tenantApi = tenantApi;
-        this.cacheControllerDispatcher = cacheControllerDispatcher;
+        // this.cacheControllerDispatcher = cacheControllerDispatcher;
     }
 
     public final class ClockResource {
diff --git a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultInternalBillingApi.java b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultInternalBillingApi.java
index a096e5e..a52af02 100644
--- a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultInternalBillingApi.java
+++ b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultInternalBillingApi.java
@@ -270,7 +270,7 @@ public class DefaultInternalBillingApi implements BillingInternalApi {
                                                  final DefaultBillingEventSet result,
                                                  final Set<UUID> skipSubscriptionsSet,
                                                  final Catalog catalog) throws CatalogApiException {
-        final Map<UUID, Integer> bcdCache = new HashMap<UUID, Integer>();
+        // final Map<UUID, Integer> bcdCache = new HashMap<UUID, Integer>();
 
         for (final SubscriptionBase subscription : subscriptions) {
 
@@ -295,7 +295,9 @@ public class DefaultInternalBillingApi implements BillingInternalApi {
                 overridenBCD = transition.getNextBillCycleDayLocal() != null ? transition.getNextBillCycleDayLocal() : overridenBCD;
                 final int bcdLocal = overridenBCD != null ?
                                      overridenBCD :
-                                     calculateBcdForTransition(alignment, bcdCache, baseSubscription, subscription, currentAccountBCD, context);
+                                     calculateBcdForTransition(alignment,
+                                      // bcdCache,
+                                       baseSubscription, subscription, currentAccountBCD, context);
 
                 final BillingEvent event = new DefaultBillingEvent(transition, subscription, bcdLocal, alignment, account.getCurrency(), catalog);
                 result.add(event);
@@ -303,12 +305,16 @@ public class DefaultInternalBillingApi implements BillingInternalApi {
         }
     }
 
-    private int calculateBcdForTransition(final BillingAlignment realBillingAlignment, final Map<UUID, Integer> bcdCache, final SubscriptionBase baseSubscription, final SubscriptionBase subscription, final int accountBillCycleDayLocal, final InternalTenantContext internalTenantContext) {
+    private int calculateBcdForTransition(final BillingAlignment realBillingAlignment, 
+        // final Map<UUID, Integer> bcdCache,
+         final SubscriptionBase baseSubscription, final SubscriptionBase subscription, final int accountBillCycleDayLocal, final InternalTenantContext internalTenantContext) {
         BillingAlignment alignment = realBillingAlignment;
         if (alignment == BillingAlignment.ACCOUNT && accountBillCycleDayLocal == 0) {
             alignment = BillingAlignment.SUBSCRIPTION;
         }
-        return BillCycleDayCalculator.calculateBcdForAlignment(bcdCache, subscription, baseSubscription, alignment, internalTenantContext, accountBillCycleDayLocal);
+        return BillCycleDayCalculator.calculateBcdForAlignment(
+            // bcdCache, 
+            subscription, baseSubscription, alignment, internalTenantContext, accountBillCycleDayLocal);
     }
 
     private PlanPhaseSpecifier getPlanPhaseSpecifierFromTransition(final Catalog catalog, final SubscriptionInternalEvent transition) throws CatalogApiException {
diff --git a/overdue/src/main/java/org/killbill/billing/overdue/caching/DefaultOverdueConfigCache.java b/overdue/src/main/java/org/killbill/billing/overdue/caching/DefaultOverdueConfigCache.java
index b7e5a7c..8da8069 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/caching/DefaultOverdueConfigCache.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/caching/DefaultOverdueConfigCache.java
@@ -30,29 +30,35 @@ import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.overdue.api.OverdueApiException;
 import org.killbill.billing.overdue.api.OverdueConfig;
 import org.killbill.billing.overdue.config.DefaultOverdueConfig;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
-import org.killbill.billing.util.cache.TenantOverdueConfigCacheLoader.LoaderCallback;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.TenantOverdueConfigCacheLoader.LoaderCallback;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.xmlloader.XMLLoader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.killbill.billing.tenant.api.TenantInternalApi;
+
 public class DefaultOverdueConfigCache implements OverdueConfigCache {
 
     private static final Logger log = LoggerFactory.getLogger(DefaultOverdueConfigCache.class);
 
-    private final CacheController<Long, OverdueConfig> cacheController;
-    private final CacheLoaderArgument cacheLoaderArgument;
+    // private final CacheController<Long, OverdueConfig> cacheController;
+    // private final CacheLoaderArgument cacheLoaderArgument;
+
+    private final TenantInternalApi tenantApi;
 
     private OverdueConfig defaultOverdueConfig;
 
     @Inject
-    public DefaultOverdueConfigCache(final CacheControllerDispatcher cacheControllerDispatcher) {
-        this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_OVERDUE_CONFIG);
-        this.cacheLoaderArgument = initializeCacheLoaderArgument();
+    public DefaultOverdueConfigCache(final TenantInternalApi tenantApi){//final CacheControllerDispatcher cacheControllerDispatcher) {
+        // this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_OVERDUE_CONFIG);
+        // this.cacheLoaderArgument = initializeCacheLoaderArgument();
+
+        this.tenantApi = tenantApi;
 
         try {
             // Provided in the classpath
@@ -97,7 +103,20 @@ public class DefaultOverdueConfigCache implements OverdueConfigCache {
         // The cache loader might choke on some bad xml -- unlikely since we check its validity prior storing it,
         // but to be on the safe side;;
         try {
-            final OverdueConfig overdueConfig = cacheController.get(tenantContext.getTenantRecordId(), cacheLoaderArgument);
+            final OverdueConfig overdueConfig;// = cacheController.get(tenantContext.getTenantRecordId(), cacheLoaderArgument);
+
+            final String overdueXML = tenantApi.getTenantOverdueConfig(tenantContext);
+            if (overdueXML == null) {
+                throw new OverdueApiException(ErrorCode.OVERDUE_INVALID_FOR_TENANT, "Problem encountered loading overdue config ");
+            }
+
+            final InputStream overdueConfigStream = new ByteArrayInputStream(overdueXML.getBytes());
+            try {
+                overdueConfig =  XMLLoader.getObjectFromStream(overdueConfigStream, DefaultOverdueConfig.class);
+            } catch (final Exception e) {
+                throw new OverdueApiException(ErrorCode.OVERDUE_INVALID_FOR_TENANT, "Problem encountered loading overdue config ", e);
+            }
+
             return (overdueConfig != null) ? overdueConfig : defaultOverdueConfig;
         } catch (final IllegalStateException e) {
             throw new OverdueApiException(ErrorCode.OVERDUE_INVALID_FOR_TENANT, tenantContext.getTenantRecordId());
@@ -106,28 +125,28 @@ public class DefaultOverdueConfigCache implements OverdueConfigCache {
 
     @Override
     public void clearOverdueConfig(final InternalTenantContext tenantContext) {
-        if (!InternalCallContextFactory.INTERNAL_TENANT_RECORD_ID.equals(tenantContext.getTenantRecordId())) {
-            cacheController.remove(tenantContext.getTenantRecordId());
-        }
+        // if (!InternalCallContextFactory.INTERNAL_TENANT_RECORD_ID.equals(tenantContext.getTenantRecordId())) {
+        //     cacheController.remove(tenantContext.getTenantRecordId());
+        // }
     }
 
-    private CacheLoaderArgument initializeCacheLoaderArgument() {
-        final LoaderCallback loaderCallback = new LoaderCallback() {
-            @Override
-            public OverdueConfig loadOverdueConfig(final String overdueConfigXML) throws OverdueApiException {
-                final InputStream overdueConfigStream = new ByteArrayInputStream(overdueConfigXML.getBytes());
-                try {
-                    return XMLLoader.getObjectFromStream(overdueConfigStream, DefaultOverdueConfig.class);
-                } catch (final Exception e) {
-                    throw new OverdueApiException(ErrorCode.OVERDUE_INVALID_FOR_TENANT, "Problem encountered loading overdue config ", e);
-                }
-            }
-        };
-        final Object[] args = new Object[1];
-        args[0] = loaderCallback;
-        final ObjectType irrelevant = null;
-        final InternalTenantContext notUsed = null;
-        return new CacheLoaderArgument(irrelevant, args, notUsed);
-    }
+    // private CacheLoaderArgument initializeCacheLoaderArgument() {
+    //     final LoaderCallback loaderCallback = new LoaderCallback() {
+    //         @Override
+    //         public OverdueConfig loadOverdueConfig(final String overdueConfigXML) throws OverdueApiException {
+    //             final InputStream overdueConfigStream = new ByteArrayInputStream(overdueConfigXML.getBytes());
+    //             try {
+    //                 return XMLLoader.getObjectFromStream(overdueConfigStream, DefaultOverdueConfig.class);
+    //             } catch (final Exception e) {
+    //                 throw new OverdueApiException(ErrorCode.OVERDUE_INVALID_FOR_TENANT, "Problem encountered loading overdue config ", e);
+    //             }
+    //         }
+    //     };
+    //     final Object[] args = new Object[1];
+    //     args[0] = loaderCallback;
+    //     final ObjectType irrelevant = null;
+    //     final InternalTenantContext notUsed = null;
+    //     return new CacheLoaderArgument(irrelevant, args, notUsed);
+    // }
 
 }
diff --git a/overdue/src/main/java/org/killbill/billing/overdue/caching/OverdueCacheInvalidationCallback.java b/overdue/src/main/java/org/killbill/billing/overdue/caching/OverdueCacheInvalidationCallback.java
index 4a19678..0f6c7e1 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/caching/OverdueCacheInvalidationCallback.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/caching/OverdueCacheInvalidationCallback.java
@@ -15,30 +15,30 @@
  * under the License.
  */
 
-package org.killbill.billing.overdue.caching;
+// package org.killbill.billing.overdue.caching;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
-import org.killbill.billing.tenant.api.TenantKV.TenantKey;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantKV.TenantKey;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-import com.google.inject.Inject;
+// import com.google.inject.Inject;
 
-public class OverdueCacheInvalidationCallback implements CacheInvalidationCallback {
+// public class OverdueCacheInvalidationCallback implements CacheInvalidationCallback {
 
-    private static final Logger log = LoggerFactory.getLogger(OverdueCacheInvalidationCallback.class);
+//     private static final Logger log = LoggerFactory.getLogger(OverdueCacheInvalidationCallback.class);
 
-    private final OverdueConfigCache overdueConfigCache;
+//     private final OverdueConfigCache overdueConfigCache;
 
-    @Inject
-    public OverdueCacheInvalidationCallback(final OverdueConfigCache overdueConfigCache) {
-        this.overdueConfigCache = overdueConfigCache;
-    }
+//     @Inject
+//     public OverdueCacheInvalidationCallback(final OverdueConfigCache overdueConfigCache) {
+//         this.overdueConfigCache = overdueConfigCache;
+//     }
 
-    @Override
-    public void invalidateCache(TenantKey key, final Object cookie, final InternalTenantContext tenantContext) {
-        log.info("Invalidate overdue cache for tenantRecordId='{}'", tenantContext.getTenantRecordId());
-        overdueConfigCache.clearOverdueConfig(tenantContext);
-    }
-}
+//     @Override
+//     public void invalidateCache(TenantKey key, final Object cookie, final InternalTenantContext tenantContext) {
+//         log.info("Invalidate overdue cache for tenantRecordId='{}'", tenantContext.getTenantRecordId());
+//         overdueConfigCache.clearOverdueConfig(tenantContext);
+//     }
+// }
diff --git a/overdue/src/main/java/org/killbill/billing/overdue/glue/DefaultOverdueModule.java b/overdue/src/main/java/org/killbill/billing/overdue/glue/DefaultOverdueModule.java
index 3b509aa..2e20bed 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/glue/DefaultOverdueModule.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/glue/DefaultOverdueModule.java
@@ -24,7 +24,7 @@ import org.killbill.billing.overdue.OverdueService;
 import org.killbill.billing.overdue.api.DefaultOverdueApi;
 import org.killbill.billing.overdue.api.OverdueApi;
 import org.killbill.billing.overdue.caching.DefaultOverdueConfigCache;
-import org.killbill.billing.overdue.caching.OverdueCacheInvalidationCallback;
+// import org.killbill.billing.overdue.caching.OverdueCacheInvalidationCallback;
 import org.killbill.billing.overdue.caching.OverdueConfigCache;
 import org.killbill.billing.overdue.listener.OverdueListener;
 import org.killbill.billing.overdue.notification.OverdueAsyncBusNotifier;
@@ -36,7 +36,7 @@ import org.killbill.billing.overdue.notification.OverduePoster;
 import org.killbill.billing.overdue.service.DefaultOverdueService;
 import org.killbill.billing.overdue.wrapper.OverdueWrapperFactory;
 import org.killbill.billing.platform.api.KillbillConfigSource;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
 import org.killbill.billing.util.glue.KillBillModule;
 import org.skife.config.ConfigurationObjectFactory;
 
@@ -89,6 +89,6 @@ public class DefaultOverdueModule extends KillBillModule implements OverdueModul
 
     public void installOverdueConfigCache() {
         bind(OverdueConfigCache.class).to(DefaultOverdueConfigCache.class).asEagerSingleton();
-        bind(CacheInvalidationCallback.class).annotatedWith(Names.named(OVERDUE_INVALIDATION_CALLBACK)).to(OverdueCacheInvalidationCallback.class).asEagerSingleton();
+    //     bind(CacheInvalidationCallback.class).annotatedWith(Names.named(OVERDUE_INVALIDATION_CALLBACK)).to(OverdueCacheInvalidationCallback.class).asEagerSingleton();
     }
 }
diff --git a/overdue/src/main/java/org/killbill/billing/overdue/listener/OverdueListener.java b/overdue/src/main/java/org/killbill/billing/overdue/listener/OverdueListener.java
index e247a1f..35e5f2e 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/listener/OverdueListener.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/listener/OverdueListener.java
@@ -44,9 +44,9 @@ import org.killbill.billing.overdue.notification.OverdueAsyncBusNotificationKey;
 import org.killbill.billing.overdue.notification.OverdueAsyncBusNotificationKey.OverdueAsyncBusNotificationAction;
 import org.killbill.billing.overdue.notification.OverdueAsyncBusNotifier;
 import org.killbill.billing.overdue.notification.OverduePoster;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.CallOrigin;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.callcontext.UserType;
@@ -66,7 +66,7 @@ public class OverdueListener {
     private static final Logger log = LoggerFactory.getLogger(OverdueListener.class);
 
     private final InternalCallContextFactory internalCallContextFactory;
-    private final CacheController<String, UUID> objectIdCacheController;
+    // private final CacheController<String, UUID> objectIdCacheController;
     private final Clock clock;
     private final OverduePoster asyncPoster;
     private final OverdueConfigCache overdueConfigCache;
@@ -75,7 +75,7 @@ public class OverdueListener {
 
     @Inject
     public OverdueListener(final NonEntityDao nonEntityDao,
-                           final CacheControllerDispatcher cacheControllerDispatcher,
+                           // final CacheControllerDispatcher cacheControllerDispatcher,
                            final Clock clock,
                            @Named(DefaultOverdueModule.OVERDUE_NOTIFIER_ASYNC_BUS_NAMED)  final OverduePoster asyncPoster,
                            final OverdueConfigCache overdueConfigCache,
@@ -85,7 +85,7 @@ public class OverdueListener {
         this.clock = clock;
         this.asyncPoster = asyncPoster;
         this.overdueConfigCache = overdueConfigCache;
-        this.objectIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
+        // this.objectIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
         this.internalCallContextFactory = internalCallContextFactory;
         this.accountApi = accountApi;
     }
@@ -97,7 +97,7 @@ public class OverdueListener {
             final InternalCallContext internalCallContext = createCallContext(event.getUserToken(), event.getSearchKey1(), event.getSearchKey2());
             insertBusEventIntoNotificationQueue(event.getObjectId(), OverdueAsyncBusNotificationAction.CLEAR, internalCallContext);
         } else if (event.getTagDefinition().getName().equals(ControlTagType.WRITTEN_OFF.toString()) && event.getObjectType() == ObjectType.INVOICE) {
-            final UUID accountId = nonEntityDao.retrieveIdFromObject(event.getSearchKey1(), ObjectType.ACCOUNT, objectIdCacheController);
+            final UUID accountId = nonEntityDao.retrieveIdFromObject(event.getSearchKey1(), ObjectType.ACCOUNT, null);
             insertBusEventIntoNotificationQueue(accountId, event);
         }
     }
@@ -108,7 +108,7 @@ public class OverdueListener {
         if (event.getTagDefinition().getName().equals(ControlTagType.OVERDUE_ENFORCEMENT_OFF.toString()) && event.getObjectType() == ObjectType.ACCOUNT) {
             insertBusEventIntoNotificationQueue(event.getObjectId(), event);
         } else if (event.getTagDefinition().getName().equals(ControlTagType.WRITTEN_OFF.toString()) && event.getObjectType() == ObjectType.INVOICE) {
-            final UUID accountId = nonEntityDao.retrieveIdFromObject(event.getSearchKey1(), ObjectType.ACCOUNT, objectIdCacheController);
+            final UUID accountId = nonEntityDao.retrieveIdFromObject(event.getSearchKey1(), ObjectType.ACCOUNT, null);
             insertBusEventIntoNotificationQueue(accountId, event);
         }
     }
diff --git a/overdue/src/main/java/org/killbill/billing/overdue/notification/DefaultOverduePosterBase.java b/overdue/src/main/java/org/killbill/billing/overdue/notification/DefaultOverduePosterBase.java
index 2e63123..7eb553a 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/notification/DefaultOverduePosterBase.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/notification/DefaultOverduePosterBase.java
@@ -26,7 +26,7 @@ import javax.inject.Named;
 import org.joda.time.DateTime;
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.overdue.service.DefaultOverdueService;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.dao.EntitySqlDaoTransactionWrapper;
@@ -53,10 +53,12 @@ public abstract class DefaultOverduePosterBase implements OverduePoster {
     private final EntitySqlDaoTransactionalJdbiWrapper transactionalSqlDao;
 
     public DefaultOverduePosterBase(final NotificationQueueService notificationQueueService,
-                                    final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher,
+                                    final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, // final CacheControllerDispatcher cacheControllerDispatcher,
                                     final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
         this.notificationQueueService = notificationQueueService;
-        this.transactionalSqlDao = new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory);
+        this.transactionalSqlDao = new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+            // cacheControllerDispatcher, 
+            nonEntityDao, internalCallContextFactory);
     }
 
     @Override
diff --git a/overdue/src/main/java/org/killbill/billing/overdue/notification/OverdueAsyncBusPoster.java b/overdue/src/main/java/org/killbill/billing/overdue/notification/OverdueAsyncBusPoster.java
index 3189c49..f45a35b 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/notification/OverdueAsyncBusPoster.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/notification/OverdueAsyncBusPoster.java
@@ -21,7 +21,7 @@ package org.killbill.billing.overdue.notification;
 import javax.inject.Named;
 
 import org.joda.time.DateTime;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.dao.EntitySqlDaoWrapperFactory;
@@ -40,9 +40,11 @@ public class OverdueAsyncBusPoster extends DefaultOverduePosterBase {
 
     @Inject
     public OverdueAsyncBusPoster(final NotificationQueueService notificationQueueService,
-                                 final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher,
+                                 final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, //final CacheControllerDispatcher cacheControllerDispatcher,
                                  final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
-        super(notificationQueueService, dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory);
+        super(notificationQueueService, dbi, roDbi, clock,
+         // cacheControllerDispatcher, 
+         nonEntityDao, internalCallContextFactory);
     }
 
     @Override
diff --git a/overdue/src/main/java/org/killbill/billing/overdue/notification/OverdueCheckPoster.java b/overdue/src/main/java/org/killbill/billing/overdue/notification/OverdueCheckPoster.java
index 1f30971..5c88b98 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/notification/OverdueCheckPoster.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/notification/OverdueCheckPoster.java
@@ -23,7 +23,7 @@ import java.util.Iterator;
 import javax.inject.Named;
 
 import org.joda.time.DateTime;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.dao.EntitySqlDaoWrapperFactory;
@@ -41,9 +41,11 @@ public class OverdueCheckPoster extends DefaultOverduePosterBase {
 
     @Inject
     public OverdueCheckPoster(final NotificationQueueService notificationQueueService,
-                              final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher,
+                              final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, // final CacheControllerDispatcher cacheControllerDispatcher,
                               final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
-        super(notificationQueueService, dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory);
+        super(notificationQueueService, dbi, roDbi, clock,
+         // cacheControllerDispatcher,
+         nonEntityDao, internalCallContextFactory);
     }
 
     @Override
diff --git a/overdue/src/main/java/org/killbill/billing/overdue/service/DefaultOverdueService.java b/overdue/src/main/java/org/killbill/billing/overdue/service/DefaultOverdueService.java
index 6d4459f..896bdd8 100644
--- a/overdue/src/main/java/org/killbill/billing/overdue/service/DefaultOverdueService.java
+++ b/overdue/src/main/java/org/killbill/billing/overdue/service/DefaultOverdueService.java
@@ -33,7 +33,7 @@ import org.killbill.billing.overdue.notification.OverdueNotifier;
 import org.killbill.billing.platform.api.LifecycleHandlerType;
 import org.killbill.billing.platform.api.LifecycleHandlerType.LifecycleLevel;
 import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
 import org.killbill.billing.tenant.api.TenantKV.TenantKey;
 import org.killbill.bus.api.PersistentBus.EventBusException;
 import org.slf4j.Logger;
@@ -52,7 +52,7 @@ public class DefaultOverdueService implements OverdueService {
     private final OverdueListener listener;
 
     private final OverdueConfigCache overdueConfigCache;
-    private final CacheInvalidationCallback overdueCacheInvalidationCallback;
+    // private final CacheInvalidationCallback overdueCacheInvalidationCallback;
 
     private final TenantInternalApi tenantInternalApi;
     private boolean isConfigLoaded;
@@ -64,7 +64,7 @@ public class DefaultOverdueService implements OverdueService {
                                  final BusService busService,
                                  final OverdueListener listener,
                                  final OverdueConfigCache overdueConfigCache,
-                                 @Named(DefaultOverdueModule.OVERDUE_INVALIDATION_CALLBACK) final CacheInvalidationCallback overdueCacheInvalidationCallback,
+                                 // @Named(DefaultOverdueModule.OVERDUE_INVALIDATION_CALLBACK) final CacheInvalidationCallback overdueCacheInvalidationCallback,
                                  final TenantInternalApi tenantInternalApi) {
         this.properties = properties;
         this.checkNotifier = checkNotifier;
@@ -73,7 +73,7 @@ public class DefaultOverdueService implements OverdueService {
         this.listener = listener;
         this.isConfigLoaded = false;
         this.overdueConfigCache = overdueConfigCache;
-        this.overdueCacheInvalidationCallback = overdueCacheInvalidationCallback;
+        // this.overdueCacheInvalidationCallback = overdueCacheInvalidationCallback;
         this.tenantInternalApi = tenantInternalApi;
     }
 
@@ -104,7 +104,7 @@ public class DefaultOverdueService implements OverdueService {
         registerForBus();
         checkNotifier.initialize();
         asyncNotifier.initialize();
-        tenantInternalApi.initializeCacheInvalidationCallback(TenantKey.OVERDUE_CONFIG, overdueCacheInvalidationCallback);
+        // tenantInternalApi.initializeCacheInvalidationCallback(TenantKey.OVERDUE_CONFIG, overdueCacheInvalidationCallback);
     }
 
     private void registerForBus() {
diff --git a/payment/src/main/java/org/killbill/billing/payment/caching/DefaultStateMachineConfigCache.java b/payment/src/main/java/org/killbill/billing/payment/caching/DefaultStateMachineConfigCache.java
index 01c8b61..12e47c9 100644
--- a/payment/src/main/java/org/killbill/billing/payment/caching/DefaultStateMachineConfigCache.java
+++ b/payment/src/main/java/org/killbill/billing/payment/caching/DefaultStateMachineConfigCache.java
@@ -31,13 +31,13 @@ import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.payment.api.PaymentApiException;
 import org.killbill.billing.payment.glue.PaymentModule;
 import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
 import org.killbill.billing.tenant.api.TenantKV.TenantKey;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
-import org.killbill.billing.util.cache.TenantStateMachineConfigCacheLoader.LoaderCallback;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.TenantStateMachineConfigCacheLoader.LoaderCallback;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.xmlloader.XMLLoader;
 import org.slf4j.Logger;
@@ -49,30 +49,34 @@ public class DefaultStateMachineConfigCache implements StateMachineConfigCache {
 
     private static final Logger logger = LoggerFactory.getLogger(DefaultStateMachineConfigCache.class);
 
-    private final CacheController<String, StateMachineConfig> cacheController;
-    private final LoaderCallback loaderCallback;
+    // private final CacheController<String, StateMachineConfig> cacheController;
+    // private final LoaderCallback loaderCallback;
 
     private DefaultStateMachineConfig defaultPaymentStateMachineConfig;
 
+    private final TenantInternalApi tenantApi;
+
     @Inject
-    public DefaultStateMachineConfigCache(final TenantInternalApi tenantInternalApi,
-                                          final CacheControllerDispatcher cacheControllerDispatcher,
-                                          @Named(PaymentModule.STATE_MACHINE_CONFIG_INVALIDATION_CALLBACK) final CacheInvalidationCallback cacheInvalidationCallback) {
+    public DefaultStateMachineConfigCache(final TenantInternalApi tenantInternalApi
+                                          // final CacheControllerDispatcher cacheControllerDispatcher,
+                                          // @Named(PaymentModule.STATE_MACHINE_CONFIG_INVALIDATION_CALLBACK) final CacheInvalidationCallback cacheInvalidationCallback
+                                          ) {
+        this.tenantApi = tenantInternalApi;
         // Can be null if mis-configured (e.g. missing in ehcache.xml)
-        this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_PAYMENT_STATE_MACHINE_CONFIG);
-        this.loaderCallback = new LoaderCallback() {
-            public Object loadStateMachineConfig(final String stateMachineConfigXML) throws PaymentApiException {
-                tenantInternalApi.initializeCacheInvalidationCallback(TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_, cacheInvalidationCallback);
-
-                try {
-                    final InputStream stream = new ByteArrayInputStream(stateMachineConfigXML.getBytes());
-                    return XMLLoader.getObjectFromStream(stream, DefaultStateMachineConfig.class);
-                } catch (final Exception e) {
-                    // TODO 0.17 proper error code
-                    throw new PaymentApiException(e, ErrorCode.PAYMENT_INTERNAL_ERROR, "Invalid payment state machine config");
-                }
-            }
-        };
+        // this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_PAYMENT_STATE_MACHINE_CONFIG);
+        // this.loaderCallback = new LoaderCallback() {
+        //     public Object loadStateMachineConfig(final String stateMachineConfigXML) throws PaymentApiException {
+        //         // tenantInternalApi.initializeCacheInvalidationCallback(TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_, cacheInvalidationCallback);
+
+        //         try {
+        //             final InputStream stream = new ByteArrayInputStream(stateMachineConfigXML.getBytes());
+        //             return XMLLoader.getObjectFromStream(stream, DefaultStateMachineConfig.class);
+        //         } catch (final Exception e) {
+        //             // TODO 0.17 proper error code
+        //             throw new PaymentApiException(e, ErrorCode.PAYMENT_INTERNAL_ERROR, "Invalid payment state machine config");
+        //         }
+        //     }
+        // };
     }
 
     @Override
@@ -89,18 +93,41 @@ public class DefaultStateMachineConfigCache implements StateMachineConfigCache {
 
     @Override
     public StateMachineConfig getPaymentStateMachineConfig(final String pluginName, final InternalTenantContext tenantContext) throws PaymentApiException {
-        if (InternalCallContextFactory.INTERNAL_TENANT_RECORD_ID.equals(tenantContext.getTenantRecordId()) || cacheController == null) {
+        if (InternalCallContextFactory.INTERNAL_TENANT_RECORD_ID.equals(tenantContext.getTenantRecordId()) ){// || cacheController == null) {
             return defaultPaymentStateMachineConfig;
         }
 
-        final String pluginConfigKey = getCacheKeyName(pluginName, tenantContext);
-        final CacheLoaderArgument cacheLoaderArgument = createCacheLoaderArgument(pluginName);
+        // final String pluginConfigKey = getCacheKeyName(pluginName, tenantContext);
+        // final CacheLoaderArgument cacheLoaderArgument = createCacheLoaderArgument(pluginName);
+
         try {
-            StateMachineConfig pluginPaymentStateMachineConfig = cacheController.get(pluginConfigKey, cacheLoaderArgument);
+            StateMachineConfig pluginPaymentStateMachineConfig = null;// = cacheController.get(pluginConfigKey, cacheLoaderArgument);
+
+final String tenantRecordId = String.valueOf(tenantContext.getTenantRecordId());
+
+final InternalTenantContext internalTenantContext = new InternalTenantContext(Long.valueOf(tenantRecordId));
+final String stateMachineConfigXML = tenantApi.getPluginPaymentStateMachineConfig(pluginName, internalTenantContext);
+try {
+if (stateMachineConfigXML == null) {
+    throw new Exception();
+}
+
+    logger.info("Loading config state machine cache for pluginName='{}', tenantRecordId='{}'", pluginName, tenantContext.getTenantRecordId());
+    final InputStream stream = new ByteArrayInputStream(stateMachineConfigXML.getBytes());
+    pluginPaymentStateMachineConfig = XMLLoader.getObjectFromStream(stream, DefaultStateMachineConfig.class);
+// } catch (final PaymentApiException e) {
+//     throw new IllegalStateException(String.format("Failed to de-serialize state machine config for tenantRecordId='%s'", internalTenantContext.getTenantRecordId()), e);
+// }
+                } catch (final Exception e) {
+                    // TODO 0.17 proper error code
+                    throw new PaymentApiException(e, ErrorCode.PAYMENT_INTERNAL_ERROR, "Invalid payment state machine config");
+                }
+
+
             // It means we are using the default state machine config in a multi-tenant deployment
             if (pluginPaymentStateMachineConfig == null) {
                 pluginPaymentStateMachineConfig = defaultPaymentStateMachineConfig;
-                cacheController.putIfAbsent(pluginConfigKey, pluginPaymentStateMachineConfig);
+                // cacheController.putIfAbsent(pluginConfigKey, pluginPaymentStateMachineConfig);
             }
 
             ((DefaultStateMachineConfig)pluginPaymentStateMachineConfig).initialize(defaultPaymentStateMachineConfig);
@@ -112,28 +139,28 @@ public class DefaultStateMachineConfigCache implements StateMachineConfigCache {
     }
 
     // See also DefaultTenantUserApi - we use the same conventions as the main XML cache (so we can re-use the invalidation code)
-    private String getCacheKeyName(final String pluginName, final InternalTenantContext internalContext) {
-        final StringBuilder tenantKey = new StringBuilder(TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_.toString());
-        tenantKey.append(pluginName);
-        tenantKey.append(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
-        tenantKey.append(internalContext.getTenantRecordId());
-        return tenantKey.toString();
-    }
+    // private String getCacheKeyName(final String pluginName, final InternalTenantContext internalContext) {
+    //     final StringBuilder tenantKey = new StringBuilder(TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_.toString());
+    //     tenantKey.append(pluginName);
+    //     tenantKey.append(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
+    //     tenantKey.append(internalContext.getTenantRecordId());
+    //     return tenantKey.toString();
+    // }
 
     @Override
     public void clearPaymentStateMachineConfig(final String pluginName, final InternalTenantContext tenantContext) {
-        if (!InternalCallContextFactory.INTERNAL_TENANT_RECORD_ID.equals(tenantContext.getTenantRecordId()) && cacheController != null) {
-            final String key = getCacheKeyName(pluginName, tenantContext);
-            cacheController.remove(key);
-        }
+        // if (!InternalCallContextFactory.INTERNAL_TENANT_RECORD_ID.equals(tenantContext.getTenantRecordId()) && cacheController != null) {
+        //     final String key = getCacheKeyName(pluginName, tenantContext);
+        //     cacheController.remove(key);
+        // }
     }
 
-    private CacheLoaderArgument createCacheLoaderArgument(final String pluginName) {
-        final Object[] args = new Object[2];
-        args[0] = loaderCallback;
-        args[1] = pluginName;
-        final ObjectType irrelevant = null;
-        final InternalTenantContext notUsed = null;
-        return new CacheLoaderArgument(irrelevant, args, notUsed);
-    }
+    // private CacheLoaderArgument createCacheLoaderArgument(final String pluginName) {
+    //     final Object[] args = new Object[2];
+    //     args[0] = loaderCallback;
+    //     args[1] = pluginName;
+    //     final ObjectType irrelevant = null;
+    //     final InternalTenantContext notUsed = null;
+    //     return new CacheLoaderArgument(irrelevant, args, notUsed);
+    // }
 }
diff --git a/payment/src/main/java/org/killbill/billing/payment/caching/StateMachineConfigCacheInvalidationCallback.java b/payment/src/main/java/org/killbill/billing/payment/caching/StateMachineConfigCacheInvalidationCallback.java
index 4a47495..7882774 100644
--- a/payment/src/main/java/org/killbill/billing/payment/caching/StateMachineConfigCacheInvalidationCallback.java
+++ b/payment/src/main/java/org/killbill/billing/payment/caching/StateMachineConfigCacheInvalidationCallback.java
@@ -15,35 +15,35 @@
  * under the License.
  */
 
-package org.killbill.billing.payment.caching;
+// package org.killbill.billing.payment.caching;
 
-import javax.inject.Inject;
+// import javax.inject.Inject;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
-import org.killbill.billing.tenant.api.TenantKV.TenantKey;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantKV.TenantKey;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-// Similar to TenantCacheInvalidationCallback
-public class StateMachineConfigCacheInvalidationCallback implements CacheInvalidationCallback {
+// // Similar to TenantCacheInvalidationCallback
+// public class StateMachineConfigCacheInvalidationCallback implements CacheInvalidationCallback {
 
-    private final Logger log = LoggerFactory.getLogger(StateMachineConfigCacheInvalidationCallback.class);
+//     private final Logger log = LoggerFactory.getLogger(StateMachineConfigCacheInvalidationCallback.class);
 
-    private final StateMachineConfigCache stateMachineConfigCache;
+//     private final StateMachineConfigCache stateMachineConfigCache;
 
-    @Inject
-    public StateMachineConfigCacheInvalidationCallback(final StateMachineConfigCache stateMachineConfigCache) {
-        this.stateMachineConfigCache = stateMachineConfigCache;
-    }
+//     @Inject
+//     public StateMachineConfigCacheInvalidationCallback(final StateMachineConfigCache stateMachineConfigCache) {
+//         this.stateMachineConfigCache = stateMachineConfigCache;
+//     }
 
-    @Override
-    public void invalidateCache(final TenantKey tenantKey, final Object cookie, final InternalTenantContext tenantContext) {
-        if (cookie == null) {
-            return;
-        }
+//     @Override
+//     public void invalidateCache(final TenantKey tenantKey, final Object cookie, final InternalTenantContext tenantContext) {
+//         if (cookie == null) {
+//             return;
+//         }
 
-        log.info("Invalidate payment state machine config cache for pluginName='{}', tenantRecordId='{}'", cookie, tenantContext.getTenantRecordId());
-        stateMachineConfigCache.clearPaymentStateMachineConfig(cookie.toString(), tenantContext);
-    }
-}
+//         log.info("Invalidate payment state machine config cache for pluginName='{}', tenantRecordId='{}'", cookie, tenantContext.getTenantRecordId());
+//         stateMachineConfigCache.clearPaymentStateMachineConfig(cookie.toString(), tenantContext);
+//     }
+// }
diff --git a/payment/src/main/java/org/killbill/billing/payment/config/MultiTenantPaymentConfig.java b/payment/src/main/java/org/killbill/billing/payment/config/MultiTenantPaymentConfig.java
index 4998de8..ddab5e2 100644
--- a/payment/src/main/java/org/killbill/billing/payment/config/MultiTenantPaymentConfig.java
+++ b/payment/src/main/java/org/killbill/billing/payment/config/MultiTenantPaymentConfig.java
@@ -26,7 +26,7 @@ import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.payment.glue.PaymentModule;
 import org.killbill.billing.util.config.definition.KillbillConfig;
 import org.killbill.billing.util.config.definition.PaymentConfig;
-import org.killbill.billing.util.config.tenant.CacheConfig;
+// import org.killbill.billing.util.config.tenant.CacheConfig;
 import org.killbill.billing.util.config.tenant.MultiTenantConfigBase;
 import org.skife.config.Param;
 import org.skife.config.TimeSpan;
@@ -36,8 +36,9 @@ public class MultiTenantPaymentConfig extends MultiTenantConfigBase implements P
     private final PaymentConfig staticConfig;
 
     @Inject
-    public MultiTenantPaymentConfig(@Named(PaymentModule.STATIC_CONFIG) final PaymentConfig staticConfig, final CacheConfig cacheConfig) {
-        super(cacheConfig);
+    public MultiTenantPaymentConfig(@Named(PaymentModule.STATIC_CONFIG) final PaymentConfig staticConfig){//, final CacheConfig cacheConfig) {
+        super();
+        // super(cacheConfig);
         this.staticConfig = staticConfig;
     }
 
diff --git a/payment/src/main/java/org/killbill/billing/payment/dao/DefaultPaymentDao.java b/payment/src/main/java/org/killbill/billing/payment/dao/DefaultPaymentDao.java
index b7aa24f..ee8f06e 100644
--- a/payment/src/main/java/org/killbill/billing/payment/dao/DefaultPaymentDao.java
+++ b/payment/src/main/java/org/killbill/billing/payment/dao/DefaultPaymentDao.java
@@ -51,7 +51,7 @@ import org.killbill.billing.payment.core.sm.PaymentStateMachineHelper;
 import org.killbill.billing.util.api.AuditLevel;
 import org.killbill.billing.util.audit.AuditLogWithHistory;
 import org.killbill.billing.util.audit.dao.AuditDao;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.callcontext.TenantContext;
 import org.killbill.billing.util.dao.NonEntityDao;
@@ -92,9 +92,11 @@ public class DefaultPaymentDao extends EntityDaoBase<PaymentModelDao, Payment, P
     private final AuditDao auditDao;
 
     @Inject
-    public DefaultPaymentDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher,
+    public DefaultPaymentDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, // final CacheControllerDispatcher cacheControllerDispatcher,
                              final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory, final PersistentBus eventBus, final AuditDao auditDao) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory), PaymentSqlDao.class);
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+          // cacheControllerDispatcher, 
+          nonEntityDao, internalCallContextFactory), PaymentSqlDao.class);
         this.paginationHelper = new DefaultPaginationSqlDaoHelper(transactionalSqlDao);
         this.eventBus = eventBus;
         this.clock = clock;
diff --git a/payment/src/main/java/org/killbill/billing/payment/glue/PaymentModule.java b/payment/src/main/java/org/killbill/billing/payment/glue/PaymentModule.java
index 52d8c9d..2671432 100644
--- a/payment/src/main/java/org/killbill/billing/payment/glue/PaymentModule.java
+++ b/payment/src/main/java/org/killbill/billing/payment/glue/PaymentModule.java
@@ -39,7 +39,7 @@ import org.killbill.billing.payment.bus.PaymentBusEventHandler;
 import org.killbill.billing.payment.config.MultiTenantPaymentConfig;
 import org.killbill.billing.payment.caching.DefaultStateMachineConfigCache;
 import org.killbill.billing.payment.caching.StateMachineConfigCache;
-import org.killbill.billing.payment.caching.StateMachineConfigCacheInvalidationCallback;
+// import org.killbill.billing.payment.caching.StateMachineConfigCacheInvalidationCallback;
 import org.killbill.billing.payment.core.PaymentExecutors;
 import org.killbill.billing.payment.core.PaymentGatewayProcessor;
 import org.killbill.billing.payment.core.PaymentMethodProcessor;
@@ -64,7 +64,7 @@ import org.killbill.billing.payment.retry.DefaultRetryService.DefaultRetryServic
 import org.killbill.billing.payment.retry.RetryService;
 import org.killbill.billing.platform.api.KillbillConfigSource;
 import org.killbill.billing.util.config.definition.PaymentConfig;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
 import org.killbill.billing.util.glue.KillBillModule;
 import org.killbill.xmlloader.XMLLoader;
 import org.skife.config.ConfigurationObjectFactory;
@@ -122,7 +122,7 @@ public class PaymentModule extends KillBillModule {
         bind(PaymentControlStateMachineHelper.class).asEagerSingleton();
 
         bind(StateMachineConfigCache.class).to(DefaultStateMachineConfigCache.class).asEagerSingleton();
-        bind(CacheInvalidationCallback.class).annotatedWith(Names.named(STATE_MACHINE_CONFIG_INVALIDATION_CALLBACK)).to(StateMachineConfigCacheInvalidationCallback.class).asEagerSingleton();
+        // bind(CacheInvalidationCallback.class).annotatedWith(Names.named(STATE_MACHINE_CONFIG_INVALIDATION_CALLBACK)).to(StateMachineConfigCacheInvalidationCallback.class).asEagerSingleton();
 
         bind(PaymentStateMachineHelper.class).asEagerSingleton();
 
diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/config/MultiTenantNotificationConfig.java b/profiles/killbill/src/main/java/org/killbill/billing/server/config/MultiTenantNotificationConfig.java
index 08ffd8a..55ab218 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/config/MultiTenantNotificationConfig.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/config/MultiTenantNotificationConfig.java
@@ -26,7 +26,7 @@ import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.payment.glue.PaymentModule;
 import org.killbill.billing.util.config.definition.KillbillConfig;
 import org.killbill.billing.util.config.definition.NotificationConfig;
-import org.killbill.billing.util.config.tenant.CacheConfig;
+// import org.killbill.billing.util.config.tenant.CacheConfig;
 import org.killbill.billing.util.config.tenant.MultiTenantConfigBase;
 import org.skife.config.Param;
 import org.skife.config.TimeSpan;
@@ -36,12 +36,13 @@ import com.google.inject.name.Named;
 
 public class MultiTenantNotificationConfig extends MultiTenantConfigBase implements NotificationConfig {
 
-    private final Map<String, Method> methodsCache = new HashMap<String, Method>();
+    // private final Map<String, Method> methodsCache = new HashMap<String, Method>();
     private final NotificationConfig staticConfig;
 
     @Inject
-    public MultiTenantNotificationConfig(@Named(PaymentModule.STATIC_CONFIG) final NotificationConfig staticConfig, final CacheConfig cacheConfig) {
-        super(cacheConfig);
+    public MultiTenantNotificationConfig(@Named(PaymentModule.STATIC_CONFIG) final NotificationConfig staticConfig){//, final CacheConfig cacheConfig) {
+        // super(cacheConfig);
+        super();
         this.staticConfig = staticConfig;
     }
 
diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillJdbcTenantRealmProvider.java b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillJdbcTenantRealmProvider.java
index 4e7ca1c..69458cd 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillJdbcTenantRealmProvider.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillJdbcTenantRealmProvider.java
@@ -20,7 +20,7 @@ package org.killbill.billing.server.modules;
 import javax.inject.Named;
 import javax.sql.DataSource;
 
-import org.apache.shiro.cache.CacheManager;
+// import org.apache.shiro.cache.CacheManager;
 import org.killbill.billing.server.security.KillbillJdbcTenantRealm;
 import org.killbill.billing.util.config.definition.SecurityConfig;
 
@@ -32,13 +32,15 @@ import static org.killbill.billing.platform.glue.KillBillPlatformModuleBase.SHIR
 public class KillbillJdbcTenantRealmProvider implements Provider<KillbillJdbcTenantRealm> {
 
     private final SecurityConfig securityConfig;
-    private final CacheManager cacheManager;
+    // private final CacheManager cacheManager;
     private final DataSource dataSource;
 
     @Inject
-    public KillbillJdbcTenantRealmProvider(final SecurityConfig securityConfig, final CacheManager cacheManager, @Named(SHIRO_DATA_SOURCE_ID) final DataSource dataSource) {
+    public KillbillJdbcTenantRealmProvider(final SecurityConfig securityConfig,
+     // final CacheManager cacheManager,
+      @Named(SHIRO_DATA_SOURCE_ID) final DataSource dataSource) {
         this.securityConfig = securityConfig;
-        this.cacheManager = cacheManager;
+        // this.cacheManager = cacheManager;
         this.dataSource = dataSource;
     }
 
@@ -49,7 +51,7 @@ public class KillbillJdbcTenantRealmProvider implements Provider<KillbillJdbcTen
         // Set the cache manager
         // Note: the DefaultWebSecurityManager used for RBAC will have all of its realms (set in KillBillShiroWebModule)
         // automatically configured with the EhCache manager (see EhCacheManagerProvider)
-        killbillJdbcTenantRealm.setCacheManager(cacheManager);
+        // killbillJdbcTenantRealm.setCacheManager(cacheManager);
 
         return killbillJdbcTenantRealm;
     }
diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java
index f43a948..92f96a8 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java
@@ -73,7 +73,7 @@ import org.killbill.billing.util.config.definition.NotificationConfig;
 import org.killbill.billing.util.email.templates.TemplateModule;
 import org.killbill.billing.util.glue.AuditModule;
 import org.killbill.billing.util.glue.BroadcastModule;
-import org.killbill.billing.util.glue.CacheModule;
+// import org.killbill.billing.util.glue.CacheModule;
 import org.killbill.billing.util.glue.CallContextModule;
 import org.killbill.billing.util.glue.ClockModule;
 import org.killbill.billing.util.glue.ConfigModule;
@@ -168,7 +168,7 @@ public class KillbillServerModule extends KillbillPlatformModule {
         install(new NodesModule(configSource));
         install(new BroadcastModule(configSource));
         install(new BeatrixModule(configSource));
-        install(new CacheModule(configSource));
+        // install(new CacheModule(configSource));
         install(new ConfigModule(configSource));
         install(new CallContextModule(configSource));
         install(new CatalogModule(configSource));
diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillBillShiroWebModule.java b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillBillShiroWebModule.java
index b8a7992..a76b51e 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillBillShiroWebModule.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillBillShiroWebModule.java
@@ -29,7 +29,7 @@ import javax.servlet.http.HttpServletRequest;
 import org.apache.shiro.authc.pam.ModularRealmAuthenticator;
 import org.apache.shiro.authc.pam.ModularRealmAuthenticatorWith540;
 import org.apache.shiro.authz.ModularRealmAuthorizer;
-import org.apache.shiro.cache.CacheManager;
+// import org.apache.shiro.cache.CacheManager;
 import org.apache.shiro.guice.web.ShiroWebModuleWith435;
 import org.apache.shiro.mgt.SubjectDAO;
 import org.apache.shiro.realm.Realm;
@@ -44,11 +44,11 @@ import org.killbill.billing.server.security.FirstSuccessfulStrategyWith540;
 import org.killbill.billing.server.security.KillBillWebSessionManager;
 import org.killbill.billing.server.security.KillbillJdbcTenantRealm;
 import org.killbill.billing.util.config.definition.RbacConfig;
-import org.killbill.billing.util.config.definition.RedisCacheConfig;
-import org.killbill.billing.util.glue.EhcacheShiroManagerProvider;
+// import org.killbill.billing.util.config.definition.RedisCacheConfig;
+// import org.killbill.billing.util.glue.EhcacheShiroManagerProvider;
 import org.killbill.billing.util.glue.KillBillShiroModule;
 import org.killbill.billing.util.glue.RealmsFromShiroIniProvider;
-import org.killbill.billing.util.glue.RedisShiroManagerProvider;
+// import org.killbill.billing.util.glue.RedisShiroManagerProvider;
 import org.killbill.billing.util.glue.SessionDAOProvider;
 import org.killbill.billing.util.security.shiro.realm.KillBillJdbcRealm;
 import org.killbill.billing.util.security.shiro.realm.KillBillJndiLdapRealm;
@@ -78,19 +78,19 @@ public class KillBillShiroWebModule extends ShiroWebModuleWith435 {
 
     @Override
     protected void configureShiroWeb() {
-        final RedisCacheConfig redisCacheConfig = new ConfigurationObjectFactory(new ConfigSource() {
-            @Override
-            public String getString(final String propertyName) {
-                return configSource.getString(propertyName);
-            }
-        }).build(RedisCacheConfig.class);
-
-        // Magic provider to configure the cache manager
-        if (redisCacheConfig.isRedisCachingEnabled()) {
-            bind(CacheManager.class).toProvider(RedisShiroManagerProvider.class).asEagerSingleton();
-        } else {
-            bind(CacheManager.class).toProvider(EhcacheShiroManagerProvider.class).asEagerSingleton();
-        }
+        // final RedisCacheConfig redisCacheConfig = new ConfigurationObjectFactory(new ConfigSource() {
+        //     @Override
+        //     public String getString(final String propertyName) {
+        //         return configSource.getString(propertyName);
+        //     }
+        // }).build(RedisCacheConfig.class);
+
+        // // Magic provider to configure the cache manager
+        // if (redisCacheConfig.isRedisCachingEnabled()) {
+        //     bind(CacheManager.class).toProvider(RedisShiroManagerProvider.class).asEagerSingleton();
+        // } else {
+        //     bind(CacheManager.class).toProvider(EhcacheShiroManagerProvider.class).asEagerSingleton();
+        // }
 
         configureShiroForRBAC();
 
diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/security/KillbillJdbcTenantRealm.java b/profiles/killbill/src/main/java/org/killbill/billing/server/security/KillbillJdbcTenantRealm.java
index 01c8960..2e40851 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/security/KillbillJdbcTenantRealm.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/security/KillbillJdbcTenantRealm.java
@@ -109,17 +109,17 @@ public class KillbillJdbcTenantRealm extends JdbcRealm {
 
         @Override
         public String toHex() {
-            if (this.cachedHex == null) {
+            // if (this.cachedHex == null) {
                 this.cachedHex = Hex.encodeToString(getBytes());
-            }
+            // }
             return this.cachedHex;
         }
 
         @Override
         public String toBase64() {
-            if (this.cachedBase64 == null) {
+            // if (this.cachedBase64 == null) {
                 this.cachedBase64 = Base64.encodeToString(getBytes());
-            }
+            // }
             return this.cachedBase64;
         }
 
diff --git a/profiles/killpay/src/main/java/org/killbill/billing/server/modules/KillpayServerModule.java b/profiles/killpay/src/main/java/org/killbill/billing/server/modules/KillpayServerModule.java
index 38f2e8e..5f4781c 100644
--- a/profiles/killpay/src/main/java/org/killbill/billing/server/modules/KillpayServerModule.java
+++ b/profiles/killpay/src/main/java/org/killbill/billing/server/modules/KillpayServerModule.java
@@ -55,7 +55,7 @@ import org.killbill.billing.usage.glue.UsageModule;
 import org.killbill.billing.util.email.templates.TemplateModule;
 import org.killbill.billing.util.glue.AuditModule;
 import org.killbill.billing.util.glue.BroadcastModule;
-import org.killbill.billing.util.glue.CacheModule;
+// import org.killbill.billing.util.glue.CacheModule;
 import org.killbill.billing.util.glue.CallContextModule;
 import org.killbill.billing.util.glue.ConfigModule;
 import org.killbill.billing.util.glue.CustomFieldModule;
@@ -81,7 +81,7 @@ public class KillpayServerModule extends KillbillServerModule {
         install(new NodesModule(configSource));
         install(new BroadcastModule(configSource));
         install(new BeatrixModule(configSource));
-        install(new CacheModule(configSource));
+        // install(new CacheModule(configSource));
         install(new ConfigModule(configSource));
         install(new CallContextModule(configSource));
         install(new CurrencyModule(configSource));
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/api/SubscriptionApiBase.java b/subscription/src/main/java/org/killbill/billing/subscription/api/SubscriptionApiBase.java
index 0222dbb..5e2441d 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/api/SubscriptionApiBase.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/api/SubscriptionApiBase.java
@@ -52,7 +52,7 @@ import org.killbill.billing.subscription.engine.dao.SubscriptionDao;
 import org.killbill.billing.subscription.events.SubscriptionBaseEvent;
 import org.killbill.billing.subscription.exceptions.SubscriptionBaseError;
 import org.killbill.billing.util.UUIDs;
-import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheController;
 import org.killbill.billing.util.callcontext.TenantContext;
 import org.killbill.clock.Clock;
 
@@ -263,7 +263,7 @@ public class SubscriptionApiBase {
                                                             final String bundleKey,
                                                             final boolean renameCancelledBundleIfExist,
                                                             final Catalog catalog,
-                                                            final CacheController<UUID, UUID> accountIdCacheController,
+                                                            // final CacheController<UUID, UUID> accountIdCacheController,
                                                             final InternalCallContext context) throws SubscriptionBaseApiException {
         final DateTime now = context.getCreatedDate();
         final DefaultSubscriptionBaseBundle bundle = new DefaultSubscriptionBaseBundle(bundleKey, accountId, now, now, now, now);
@@ -272,7 +272,7 @@ public class SubscriptionApiBase {
         }
 
         final SubscriptionBaseBundle subscriptionBundle = dao.createSubscriptionBundle(bundle, catalog, renameCancelledBundleIfExist, context);
-        accountIdCacheController.putIfAbsent(bundle.getId(), accountId);
+        // accountIdCacheController.putIfAbsent(bundle.getId(), accountId);
 
         return subscriptionBundle;
     }
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionBaseCreateApi.java b/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionBaseCreateApi.java
index 46303de..1d6a38e 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionBaseCreateApi.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionBaseCreateApi.java
@@ -50,7 +50,7 @@ import org.killbill.billing.subscription.engine.addon.AddonUtils;
 import org.killbill.billing.subscription.engine.dao.SubscriptionDao;
 import org.killbill.billing.subscription.exceptions.SubscriptionBaseError;
 import org.killbill.billing.util.UUIDs;
-import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheController;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
 import org.killbill.clock.Clock;
@@ -69,8 +69,8 @@ public class DefaultSubscriptionBaseCreateApi extends SubscriptionApiBase {
                                                                        final boolean renameCancelledBundleIfExist,
                                                                        final Catalog catalog,
                                                                        final AddonUtils addonUtils,
-                                                                       final CacheController<UUID, UUID> accountIdCacheController,
-                                                                       final CacheController<UUID, UUID> bundleIdCacheController,
+                                                                       // final CacheController<UUID, UUID> accountIdCacheController,
+                                                                       // final CacheController<UUID, UUID> bundleIdCacheController,
                                                                        final CallContext callContext,
                                                                        final InternalCallContext context) throws SubscriptionBaseApiException, CatalogApiException {
         // Prepare the subscription specifiers from the entitlement specifiers
@@ -81,7 +81,7 @@ public class DefaultSubscriptionBaseCreateApi extends SubscriptionApiBase {
                                                   renameCancelledBundleIfExist,
                                                   catalog,
                                                   addonUtils,
-                                                  accountIdCacheController,
+                                                  // accountIdCacheController,
                                                   callContext,
                                                   context);
         }
@@ -93,11 +93,11 @@ public class DefaultSubscriptionBaseCreateApi extends SubscriptionApiBase {
                                                                                                              callContext);
 
         // Populate the caches
-        for (final SubscriptionBaseWithAddOns subscriptionBaseWithAO : subscriptionBaseWithAddOns) {
-            for (final SubscriptionBase subscriptionBase : subscriptionBaseWithAO.getSubscriptionBaseList()) {
-                bundleIdCacheController.putIfAbsent(subscriptionBase.getId(), subscriptionBaseWithAO.getBundle().getId());
-            }
-        }
+        // for (final SubscriptionBaseWithAddOns subscriptionBaseWithAO : subscriptionBaseWithAddOns) {
+        //     for (final SubscriptionBase subscriptionBase : subscriptionBaseWithAO.getSubscriptionBaseList()) {
+        //         bundleIdCacheController.putIfAbsent(subscriptionBase.getId(), subscriptionBaseWithAO.getBundle().getId());
+        //     }
+        // }
 
         return subscriptionBaseWithAddOns;
     }
@@ -107,7 +107,7 @@ public class DefaultSubscriptionBaseCreateApi extends SubscriptionApiBase {
                                                        final boolean renameCancelledBundleIfExist,
                                                        final Catalog catalog,
                                                        final AddonUtils addonUtils,
-                                                       final CacheController<UUID, UUID> accountIdCacheController,
+                                                       // final CacheController<UUID, UUID> accountIdCacheController,
                                                        final CallContext callContext,
                                                        final InternalCallContext context) throws SubscriptionBaseApiException, CatalogApiException {
         SubscriptionBaseBundle bundle = getBundleWithSanity(subscriptionBaseWithAddOnsSpecifier, catalog, callContext, context);
@@ -143,7 +143,7 @@ public class DefaultSubscriptionBaseCreateApi extends SubscriptionApiBase {
                                             subscriptionBaseWithAddOnsSpecifier.getBundleExternalKey(),
                                             renameCancelledBundleIfExist,
                                             catalog,
-                                            accountIdCacheController,
+                                            // accountIdCacheController,
                                             context);
         } else if (bundle == null) {
             log.warn("Invalid specifier: {}", subscriptionBaseWithAddOnsSpecifier);
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java b/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
index 2680ba5..db7324a 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
@@ -68,12 +68,12 @@ import org.killbill.billing.subscription.engine.dao.model.SubscriptionBundleMode
 import org.killbill.billing.subscription.events.SubscriptionBaseEvent;
 import org.killbill.billing.subscription.events.bcd.BCDEvent;
 import org.killbill.billing.subscription.events.bcd.BCDEventData;
-import org.killbill.billing.util.cache.AccountIdFromBundleIdCacheLoader;
-import org.killbill.billing.util.cache.BundleIdFromSubscriptionIdCacheLoader;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.AccountIdFromBundleIdCacheLoader;
+// import org.killbill.billing.util.cache.BundleIdFromSubscriptionIdCacheLoader;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.callcontext.TenantContext;
@@ -101,8 +101,8 @@ public class DefaultSubscriptionInternalApi extends DefaultSubscriptionBaseCreat
     private final AddonUtils addonUtils;
     private final InternalCallContextFactory internalCallContextFactory;
     private final CatalogInternalApi catalogInternalApi;
-    private final CacheController<UUID, UUID> accountIdCacheController;
-    private final CacheController<UUID, UUID> bundleIdCacheController;
+    // private final CacheController<UUID, UUID> accountIdCacheController;
+    // private final CacheController<UUID, UUID> bundleIdCacheController;
 
     public static final Comparator<SubscriptionBase> SUBSCRIPTIONS_COMPARATOR = new Comparator<SubscriptionBase>() {
 
@@ -124,14 +124,14 @@ public class DefaultSubscriptionInternalApi extends DefaultSubscriptionBaseCreat
                                           final Clock clock,
                                           final CatalogInternalApi catalogInternalApi,
                                           final AddonUtils addonUtils,
-                                          final CacheControllerDispatcher cacheControllerDispatcher,
+                                          // final CacheControllerDispatcher cacheControllerDispatcher,
                                           final InternalCallContextFactory internalCallContextFactory) {
         super(dao, apiService, clock);
         this.addonUtils = addonUtils;
         this.internalCallContextFactory = internalCallContextFactory;
         this.catalogInternalApi = catalogInternalApi;
-        this.accountIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_ID_FROM_BUNDLE_ID);
-        this.bundleIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.BUNDLE_ID_FROM_SUBSCRIPTION_ID);
+        // this.accountIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_ID_FROM_BUNDLE_ID);
+        // this.bundleIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.BUNDLE_ID_FROM_SUBSCRIPTION_ID);
     }
 
     @Override
@@ -144,8 +144,8 @@ public class DefaultSubscriptionInternalApi extends DefaultSubscriptionBaseCreat
                                                            renameCancelledBundleIfExist,
                                                            catalog,
                                                            addonUtils,
-                                                           accountIdCacheController,
-                                                           bundleIdCacheController,
+                                                           // accountIdCacheController,
+                                                           // bundleIdCacheController,
                                                            callContext,
                                                            context);
         } catch (final CatalogApiException e) {
@@ -188,7 +188,9 @@ public class DefaultSubscriptionInternalApi extends DefaultSubscriptionBaseCreat
         }
         try {
             final Catalog catalog = catalogInternalApi.getFullCatalog(true, true, context);
-            return super.createBundleForAccount(accountId, bundleKey, renameCancelledBundleIfExist, catalog, accountIdCacheController, context);
+            return super.createBundleForAccount(accountId, bundleKey, renameCancelledBundleIfExist, catalog, 
+              // accountIdCacheController,
+               context);
         } catch (final CatalogApiException e) {
             throw new  SubscriptionBaseApiException(e);
         }
@@ -454,14 +456,23 @@ public class DefaultSubscriptionInternalApi extends DefaultSubscriptionBaseCreat
 
     @Override
     public UUID getAccountIdFromBundleId(final UUID bundleId, final InternalTenantContext context) throws SubscriptionBaseApiException {
-        final CacheLoaderArgument arg = createAccountIdFromBundleIdCacheLoaderArgument(context);
-        return accountIdCacheController.get(bundleId, arg);
+        // final CacheLoaderArgument arg = createAccountIdFromBundleIdCacheLoaderArgument(context);
+        // return accountIdCacheController.get(bundleId, arg);
+        final SubscriptionBaseBundle bundle;
+        try {
+            bundle = getBundleFromId(bundleId, context);
+        } catch (final SubscriptionBaseApiException e) {
+            log.warn("Unable to retrieve bundle for id='{}'", bundleId);
+            return null;
+        }
+        return bundle.getAccountId();
     }
 
     @Override
     public UUID getBundleIdFromSubscriptionId(final UUID subscriptionId, final InternalTenantContext context) throws SubscriptionBaseApiException {
-        final CacheLoaderArgument arg = createBundleIdFromSubscriptionIdCacheLoaderArgument(context);
-        return bundleIdCacheController.get(subscriptionId, arg);
+        // final CacheLoaderArgument arg = createBundleIdFromSubscriptionIdCacheLoaderArgument(context);
+        // return bundleIdCacheController.get(subscriptionId, arg);
+      return dao.getBundleIdFromSubscriptionId(subscriptionId, context);
     }
 
     @Override
@@ -477,34 +488,34 @@ public class DefaultSubscriptionInternalApi extends DefaultSubscriptionBaseCreat
         return accountId;
     }
 
-    private CacheLoaderArgument createAccountIdFromBundleIdCacheLoaderArgument(final InternalTenantContext internalTenantContext) {
-        final AccountIdFromBundleIdCacheLoader.LoaderCallback loaderCallback = new AccountIdFromBundleIdCacheLoader.LoaderCallback() {
-            public UUID loadAccountId(final UUID bundleId, final InternalTenantContext internalTenantContext) {
-                final SubscriptionBaseBundle bundle;
-                try {
-                    bundle = getBundleFromId(bundleId, internalTenantContext);
-                } catch (final SubscriptionBaseApiException e) {
-                    log.warn("Unable to retrieve bundle for id='{}'", bundleId);
-                    return null;
-                }
-                return bundle.getAccountId();
-            }
-        };
-
-        final Object[] args = {loaderCallback};
-        return new CacheLoaderArgument(null, args, internalTenantContext);
-    }
-
-    private CacheLoaderArgument createBundleIdFromSubscriptionIdCacheLoaderArgument(final InternalTenantContext internalTenantContext) {
-        final BundleIdFromSubscriptionIdCacheLoader.LoaderCallback loaderCallback = new BundleIdFromSubscriptionIdCacheLoader.LoaderCallback() {
-            public UUID loadBundleId(final UUID subscriptionId, final InternalTenantContext internalTenantContext) {
-                return dao.getBundleIdFromSubscriptionId(subscriptionId, internalTenantContext);
-            }
-        };
-
-        final Object[] args = {loaderCallback};
-        return new CacheLoaderArgument(null, args, internalTenantContext);
-    }
+    // private CacheLoaderArgument createAccountIdFromBundleIdCacheLoaderArgument(final InternalTenantContext internalTenantContext) {
+    //     final AccountIdFromBundleIdCacheLoader.LoaderCallback loaderCallback = new AccountIdFromBundleIdCacheLoader.LoaderCallback() {
+    //         public UUID loadAccountId(final UUID bundleId, final InternalTenantContext internalTenantContext) {
+    //             final SubscriptionBaseBundle bundle;
+    //             try {
+    //                 bundle = getBundleFromId(bundleId, internalTenantContext);
+    //             } catch (final SubscriptionBaseApiException e) {
+    //                 log.warn("Unable to retrieve bundle for id='{}'", bundleId);
+    //                 return null;
+    //             }
+    //             return bundle.getAccountId();
+    //         }
+    //     };
+
+    //     final Object[] args = {loaderCallback};
+    //     return new CacheLoaderArgument(null, args, internalTenantContext);
+    // }
+
+    // private CacheLoaderArgument createBundleIdFromSubscriptionIdCacheLoaderArgument(final InternalTenantContext internalTenantContext) {
+    //     final BundleIdFromSubscriptionIdCacheLoader.LoaderCallback loaderCallback = new BundleIdFromSubscriptionIdCacheLoader.LoaderCallback() {
+    //         public UUID loadBundleId(final UUID subscriptionId, final InternalTenantContext internalTenantContext) {
+    //             return dao.getBundleIdFromSubscriptionId(subscriptionId, internalTenantContext);
+    //         }
+    //     };
+
+    //     final Object[] args = {loaderCallback};
+    //     return new CacheLoaderArgument(null, args, internalTenantContext);
+    // }
 
     @VisibleForTesting
     DateTime getEffectiveDateForNewBCD(final int bcd, @Nullable final LocalDate effectiveFromDate, final InternalCallContext internalCallContext) {
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java b/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java
index fc09a99..b1cfd1b 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java
@@ -615,7 +615,9 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
                     // alignment purpose
                     Integer bcd = getBillCycleDayLocal();
                     if (bcd == null) {
-                        bcd = BillCycleDayCalculator.calculateBcdForAlignment(null, this, this, alignment, context, accountBillCycleDayLocal);
+                        bcd = BillCycleDayCalculator.calculateBcdForAlignment(
+                            // null, 
+                            this, this, alignment, context, accountBillCycleDayLocal);
                     }
 
                     final BillingPeriod billingPeriod = getLastActivePlan().getRecurringBillingPeriod();
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/DefaultSubscriptionDao.java b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/DefaultSubscriptionDao.java
index d38160d..19b05bf 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/DefaultSubscriptionDao.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/engine/dao/DefaultSubscriptionDao.java
@@ -83,7 +83,7 @@ import org.killbill.billing.subscription.events.user.ApiEventCancel;
 import org.killbill.billing.subscription.events.user.ApiEventChange;
 import org.killbill.billing.subscription.events.user.ApiEventType;
 import org.killbill.billing.subscription.exceptions.SubscriptionBaseError;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.Entity;
@@ -130,9 +130,12 @@ public class DefaultSubscriptionDao extends EntityDaoBase<SubscriptionBundleMode
     @Inject
     public DefaultSubscriptionDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final AddonUtils addonUtils,
                                   final NotificationQueueService notificationQueueService, final PersistentBus eventBus,
-                                  final CacheControllerDispatcher cacheControllerDispatcher, final NonEntityDao nonEntityDao,
+                                  // final CacheControllerDispatcher cacheControllerDispatcher,
+                                   final NonEntityDao nonEntityDao,
                                   final InternalCallContextFactory internalCallContextFactory) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory), BundleSqlDao.class);
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+          // cacheControllerDispatcher, 
+          nonEntityDao, internalCallContextFactory), BundleSqlDao.class);
         this.clock = clock;
         this.notificationQueueService = notificationQueueService;
         this.addonUtils = addonUtils;
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/api/DefaultTenantInternalApi.java b/tenant/src/main/java/org/killbill/billing/tenant/api/DefaultTenantInternalApi.java
index fcf5f05..340f29c 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/api/DefaultTenantInternalApi.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/api/DefaultTenantInternalApi.java
@@ -46,19 +46,19 @@ import org.killbill.billing.util.LocaleUtils;
 public class DefaultTenantInternalApi implements TenantInternalApi {
 
     private final TenantDao tenantDao;
-    private final TenantCacheInvalidation tenantCacheInvalidation;
+    // private final TenantCacheInvalidation tenantCacheInvalidation;
 
     @Inject
-    public DefaultTenantInternalApi(@Named(DefaultTenantModule.NO_CACHING_TENANT) final TenantDao tenantDao,
-                                    final TenantCacheInvalidation tenantCacheInvalidation) {
+    public DefaultTenantInternalApi(@Named(DefaultTenantModule.NO_CACHING_TENANT) final TenantDao tenantDao){
+                                    // final TenantCacheInvalidation tenantCacheInvalidation) {
         this.tenantDao = tenantDao;
-        this.tenantCacheInvalidation = tenantCacheInvalidation;
+        // this.tenantCacheInvalidation = tenantCacheInvalidation;
     }
 
-    @Override
-    public void initializeCacheInvalidationCallback(final TenantKey key, final CacheInvalidationCallback cacheInvalidationCallback) {
-        tenantCacheInvalidation.registerCallback(key, cacheInvalidationCallback);
-    }
+    // @Override
+    // public void initializeCacheInvalidationCallback(final TenantKey key, final CacheInvalidationCallback cacheInvalidationCallback) {
+        // tenantCacheInvalidation.registerCallback(key, cacheInvalidationCallback);
+    // }
 
     @Override
     public List<String> getTenantCatalogs(final InternalTenantContext tenantContext) {
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/api/DefaultTenantService.java b/tenant/src/main/java/org/killbill/billing/tenant/api/DefaultTenantService.java
index d01bdf9..66aef60 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/api/DefaultTenantService.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/api/DefaultTenantService.java
@@ -25,14 +25,14 @@ import org.killbill.billing.tenant.api.user.DefaultTenantUserApi;
 
 public class DefaultTenantService implements TenantService {
 
-    private final TenantCacheInvalidation tenantCacheInvalidation;
-    private final TenantCacheInvalidationCallback tenantCacheInvalidationCallback;
+    // private final TenantCacheInvalidation tenantCacheInvalidation;
+    // private final TenantCacheInvalidationCallback tenantCacheInvalidationCallback;
 
-    @Inject
-    public DefaultTenantService(final TenantCacheInvalidation tenantCacheInvalidation, final TenantCacheInvalidationCallback tenantCacheInvalidationCallback) {
-        this.tenantCacheInvalidation = tenantCacheInvalidation;
-        this.tenantCacheInvalidationCallback = tenantCacheInvalidationCallback;
-    }
+    // @Inject
+    // public DefaultTenantService(final TenantCacheInvalidation tenantCacheInvalidation, final TenantCacheInvalidationCallback tenantCacheInvalidationCallback) {
+        // this.tenantCacheInvalidation = tenantCacheInvalidation;
+        // this.tenantCacheInvalidationCallback = tenantCacheInvalidationCallback;
+    // }
 
     @Override
     public String getName() {
@@ -44,21 +44,21 @@ public class DefaultTenantService implements TenantService {
         return KILLBILL_SERVICES.TENANT_SERVICE.getRegistrationOrdering();
     }
 
-    @LifecycleHandlerType(LifecycleLevel.INIT_SERVICE)
-    public void initialize() {
-        tenantCacheInvalidation.initialize();
-        for (TenantKey cacheableKey : DefaultTenantUserApi.CACHED_TENANT_KEY) {
-            tenantCacheInvalidation.registerCallback(cacheableKey, tenantCacheInvalidationCallback);
-        }
-    }
+    // @LifecycleHandlerType(LifecycleLevel.INIT_SERVICE)
+    // public void initialize() {
+        // tenantCacheInvalidation.initialize();
+        // for (TenantKey cacheableKey : DefaultTenantUserApi.CACHED_TENANT_KEY) {
+        //     tenantCacheInvalidation.registerCallback(cacheableKey, tenantCacheInvalidationCallback);
+        // }
+    // }
 
-    @LifecycleHandlerType(LifecycleLevel.START_SERVICE)
-    public void start() {
-        tenantCacheInvalidation.start();
-    }
+    // @LifecycleHandlerType(LifecycleLevel.START_SERVICE)
+    // public void start() {
+    //     tenantCacheInvalidation.start();
+    // }
 
-    @LifecycleHandlerType(LifecycleLevel.STOP_SERVICE)
-    public void stop() {
-        tenantCacheInvalidation.stop();
-    }
+    // @LifecycleHandlerType(LifecycleLevel.STOP_SERVICE)
+    // public void stop() {
+    //     tenantCacheInvalidation.stop();
+    // }
 }
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidation.java b/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidation.java
index 9f2ee18..eee3c57 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidation.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidation.java
@@ -15,239 +15,239 @@
  * under the License.
  */
 
-package org.killbill.billing.tenant.api;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.events.BusInternalEvent;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
-import org.killbill.billing.tenant.api.TenantKV.TenantKey;
-import org.killbill.billing.tenant.api.user.DefaultTenantConfigChangeInternalEvent;
-import org.killbill.billing.tenant.api.user.DefaultTenantConfigDeletionInternalEvent;
-import org.killbill.billing.tenant.dao.TenantBroadcastDao;
-import org.killbill.billing.tenant.dao.TenantBroadcastModelDao;
-import org.killbill.billing.tenant.dao.TenantDao;
-import org.killbill.billing.tenant.dao.TenantKVModelDao;
-import org.killbill.billing.tenant.glue.DefaultTenantModule;
-import org.killbill.billing.util.config.definition.TenantConfig;
-import org.killbill.bus.api.PersistentBus;
-import org.killbill.bus.api.PersistentBus.EventBusException;
-import org.killbill.commons.concurrent.Executors;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Multimap;
-
-/**
- * This class manages the callbacks that have been registered when per tenant objects have been inserted into the
- * tenant_kvs store; the flow is the following (for e.g catalog):
- * 1. CatalogUserApi is invoked to retrieve per tenant catalog
- * 2. If cache is empty, TenantCacheLoader is invoked and uses TenantInternalApi is load the data; at that time, the invalidation callback
- * is registered
- * <p/>
- * When this class initializes, it reads the current entry in the tenant_broadcasts table and from then on, keeps polling for new entries; when new
- * entries are found, it invokes the callback to invalidate the current caching and force the TenantCacheLoader to be invoked again.
- */
-public class TenantCacheInvalidation {
-
-    private final static int TERMINATION_TIMEOUT_SEC = 5;
-
-    private static final Logger logger = LoggerFactory.getLogger(TenantCacheInvalidation.class);
-
-    private final Multimap<TenantKey, CacheInvalidationCallback> cache;
-    private final TenantBroadcastDao broadcastDao;
-    private final TenantConfig tenantConfig;
-    private final PersistentBus eventBus;
-    private final TenantDao tenantDao;
-    private AtomicLong latestRecordIdProcessed;
-    private volatile boolean isStopped;
-
-    private ScheduledExecutorService tenantExecutor;
-
-    @Inject
-    public TenantCacheInvalidation(@Named(DefaultTenantModule.NO_CACHING_TENANT) final TenantBroadcastDao broadcastDao,
-                                   @Named(DefaultTenantModule.NO_CACHING_TENANT) final TenantDao tenantDao,
-                                   final PersistentBus eventBus,
-                                   final TenantConfig tenantConfig) {
-        this.cache = HashMultimap.<TenantKey, CacheInvalidationCallback>create();
-        this.broadcastDao = broadcastDao;
-        this.tenantConfig = tenantConfig;
-        this.tenantDao = tenantDao;
-        this.eventBus = eventBus;
-        this.isStopped = false;
-    }
-
-    public void initialize() {
-        final TenantBroadcastModelDao entry = broadcastDao.getLatestEntry();
-        this.latestRecordIdProcessed = entry != null ? new AtomicLong(entry.getRecordId()) : new AtomicLong(0L);
-        this.tenantExecutor = Executors.newSingleThreadScheduledExecutor("TenantExecutor");
-        this.isStopped = false;
-    }
-
-    public void start() {
-        final TimeUnit pendingRateUnit = tenantConfig.getTenantBroadcastServiceRunningRate().getUnit();
-        final long pendingPeriod = tenantConfig.getTenantBroadcastServiceRunningRate().getPeriod();
-        tenantExecutor.scheduleAtFixedRate(new TenantCacheInvalidationRunnable(this, broadcastDao, tenantDao), pendingPeriod, pendingPeriod, pendingRateUnit);
-
-    }
-
-    public void stop() {
-        if (isStopped) {
-            logger.warn("TenantExecutor is already in a stopped state");
-            return;
-        }
-        try {
-            tenantExecutor.shutdown();
-            boolean success = tenantExecutor.awaitTermination(TERMINATION_TIMEOUT_SEC, TimeUnit.SECONDS);
-            if (!success) {
-                logger.warn("TenantExecutor failed to complete termination within " + TERMINATION_TIMEOUT_SEC + "sec");
-            }
-        } catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-            logger.warn("TenantExecutor stop sequence got interrupted");
-        } finally {
-            isStopped = true;
-        }
-    }
-
-    public void registerCallback(final TenantKey key, final CacheInvalidationCallback value) {
-        cache.put(key, value);
-
-    }
-
-    public Collection<CacheInvalidationCallback> getCacheInvalidations(final TenantKey key) {
-        return cache.get(key);
-    }
-
-    public AtomicLong getLatestRecordIdProcessed() {
-        return latestRecordIdProcessed;
-    }
-
-    public boolean isStopped() {
-        return isStopped;
-    }
-
-    public void setLatestRecordIdProcessed(final Long newProcessedRecordId) {
-        this.latestRecordIdProcessed.set(newProcessedRecordId);
-    }
-
-    public PersistentBus getEventBus() {
-        return eventBus;
-    }
-
-    public static class TenantCacheInvalidationRunnable implements Runnable {
-
-        private final TenantCacheInvalidation parent;
-        private final TenantBroadcastDao broadcastDao;
-        private final TenantDao tenantDao;
-
-        public TenantCacheInvalidationRunnable(final TenantCacheInvalidation parent,
-                                               final TenantBroadcastDao broadcastDao,
-                                               final TenantDao tenantDao) {
-            this.parent = parent;
-            this.broadcastDao = broadcastDao;
-            this.tenantDao = tenantDao;
-        }
-
-        @Override
-        public void run() {
-            if (parent.isStopped) {
-                return;
-            }
-
-            final List<TenantBroadcastModelDao> entries = broadcastDao.getLatestEntriesFrom(parent.getLatestRecordIdProcessed().get());
-            for (TenantBroadcastModelDao cur : entries) {
-                if (parent.isStopped()) {
-                    return;
-                }
-
-                try {
-                    final TenantKeyAndCookie tenantKeyAndCookie = extractTenantKeyAndCookie(cur.getType());
-                    if (tenantKeyAndCookie != null) {
-                        final Collection<CacheInvalidationCallback> callbacks = parent.getCacheInvalidations(tenantKeyAndCookie.getTenantKey());
-                        if (!callbacks.isEmpty()) {
-                            final InternalTenantContext tenantContext = new InternalTenantContext(cur.getTenantRecordId());
-                            // TODO In case of Redis, we don't want any invalidation, but we still want the events to notify the plugins (ideally, our bus would also support a Topic model)
-                            for (final CacheInvalidationCallback callback : callbacks) {
-                                callback.invalidateCache(tenantKeyAndCookie.getTenantKey(), tenantKeyAndCookie.getCookie(), tenantContext);
-                            }
-
-                            final Long tenantKvsTargetRecordId = cur.getTargetRecordId();
-                            final BusInternalEvent event;
-                            if (tenantKvsTargetRecordId != null) {
-                                final TenantKVModelDao tenantModelDao = tenantDao.getKeyByRecordId(tenantKvsTargetRecordId, tenantContext);
-                                if (tenantModelDao == null) {
-                                    // Probably inactive entry
-                                    continue;
-                                }
-                                event = new DefaultTenantConfigChangeInternalEvent(tenantModelDao.getId(), cur.getType(),
-                                                                                   null, tenantContext.getTenantRecordId(), cur.getUserToken());
-                            } else {
-                                event = new DefaultTenantConfigDeletionInternalEvent(cur.getType(),
-                                                                                     null, tenantContext.getTenantRecordId(), cur.getUserToken());
-                            }
-                            try {
-                                parent.getEventBus().post(event);
-                            } catch (final EventBusException e) {
-                                logger.warn("Failed to post event {}", event, e);
-                            }
-                        }
-                    } else {
-                        logger.warn("Failed to find CacheInvalidationCallback for " + cur.getType());
-                    }
-                } finally {
-                    parent.setLatestRecordIdProcessed(cur.getRecordId());
-                }
-            }
-        }
-
-        private TenantKeyAndCookie extractTenantKeyAndCookie(final String key) {
-            final TenantKey tenantKey = Iterables.tryFind(ImmutableList.copyOf(TenantKey.values()), new Predicate<TenantKey>() {
-                @Override
-                public boolean apply(final TenantKey input) {
-                    return key.startsWith(input.toString());
-                }
-            }).orNull();
-            if (tenantKey == null) {
-                return null;
-            }
-
-            final String cookie = !key.equals(tenantKey.toString()) ?
-                                  key.substring(tenantKey.toString().length()) :
-                                  null;
-            return new TenantKeyAndCookie(tenantKey, cookie);
-        }
-
-    }
-
-    private static final class TenantKeyAndCookie {
-
-        private final TenantKey tenantKey;
-        private final Object cookie;
-
-        public TenantKeyAndCookie(final TenantKey tenantKey, final Object cookie) {
-            this.tenantKey = tenantKey;
-            this.cookie = cookie;
-        }
-
-        public TenantKey getTenantKey() {
-            return tenantKey;
-        }
-
-        public Object getCookie() {
-            return cookie;
-        }
-    }
-}
+// package org.killbill.billing.tenant.api;
+
+// import java.util.Collection;
+// import java.util.List;
+// import java.util.concurrent.ScheduledExecutorService;
+// import java.util.concurrent.TimeUnit;
+// import java.util.concurrent.atomic.AtomicLong;
+
+// import javax.inject.Inject;
+// import javax.inject.Named;
+
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.events.BusInternalEvent;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantKV.TenantKey;
+// import org.killbill.billing.tenant.api.user.DefaultTenantConfigChangeInternalEvent;
+// import org.killbill.billing.tenant.api.user.DefaultTenantConfigDeletionInternalEvent;
+// import org.killbill.billing.tenant.dao.TenantBroadcastDao;
+// import org.killbill.billing.tenant.dao.TenantBroadcastModelDao;
+// import org.killbill.billing.tenant.dao.TenantDao;
+// import org.killbill.billing.tenant.dao.TenantKVModelDao;
+// import org.killbill.billing.tenant.glue.DefaultTenantModule;
+// import org.killbill.billing.util.config.definition.TenantConfig;
+// import org.killbill.bus.api.PersistentBus;
+// import org.killbill.bus.api.PersistentBus.EventBusException;
+// import org.killbill.commons.concurrent.Executors;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
+
+// import com.google.common.base.Predicate;
+// import com.google.common.collect.HashMultimap;
+// import com.google.common.collect.ImmutableList;
+// import com.google.common.collect.Iterables;
+// import com.google.common.collect.Multimap;
+
+// /**
+//  * This class manages the callbacks that have been registered when per tenant objects have been inserted into the
+//  * tenant_kvs store; the flow is the following (for e.g catalog):
+//  * 1. CatalogUserApi is invoked to retrieve per tenant catalog
+//  * 2. If cache is empty, TenantCacheLoader is invoked and uses TenantInternalApi is load the data; at that time, the invalidation callback
+//  * is registered
+//  * <p/>
+//  * When this class initializes, it reads the current entry in the tenant_broadcasts table and from then on, keeps polling for new entries; when new
+//  * entries are found, it invokes the callback to invalidate the current caching and force the TenantCacheLoader to be invoked again.
+//  */
+// public class TenantCacheInvalidation {
+
+//     private final static int TERMINATION_TIMEOUT_SEC = 5;
+
+//     private static final Logger logger = LoggerFactory.getLogger(TenantCacheInvalidation.class);
+
+//     private final Multimap<TenantKey, CacheInvalidationCallback> cache;
+//     private final TenantBroadcastDao broadcastDao;
+//     private final TenantConfig tenantConfig;
+//     private final PersistentBus eventBus;
+//     private final TenantDao tenantDao;
+//     private AtomicLong latestRecordIdProcessed;
+//     private volatile boolean isStopped;
+
+//     private ScheduledExecutorService tenantExecutor;
+
+//     @Inject
+//     public TenantCacheInvalidation(@Named(DefaultTenantModule.NO_CACHING_TENANT) final TenantBroadcastDao broadcastDao,
+//                                    @Named(DefaultTenantModule.NO_CACHING_TENANT) final TenantDao tenantDao,
+//                                    final PersistentBus eventBus,
+//                                    final TenantConfig tenantConfig) {
+//         this.cache = HashMultimap.<TenantKey, CacheInvalidationCallback>create();
+//         this.broadcastDao = broadcastDao;
+//         this.tenantConfig = tenantConfig;
+//         this.tenantDao = tenantDao;
+//         this.eventBus = eventBus;
+//         this.isStopped = false;
+//     }
+
+//     public void initialize() {
+//         final TenantBroadcastModelDao entry = broadcastDao.getLatestEntry();
+//         this.latestRecordIdProcessed = entry != null ? new AtomicLong(entry.getRecordId()) : new AtomicLong(0L);
+//         this.tenantExecutor = Executors.newSingleThreadScheduledExecutor("TenantExecutor");
+//         this.isStopped = false;
+//     }
+
+//     public void start() {
+//         final TimeUnit pendingRateUnit = tenantConfig.getTenantBroadcastServiceRunningRate().getUnit();
+//         final long pendingPeriod = tenantConfig.getTenantBroadcastServiceRunningRate().getPeriod();
+//         tenantExecutor.scheduleAtFixedRate(new TenantCacheInvalidationRunnable(this, broadcastDao, tenantDao), pendingPeriod, pendingPeriod, pendingRateUnit);
+
+//     }
+
+//     public void stop() {
+//         if (isStopped) {
+//             logger.warn("TenantExecutor is already in a stopped state");
+//             return;
+//         }
+//         try {
+//             tenantExecutor.shutdown();
+//             boolean success = tenantExecutor.awaitTermination(TERMINATION_TIMEOUT_SEC, TimeUnit.SECONDS);
+//             if (!success) {
+//                 logger.warn("TenantExecutor failed to complete termination within " + TERMINATION_TIMEOUT_SEC + "sec");
+//             }
+//         } catch (InterruptedException e) {
+//             Thread.currentThread().interrupt();
+//             logger.warn("TenantExecutor stop sequence got interrupted");
+//         } finally {
+//             isStopped = true;
+//         }
+//     }
+
+//     public void registerCallback(final TenantKey key, final CacheInvalidationCallback value) {
+//         cache.put(key, value);
+
+//     }
+
+//     public Collection<CacheInvalidationCallback> getCacheInvalidations(final TenantKey key) {
+//         return cache.get(key);
+//     }
+
+//     public AtomicLong getLatestRecordIdProcessed() {
+//         return latestRecordIdProcessed;
+//     }
+
+//     public boolean isStopped() {
+//         return isStopped;
+//     }
+
+//     public void setLatestRecordIdProcessed(final Long newProcessedRecordId) {
+//         this.latestRecordIdProcessed.set(newProcessedRecordId);
+//     }
+
+//     public PersistentBus getEventBus() {
+//         return eventBus;
+//     }
+
+//     public static class TenantCacheInvalidationRunnable implements Runnable {
+
+//         private final TenantCacheInvalidation parent;
+//         private final TenantBroadcastDao broadcastDao;
+//         private final TenantDao tenantDao;
+
+//         public TenantCacheInvalidationRunnable(final TenantCacheInvalidation parent,
+//                                                final TenantBroadcastDao broadcastDao,
+//                                                final TenantDao tenantDao) {
+//             this.parent = parent;
+//             this.broadcastDao = broadcastDao;
+//             this.tenantDao = tenantDao;
+//         }
+
+//         @Override
+//         public void run() {
+//             if (parent.isStopped) {
+//                 return;
+//             }
+
+//             final List<TenantBroadcastModelDao> entries = broadcastDao.getLatestEntriesFrom(parent.getLatestRecordIdProcessed().get());
+//             for (TenantBroadcastModelDao cur : entries) {
+//                 if (parent.isStopped()) {
+//                     return;
+//                 }
+
+//                 try {
+//                     final TenantKeyAndCookie tenantKeyAndCookie = extractTenantKeyAndCookie(cur.getType());
+//                     if (tenantKeyAndCookie != null) {
+//                         final Collection<CacheInvalidationCallback> callbacks = parent.getCacheInvalidations(tenantKeyAndCookie.getTenantKey());
+//                         if (!callbacks.isEmpty()) {
+//                             final InternalTenantContext tenantContext = new InternalTenantContext(cur.getTenantRecordId());
+//                             // TODO In case of Redis, we don't want any invalidation, but we still want the events to notify the plugins (ideally, our bus would also support a Topic model)
+//                             for (final CacheInvalidationCallback callback : callbacks) {
+//                                 callback.invalidateCache(tenantKeyAndCookie.getTenantKey(), tenantKeyAndCookie.getCookie(), tenantContext);
+//                             }
+
+//                             final Long tenantKvsTargetRecordId = cur.getTargetRecordId();
+//                             final BusInternalEvent event;
+//                             if (tenantKvsTargetRecordId != null) {
+//                                 final TenantKVModelDao tenantModelDao = tenantDao.getKeyByRecordId(tenantKvsTargetRecordId, tenantContext);
+//                                 if (tenantModelDao == null) {
+//                                     // Probably inactive entry
+//                                     continue;
+//                                 }
+//                                 event = new DefaultTenantConfigChangeInternalEvent(tenantModelDao.getId(), cur.getType(),
+//                                                                                    null, tenantContext.getTenantRecordId(), cur.getUserToken());
+//                             } else {
+//                                 event = new DefaultTenantConfigDeletionInternalEvent(cur.getType(),
+//                                                                                      null, tenantContext.getTenantRecordId(), cur.getUserToken());
+//                             }
+//                             try {
+//                                 parent.getEventBus().post(event);
+//                             } catch (final EventBusException e) {
+//                                 logger.warn("Failed to post event {}", event, e);
+//                             }
+//                         }
+//                     } else {
+//                         logger.warn("Failed to find CacheInvalidationCallback for " + cur.getType());
+//                     }
+//                 } finally {
+//                     parent.setLatestRecordIdProcessed(cur.getRecordId());
+//                 }
+//             }
+//         }
+
+//         private TenantKeyAndCookie extractTenantKeyAndCookie(final String key) {
+//             final TenantKey tenantKey = Iterables.tryFind(ImmutableList.copyOf(TenantKey.values()), new Predicate<TenantKey>() {
+//                 @Override
+//                 public boolean apply(final TenantKey input) {
+//                     return key.startsWith(input.toString());
+//                 }
+//             }).orNull();
+//             if (tenantKey == null) {
+//                 return null;
+//             }
+
+//             final String cookie = !key.equals(tenantKey.toString()) ?
+//                                   key.substring(tenantKey.toString().length()) :
+//                                   null;
+//             return new TenantKeyAndCookie(tenantKey, cookie);
+//         }
+
+//     }
+
+//     private static final class TenantKeyAndCookie {
+
+//         private final TenantKey tenantKey;
+//         private final Object cookie;
+
+//         public TenantKeyAndCookie(final TenantKey tenantKey, final Object cookie) {
+//             this.tenantKey = tenantKey;
+//             this.cookie = cookie;
+//         }
+
+//         public TenantKey getTenantKey() {
+//             return tenantKey;
+//         }
+
+//         public Object getCookie() {
+//             return cookie;
+//         }
+//     }
+// }
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidationCallback.java b/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidationCallback.java
index ffc662c..9e48145 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidationCallback.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidationCallback.java
@@ -15,43 +15,43 @@
  * under the License.
  */
 
-package org.killbill.billing.tenant.api;
+// package org.killbill.billing.tenant.api;
 
-import javax.inject.Inject;
+// import javax.inject.Inject;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
-import org.killbill.billing.tenant.api.TenantKV.TenantKey;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantKV.TenantKey;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-public class TenantCacheInvalidationCallback implements CacheInvalidationCallback {
+// public class TenantCacheInvalidationCallback implements CacheInvalidationCallback {
 
-    private final Logger log = LoggerFactory.getLogger(TenantCacheInvalidationCallback.class);
+//     private final Logger log = LoggerFactory.getLogger(TenantCacheInvalidationCallback.class);
 
-    private final CacheController<String, String> tenantKVCache;
+//     private final CacheController<String, String> tenantKVCache;
 
-    @Inject
-    public TenantCacheInvalidationCallback(final CacheControllerDispatcher cacheControllerDispatcher) {
-        this.tenantKVCache = cacheControllerDispatcher.getCacheController(CacheType.TENANT_KV);
+//     @Inject
+//     public TenantCacheInvalidationCallback(final CacheControllerDispatcher cacheControllerDispatcher) {
+//         this.tenantKVCache = cacheControllerDispatcher.getCacheController(CacheType.TENANT_KV);
 
 
-    }
-    @Override
-    public void invalidateCache(TenantKey tenantKey, final Object cookie, final InternalTenantContext tenantContext) {
+//     }
+//     @Override
+//     public void invalidateCache(TenantKey tenantKey, final Object cookie, final InternalTenantContext tenantContext) {
 
-        final StringBuilder keyBuilder = new StringBuilder(tenantKey.toString());
-        if (cookie instanceof String) {
-            keyBuilder.append((String) cookie);
-        }
-        keyBuilder.append(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
-        keyBuilder.append(tenantContext.getTenantRecordId());
-        final String key = keyBuilder.toString();
+//         final StringBuilder keyBuilder = new StringBuilder(tenantKey.toString());
+//         if (cookie instanceof String) {
+//             keyBuilder.append((String) cookie);
+//         }
+//         keyBuilder.append(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
+//         keyBuilder.append(tenantContext.getTenantRecordId());
+//         final String key = keyBuilder.toString();
 
-        log.info("Invalidate cache for tenant {} and key {} ", tenantContext.getTenantRecordId(), key);
-        tenantKVCache.remove(key);
-    }
-}
+//         log.info("Invalidate cache for tenant {} and key {} ", tenantContext.getTenantRecordId(), key);
+//         tenantKVCache.remove(key);
+//     }
+// }
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantUserApi.java b/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantUserApi.java
index e477023..d15a8ab 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantUserApi.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/api/user/DefaultTenantUserApi.java
@@ -37,10 +37,10 @@ import org.killbill.billing.tenant.api.TenantUserApi;
 import org.killbill.billing.tenant.dao.TenantDao;
 import org.killbill.billing.tenant.dao.TenantKVModelDao;
 import org.killbill.billing.tenant.dao.TenantModelDao;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.callcontext.TenantContext;
@@ -50,6 +50,8 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.inject.Inject;
 
+import org.killbill.billing.tenant.api.TenantInternalApi;
+
 public class DefaultTenantUserApi implements TenantUserApi {
 
     //
@@ -60,27 +62,30 @@ public class DefaultTenantUserApi implements TenantUserApi {
     //
     // CACHED_TENANT_KEY is not exposed in the API and is hardcoded here since this is really a implementation choice.
     //
-    public static final Iterable<TenantKey> CACHED_TENANT_KEY = ImmutableList.<TenantKey>builder()
-                                                                             .add(TenantKey.CATALOG_TRANSLATION_)
-                                                                             .add(TenantKey.INVOICE_MP_TEMPLATE)
-                                                                             .add(TenantKey.INVOICE_TEMPLATE)
-                                                                             .add(TenantKey.INVOICE_TRANSLATION_)
-                                                                             .add(TenantKey.PLUGIN_CONFIG_)
-                                                                             .add(TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_)
-                                                                             .add(TenantKey.PUSH_NOTIFICATION_CB).build();
+    // public static final Iterable<TenantKey> CACHED_TENANT_KEY = ImmutableList.<TenantKey>builder()
+    //                                                                          .add(TenantKey.CATALOG_TRANSLATION_)
+    //                                                                          .add(TenantKey.INVOICE_MP_TEMPLATE)
+    //                                                                          .add(TenantKey.INVOICE_TEMPLATE)
+    //                                                                          .add(TenantKey.INVOICE_TRANSLATION_)
+    //                                                                          .add(TenantKey.PLUGIN_CONFIG_)
+    //                                                                          .add(TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_)
+    //                                                                          .add(TenantKey.PUSH_NOTIFICATION_CB).build();
 
     private final TenantDao tenantDao;
     private final InternalCallContextFactory internalCallContextFactory;
-    private final CacheController<String, String> tenantKVCache;
-    private final CacheController<String, Tenant> tenantCache;
-
+    // private final CacheController<String, String> tenantKVCache;
+    // private final CacheController<String, Tenant> tenantCache;
+    private final TenantInternalApi tenantApi;
 
     @Inject
-    public DefaultTenantUserApi(final TenantDao tenantDao, final InternalCallContextFactory internalCallContextFactory, final CacheControllerDispatcher cacheControllerDispatcher) {
+    public DefaultTenantUserApi(final TenantDao tenantDao, final InternalCallContextFactory internalCallContextFactory
+        // , final CacheControllerDispatcher cacheControllerDispatcher
+        , TenantInternalApi tenantApi) {
         this.tenantDao = tenantDao;
         this.internalCallContextFactory = internalCallContextFactory;
-        this.tenantKVCache = cacheControllerDispatcher.getCacheController(CacheType.TENANT_KV);
-        this.tenantCache = cacheControllerDispatcher.getCacheController(CacheType.TENANT);
+        // this.tenantKVCache = cacheControllerDispatcher.getCacheController(CacheType.TENANT_KV);
+        // this.tenantCache = cacheControllerDispatcher.getCacheController(CacheType.TENANT);
+        this.tenantApi = tenantApi;
     }
 
     @Override
@@ -114,7 +119,14 @@ public class DefaultTenantUserApi implements TenantUserApi {
 
     @Override
     public Tenant getTenantByApiKey(final String key) throws TenantApiException {
-        final Tenant tenant = tenantCache.get(key, new CacheLoaderArgument(ObjectType.TENANT));
+        Tenant tenant = null; //tenantCache.get(key, new CacheLoaderArgument(ObjectType.TENANT));
+
+        try {
+            tenant = tenantApi.getTenantByApiKey(key);
+        } catch (final TenantApiException e) {
+            throw new IllegalStateException("TenantCacheLoader cannot find value for key " + key);
+        }
+
         if (tenant == null) {
             throw new TenantApiException(ErrorCode.TENANT_DOES_NOT_EXIST_FOR_API_KEY, key);
         }
@@ -124,7 +136,7 @@ public class DefaultTenantUserApi implements TenantUserApi {
     @Override
     public Tenant getTenantById(final UUID id) throws TenantApiException {
         // TODO - API cleanup?
-        final TenantModelDao tenant = tenantDao.getById(id, new InternalTenantContext(null));
+        TenantModelDao tenant = tenantDao.getById(id, new InternalTenantContext(null));
         if (tenant == null) {
             throw new TenantApiException(ErrorCode.TENANT_DOES_NOT_EXIST_FOR_ID, id);
         }
@@ -134,38 +146,38 @@ public class DefaultTenantUserApi implements TenantUserApi {
     @Override
     public List<String> getTenantValuesForKey(final String key, final TenantContext context) throws TenantApiException {
         final InternalTenantContext internalContext = internalCallContextFactory.createInternalTenantContextWithoutAccountRecordId(context);
-        if (!isCachedInTenantKVCache(key)) {
+        // if (!isCachedInTenantKVCache(key)) {
             return tenantDao.getTenantValueForKey(key, internalContext);
-        } else {
-            return getCachedTenantValuesForKey(key, internalContext);
-        }
+        // } else {
+        //     return getCachedTenantValuesForKey(key, internalContext);
+        // }
     }
 
     @Override
     public void addTenantKeyValue(final String key, final String value, final CallContext context) throws TenantApiException {
         // Invalidate tenantKVCache after we store (to avoid race conditions). Multi-node invalidation will follow the TenantBroadcast pattern
         final InternalCallContext internalContext = internalCallContextFactory.createInternalCallContextWithoutAccountRecordId(context);
-        final String tenantKey = getCacheKeyName(key, internalContext);
+        // final String tenantKey = getCacheKeyName(key, internalContext);
         tenantDao.addTenantKeyValue(key, value, isSingleValueKey(key), internalContext);
-        tenantKVCache.remove(tenantKey);
+        // tenantKVCache.remove(tenantKey);
     }
 
     @Override
     public void updateTenantKeyValue(final String key, final String value, final CallContext context) throws TenantApiException {
         // Invalidate tenantKVCache after we store (to avoid race conditions). Multi-node invalidation will follow the TenantBroadcast pattern
         final InternalCallContext internalContext = internalCallContextFactory.createInternalCallContextWithoutAccountRecordId(context);
-        final String tenantKey = getCacheKeyName(key, internalContext);
+        // final String tenantKey = getCacheKeyName(key, internalContext);
         tenantDao.updateTenantLastKeyValue(key, value, internalContext);
-        tenantKVCache.remove(tenantKey);
+        // tenantKVCache.remove(tenantKey);
     }
 
     @Override
     public void deleteTenantKey(final String key, final CallContext context) throws TenantApiException {
         // Invalidate tenantKVCache after we delete (to avoid race conditions). Multi-node invalidation will follow the TenantBroadcast pattern
         final InternalCallContext internalContext = internalCallContextFactory.createInternalCallContextWithoutAccountRecordId(context);
-        final String tenantKey = getCacheKeyName(key, internalContext);
+        // final String tenantKey = getCacheKeyName(key, internalContext);
         tenantDao.deleteTenantKey(key, internalContext);
-        tenantKVCache.remove(tenantKey);
+        // tenantKVCache.remove(tenantKey);
     }
 
     @Override
@@ -183,23 +195,23 @@ public class DefaultTenantUserApi implements TenantUserApi {
     }
 
 
-    private List<String> getCachedTenantValuesForKey(final String key, final InternalTenantContext internalContext) {
-        final String tenantKey = getCacheKeyName(key, internalContext);
-        final Object cachedTenantValues = tenantKVCache.get(tenantKey, new CacheLoaderArgument(ObjectType.TENANT_KVS));
-        if (cachedTenantValues == null) {
-            return ImmutableList.<String>of();
-        } else {
-            // Current, we only cache single-value keys
-            return ImmutableList.<String>of((String) cachedTenantValues);
-        }
-    }
-
-    private String getCacheKeyName(final String key, final InternalTenantContext internalContext) {
-        final StringBuilder tenantKey = new StringBuilder(key);
-        tenantKey.append(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
-        tenantKey.append(internalContext.getTenantRecordId());
-        return tenantKey.toString();
-    }
+    // private List<String> getCachedTenantValuesForKey(final String key, final InternalTenantContext internalContext) {
+    //     final String tenantKey = getCacheKeyName(key, internalContext);
+    //     final Object cachedTenantValues = tenantKVCache.get(tenantKey, new CacheLoaderArgument(ObjectType.TENANT_KVS));
+    //     if (cachedTenantValues == null) {
+    //         return ImmutableList.<String>of();
+    //     } else {
+    //         // Current, we only cache single-value keys
+    //         return ImmutableList.<String>of((String) cachedTenantValues);
+    //     }
+    // }
+
+    // private String getCacheKeyName(final String key, final InternalTenantContext internalContext) {
+    //     final StringBuilder tenantKey = new StringBuilder(key);
+    //     tenantKey.append(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
+    //     tenantKey.append(internalContext.getTenantRecordId());
+    //     return tenantKey.toString();
+    // }
 
     private boolean isSingleValueKey(final String key) {
         return Iterables.tryFind(ImmutableList.copyOf(TenantKey.values()), new Predicate<TenantKey>() {
@@ -210,12 +222,12 @@ public class DefaultTenantUserApi implements TenantUserApi {
         }).orNull() != null;
     }
 
-    private boolean isCachedInTenantKVCache(final String key) {
-        return Iterables.tryFind(CACHED_TENANT_KEY, new Predicate<TenantKey>() {
-            @Override
-            public boolean apply(final TenantKey input) {
-                return key.startsWith(input.toString());
-            }
-        }).orNull() != null;
-    }
+    // private boolean isCachedInTenantKVCache(final String key) {
+    //     return Iterables.tryFind(CACHED_TENANT_KEY, new Predicate<TenantKey>() {
+    //         @Override
+    //         public boolean apply(final TenantKey input) {
+    //             return key.startsWith(input.toString());
+    //         }
+    //     }).orNull() != null;
+    // }
 }
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/dao/DefaultTenantBroadcastDao.java b/tenant/src/main/java/org/killbill/billing/tenant/dao/DefaultTenantBroadcastDao.java
index 30ef282..206b370 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/dao/DefaultTenantBroadcastDao.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/dao/DefaultTenantBroadcastDao.java
@@ -24,7 +24,7 @@ import javax.inject.Named;
 
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.tenant.api.TenantApiException;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.Entity;
@@ -38,9 +38,11 @@ import static org.killbill.billing.util.glue.IDBISetup.MAIN_RO_IDBI_NAMED;
 public class DefaultTenantBroadcastDao extends EntityDaoBase<TenantBroadcastModelDao, Entity, TenantApiException> implements TenantBroadcastDao {
 
     @Inject
-    public DefaultTenantBroadcastDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher,
+    public DefaultTenantBroadcastDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, // final CacheControllerDispatcher cacheControllerDispatcher,
                                      final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory), TenantBroadcastSqlDao.class);
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+            // cacheControllerDispatcher,
+             nonEntityDao, internalCallContextFactory), TenantBroadcastSqlDao.class);
     }
 
     @Override
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/dao/DefaultTenantDao.java b/tenant/src/main/java/org/killbill/billing/tenant/dao/DefaultTenantDao.java
index 8be495c..25c8449 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/dao/DefaultTenantDao.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/dao/DefaultTenantDao.java
@@ -38,7 +38,7 @@ import org.killbill.billing.tenant.api.Tenant;
 import org.killbill.billing.tenant.api.TenantApiException;
 import org.killbill.billing.tenant.api.TenantKV.TenantKey;
 import org.killbill.billing.util.UUIDs;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.config.definition.SecurityConfig;
 import org.killbill.billing.util.dao.NonEntityDao;
@@ -67,9 +67,11 @@ public class DefaultTenantDao extends EntityDaoBase<TenantModelDao, Tenant, Tena
     private final SecurityConfig securityConfig;
 
     @Inject
-    public DefaultTenantDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher,
+    public DefaultTenantDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, // final CacheControllerDispatcher cacheControllerDispatcher,
                             final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory, final SecurityConfig securityConfig) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory), TenantSqlDao.class);
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock,
+         // cacheControllerDispatcher,
+          nonEntityDao, internalCallContextFactory), TenantSqlDao.class);
         this.securityConfig = securityConfig;
     }
 
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/dao/NoCachingTenantBroadcastDao.java b/tenant/src/main/java/org/killbill/billing/tenant/dao/NoCachingTenantBroadcastDao.java
index 663cb60..6c51f23 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/dao/NoCachingTenantBroadcastDao.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/dao/NoCachingTenantBroadcastDao.java
@@ -43,7 +43,9 @@ public class NoCachingTenantBroadcastDao extends EntityDaoBase<TenantBroadcastMo
 
     @Inject
     public NoCachingTenantBroadcastDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, @Named(DefaultTenantModule.NO_CACHING_TENANT) final InternalCallContextFactory internalCallContextFactory) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, null, null, internalCallContextFactory), TenantBroadcastSqlDao.class);
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+            // null,
+             null, internalCallContextFactory), TenantBroadcastSqlDao.class);
     }
 
     @Override
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/dao/NoCachingTenantDao.java b/tenant/src/main/java/org/killbill/billing/tenant/dao/NoCachingTenantDao.java
index 85961c8..f0527ae 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/dao/NoCachingTenantDao.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/dao/NoCachingTenantDao.java
@@ -57,7 +57,9 @@ public class NoCachingTenantDao extends EntityDaoBase<TenantModelDao, Tenant, Te
 
     @Inject
     public NoCachingTenantDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, @Named(DefaultTenantModule.NO_CACHING_TENANT) final InternalCallContextFactory internalCallContextFactory) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, null, null, internalCallContextFactory), TenantSqlDao.class);
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+            // null,
+             null, internalCallContextFactory), TenantSqlDao.class);
     }
 
     @Override
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/dao/TenantSqlDao.java b/tenant/src/main/java/org/killbill/billing/tenant/dao/TenantSqlDao.java
index ab4ded9..4843ede 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/dao/TenantSqlDao.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/dao/TenantSqlDao.java
@@ -16,9 +16,9 @@
 
 package org.killbill.billing.tenant.dao;
 
-import org.killbill.billing.util.cache.Cachable;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CachableKey;
+// import org.killbill.billing.util.cache.Cachable;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CachableKey;
 import org.skife.jdbi.v2.sqlobject.Bind;
 import org.skife.jdbi.v2.sqlobject.SqlQuery;
 
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/glue/DefaultTenantModule.java b/tenant/src/main/java/org/killbill/billing/tenant/glue/DefaultTenantModule.java
index b95e741..649efa3 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/glue/DefaultTenantModule.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/glue/DefaultTenantModule.java
@@ -22,8 +22,8 @@ import org.killbill.billing.glue.TenantModule;
 import org.killbill.billing.platform.api.KillbillConfigSource;
 import org.killbill.billing.tenant.api.DefaultTenantInternalApi;
 import org.killbill.billing.tenant.api.DefaultTenantService;
-import org.killbill.billing.tenant.api.TenantCacheInvalidation;
-import org.killbill.billing.tenant.api.TenantCacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantCacheInvalidation;
+// import org.killbill.billing.tenant.api.TenantCacheInvalidationCallback;
 import org.killbill.billing.tenant.api.TenantInternalApi;
 import org.killbill.billing.tenant.api.TenantService;
 import org.killbill.billing.tenant.api.TenantUserApi;
@@ -71,11 +71,11 @@ public class DefaultTenantModule extends KillBillModule implements TenantModule 
 
     public void installTenantService() {
         bind(TenantService.class).to(DefaultTenantService.class).asEagerSingleton();
-        bind(TenantCacheInvalidationCallback.class).asEagerSingleton();;
+        // bind(TenantCacheInvalidationCallback.class).asEagerSingleton();;
     }
 
     public void installTenantCacheInvalidation() {
-        bind(TenantCacheInvalidation.class).asEagerSingleton();
+        // bind(TenantCacheInvalidation.class).asEagerSingleton();
     }
 
     @Override
@@ -84,6 +84,6 @@ public class DefaultTenantModule extends KillBillModule implements TenantModule 
         installTenantDao();
         installTenantService();
         installTenantUserApi();
-        installTenantCacheInvalidation();
+        // installTenantCacheInvalidation();
     }
 }
diff --git a/util/src/main/java/org/killbill/billing/util/audit/dao/DefaultAuditDao.java b/util/src/main/java/org/killbill/billing/util/audit/dao/DefaultAuditDao.java
index 34d3d50..782e4e0 100644
--- a/util/src/main/java/org/killbill/billing/util/audit/dao/DefaultAuditDao.java
+++ b/util/src/main/java/org/killbill/billing/util/audit/dao/DefaultAuditDao.java
@@ -37,7 +37,7 @@ import org.killbill.billing.util.audit.DefaultAccountAuditLogs;
 import org.killbill.billing.util.audit.DefaultAccountAuditLogsForObjectType;
 import org.killbill.billing.util.audit.DefaultAuditLog;
 import org.killbill.billing.util.audit.DefaultAuditLogWithHistory;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.EntityHistoryModelDao;
 import org.killbill.billing.util.dao.HistorySqlDao;
@@ -67,9 +67,13 @@ public class DefaultAuditDao implements AuditDao {
     private final EntitySqlDaoTransactionalJdbiWrapper transactionalSqlDao;
 
     @Inject
-    public DefaultAuditDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher, final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
+    public DefaultAuditDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, 
+      // final CacheControllerDispatcher cacheControllerDispatcher,
+       final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
         this.dbRouter = new DBRouter<NonEntitySqlDao>(dbi, roDbi, NonEntitySqlDao.class);
-        this.transactionalSqlDao = new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, cacheControllerDispatcher, nonEntityDao, internalCallContextFactory);
+        this.transactionalSqlDao = new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+          // cacheControllerDispatcher,
+           nonEntityDao, internalCallContextFactory);
     }
 
     @Override
@@ -106,8 +110,8 @@ public class DefaultAuditDao implements AuditDao {
     }
 
     private Iterator<AuditLog> buildAuditLogsFromModelDao(final Iterator<AuditLogModelDao> auditLogsForAccountRecordId, final InternalTenantContext tenantContext) {
-        final Map<TableName, Map<Long, UUID>> recordIdIdsCache = new HashMap<TableName, Map<Long, UUID>>();
-        final Map<TableName, Map<Long, UUID>> historyRecordIdIdsCache = new HashMap<TableName, Map<Long, UUID>>();
+        // final Map<TableName, Map<Long, UUID>> recordIdIdsCache = new HashMap<TableName, Map<Long, UUID>>();
+        // final Map<TableName, Map<Long, UUID>> historyRecordIdIdsCache = new HashMap<TableName, Map<Long, UUID>>();
         return Iterators.<AuditLogModelDao, AuditLog>transform(auditLogsForAccountRecordId,
                                                                new Function<AuditLogModelDao, AuditLog>() {
                                                                    @Override
@@ -123,37 +127,43 @@ public class DefaultAuditDao implements AuditDao {
                                                                            // input point to a history entry
                                                                            objectType = originalTableNameForHistoryTableName.getObjectType();
 
-                                                                           if (historyRecordIdIdsCache.get(originalTableNameForHistoryTableName) == null) {
+Iterable<RecordIdIdMappings> mappings = null;
+
+                                                                           // if (historyRecordIdIdsCache.get(originalTableNameForHistoryTableName) == null) {
                                                                                if (TableName.ACCOUNT.equals(originalTableNameForHistoryTableName)) {
-                                                                                   final Iterable<RecordIdIdMappings> mappings = nonEntitySqlDao.getHistoryRecordIdIdMappingsForAccountsTable(originalTableNameForHistoryTableName.getTableName(),
+                                                                                   mappings = nonEntitySqlDao.getHistoryRecordIdIdMappingsForAccountsTable(originalTableNameForHistoryTableName.getTableName(),
                                                                                                                                                                                               input.getTableName().getTableName(),
                                                                                                                                                                                               tenantContext);
-                                                                                   historyRecordIdIdsCache.put(originalTableNameForHistoryTableName, RecordIdIdMappings.toMap(mappings));
+                                                                                   // historyRecordIdIdsCache.put(originalTableNameForHistoryTableName, RecordIdIdMappings.toMap(mappings));
                                                                                } else if (TableName.TAG_DEFINITIONS.equals(originalTableNameForHistoryTableName)) {
-                                                                                   final Iterable<RecordIdIdMappings> mappings = nonEntitySqlDao.getHistoryRecordIdIdMappingsForTablesWithoutAccountRecordId(originalTableNameForHistoryTableName.getTableName(),
+                                                                                   mappings = nonEntitySqlDao.getHistoryRecordIdIdMappingsForTablesWithoutAccountRecordId(originalTableNameForHistoryTableName.getTableName(),
                                                                                                                                                                                                              input.getTableName().getTableName(),
                                                                                                                                                                                                              tenantContext);
-                                                                                   historyRecordIdIdsCache.put(originalTableNameForHistoryTableName, RecordIdIdMappings.toMap(mappings));
+                                                                                   // historyRecordIdIdsCache.put(originalTableNameForHistoryTableName, RecordIdIdMappings.toMap(mappings));
                                                                                } else {
-                                                                                   final Iterable<RecordIdIdMappings> mappings = nonEntitySqlDao.getHistoryRecordIdIdMappings(originalTableNameForHistoryTableName.getTableName(),
+                                                                                   mappings = nonEntitySqlDao.getHistoryRecordIdIdMappings(originalTableNameForHistoryTableName.getTableName(),
                                                                                                                                                                               input.getTableName().getTableName(),
                                                                                                                                                                               tenantContext);
-                                                                                   historyRecordIdIdsCache.put(originalTableNameForHistoryTableName, RecordIdIdMappings.toMap(mappings));
+                                                                                   // historyRecordIdIdsCache.put(originalTableNameForHistoryTableName, RecordIdIdMappings.toMap(mappings));
 
                                                                                }
-                                                                           }
+                                                                           // }
+                                                                               Map<Long, UUID> tomapping = RecordIdIdMappings.toMap(mappings);
 
-                                                                           auditedEntityId = historyRecordIdIdsCache.get(originalTableNameForHistoryTableName).get(input.getTargetRecordId());
+                                                                           // auditedEntityId = historyRecordIdIdsCache.get(originalTableNameForHistoryTableName).get(input.getTargetRecordId());
+                                                                           auditedEntityId = tomapping.get(input.getTargetRecordId());
                                                                        } else {
                                                                            objectType = input.getTableName().getObjectType();
 
-                                                                           if (recordIdIdsCache.get(input.getTableName()) == null) {
+                                                                           // if (recordIdIdsCache.get(input.getTableName()) == null) {
                                                                                final Iterable<RecordIdIdMappings> mappings = nonEntitySqlDao.getRecordIdIdMappings(input.getTableName().getTableName(),
                                                                                                                                                                    tenantContext);
-                                                                               recordIdIdsCache.put(input.getTableName(), RecordIdIdMappings.toMap(mappings));
-                                                                           }
+                                                                               // recordIdIdsCache.put(input.getTableName(), RecordIdIdMappings.toMap(mappings));
+                                                                           // }
+                                                                               Map<Long, UUID> tomapping = RecordIdIdMappings.toMap(mappings);
 
-                                                                           auditedEntityId = recordIdIdsCache.get(input.getTableName()).get(input.getTargetRecordId());
+                                                                           // auditedEntityId = recordIdIdsCache.get(input.getTableName()).get(input.getTargetRecordId());
+                                                                           auditedEntityId = tomapping.get(input.getTargetRecordId());
                                                                        }
 
                                                                        return new DefaultAuditLog(input, objectType, auditedEntityId);
diff --git a/util/src/main/java/org/killbill/billing/util/audit/DefaultAccountAuditLogs.java b/util/src/main/java/org/killbill/billing/util/audit/DefaultAccountAuditLogs.java
index a9b50d7..7105f81 100644
--- a/util/src/main/java/org/killbill/billing/util/audit/DefaultAccountAuditLogs.java
+++ b/util/src/main/java/org/killbill/billing/util/audit/DefaultAccountAuditLogs.java
@@ -36,7 +36,7 @@ public class DefaultAccountAuditLogs implements AccountAuditLogs {
     private final AuditLevel auditLevel;
     private final List<AuditLog> accountAuditLogs;
 
-    private final Map<ObjectType, DefaultAccountAuditLogsForObjectType> auditLogsCache = new HashMap<ObjectType, DefaultAccountAuditLogsForObjectType>();
+    // private final Map<ObjectType, DefaultAccountAuditLogsForObjectType> auditLogsCache = new HashMap<ObjectType, DefaultAccountAuditLogsForObjectType>();
 
     public DefaultAccountAuditLogs(final UUID accountId) {
         this(accountId, AuditLevel.NONE, ImmutableSet.<AuditLog>of().iterator());
@@ -126,12 +126,12 @@ public class DefaultAccountAuditLogs implements AccountAuditLogs {
 
     @Override
     public AccountAuditLogsForObjectType getAuditLogs(final ObjectType objectType) {
-        if (auditLogsCache.get(objectType) == null) {
-            auditLogsCache.put(objectType, new DefaultAccountAuditLogsForObjectType(auditLevel, new ObjectTypeFilter(objectType, accountAuditLogs.iterator())));
-        }
-
+        // if (auditLogsCache.get(objectType) == null) {
+            // auditLogsCache.put(objectType, new DefaultAccountAuditLogsForObjectType(auditLevel, new ObjectTypeFilter(objectType, accountAuditLogs.iterator())));
+        // }
+return new DefaultAccountAuditLogsForObjectType(auditLevel, new ObjectTypeFilter(objectType, accountAuditLogs.iterator()));
         // Should never be null
-        return auditLogsCache.get(objectType);
+        // return auditLogsCache.get(objectType);
     }
 
     @Override
diff --git a/util/src/main/java/org/killbill/billing/util/bcd/BillCycleDayCalculator.java b/util/src/main/java/org/killbill/billing/util/bcd/BillCycleDayCalculator.java
index 59e00d7..ce6656c 100644
--- a/util/src/main/java/org/killbill/billing/util/bcd/BillCycleDayCalculator.java
+++ b/util/src/main/java/org/killbill/billing/util/bcd/BillCycleDayCalculator.java
@@ -37,7 +37,9 @@ public abstract class BillCycleDayCalculator {
 
     private static final Logger log = LoggerFactory.getLogger(BillCycleDayCalculator.class);
 
-    public static int calculateBcdForAlignment(@Nullable final Map<UUID, Integer> bcdCache, final SubscriptionBase subscription, final SubscriptionBase baseSubscription, final BillingAlignment alignment, final InternalTenantContext internalTenantContext, final int accountBillCycleDayLocal) {
+    public static int calculateBcdForAlignment(
+        // @Nullable final Map<UUID, Integer> bcdCache, 
+        final SubscriptionBase subscription, final SubscriptionBase baseSubscription, final BillingAlignment alignment, final InternalTenantContext internalTenantContext, final int accountBillCycleDayLocal) {
         int result = 0;
         switch (alignment) {
             case ACCOUNT:
@@ -45,10 +47,14 @@ public abstract class BillCycleDayCalculator {
                 result = accountBillCycleDayLocal;
                 break;
             case BUNDLE:
-                result = calculateOrRetrieveBcdFromSubscription(bcdCache, baseSubscription, internalTenantContext);
+                result = calculateOrRetrieveBcdFromSubscription(
+                    // bcdCache,
+                     baseSubscription, internalTenantContext);
                 break;
             case SUBSCRIPTION:
-                result = calculateOrRetrieveBcdFromSubscription(bcdCache, subscription, internalTenantContext);
+                result = calculateOrRetrieveBcdFromSubscription(
+                    // bcdCache,
+                 subscription, internalTenantContext);
                 break;
         }
         return result;
@@ -78,14 +84,16 @@ public abstract class BillCycleDayCalculator {
         return resultingLocalDate;
     }
 
-    private static int calculateOrRetrieveBcdFromSubscription(@Nullable final Map<UUID, Integer> bcdCache, final SubscriptionBase subscription, final InternalTenantContext internalTenantContext) {
-        Integer result = bcdCache != null ? bcdCache.get(subscription.getId()) : null;
-        if (result == null) {
+    private static int calculateOrRetrieveBcdFromSubscription(
+        // @Nullable final Map<UUID, Integer> bcdCache,
+         final SubscriptionBase subscription, final InternalTenantContext internalTenantContext) {
+        Integer result;// = bcdCache != null ? bcdCache.get(subscription.getId()) : null;
+        // if (result == null) {
             result = calculateBcdFromSubscription(subscription, internalTenantContext);
-            if (bcdCache != null) {
-                bcdCache.put(subscription.getId(), result);
-            }
-        }
+            // if (bcdCache != null) {
+            //     bcdCache.put(subscription.getId(), result);
+            // }
+        // }
         return result;
     }
 
diff --git a/util/src/main/java/org/killbill/billing/util/cache/AccountBCDCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/AccountBCDCacheLoader.java
index 6e9955d..bcabf48 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/AccountBCDCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/AccountBCDCacheLoader.java
@@ -15,33 +15,33 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.UUID;
+// import java.util.UUID;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
 
-public class AccountBCDCacheLoader extends BaseCacheLoader<UUID, Integer> {
+// public class AccountBCDCacheLoader extends BaseCacheLoader<UUID, Integer> {
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.ACCOUNT_BCD;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.ACCOUNT_BCD;
+//     }
 
-    @Override
-    public Integer compute(final UUID key, final CacheLoaderArgument cacheLoaderArgument) {
-        if (cacheLoaderArgument.getArgs() == null ||
-            !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
-            throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
-        }
+//     @Override
+//     public Integer compute(final UUID key, final CacheLoaderArgument cacheLoaderArgument) {
+//         if (cacheLoaderArgument.getArgs() == null ||
+//             !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
+//             throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
+//         }
 
-        final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
-        return callback.loadAccountBCD(key, cacheLoaderArgument.getInternalTenantContext());
-    }
+//         final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
+//         return callback.loadAccountBCD(key, cacheLoaderArgument.getInternalTenantContext());
+//     }
 
-    public interface LoaderCallback {
+//     public interface LoaderCallback {
 
-        Integer loadAccountBCD(final UUID accountId, final InternalTenantContext context);
-    }
-}
+//         Integer loadAccountBCD(final UUID accountId, final InternalTenantContext context);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/AccountIdFromBundleIdCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/AccountIdFromBundleIdCacheLoader.java
index 9dd2f3a..9389d4e 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/AccountIdFromBundleIdCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/AccountIdFromBundleIdCacheLoader.java
@@ -15,36 +15,36 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.UUID;
+// import java.util.UUID;
 
-import javax.inject.Singleton;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
 
-@Singleton
-public class AccountIdFromBundleIdCacheLoader extends BaseCacheLoader<UUID, UUID> {
+// @Singleton
+// public class AccountIdFromBundleIdCacheLoader extends BaseCacheLoader<UUID, UUID> {
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.ACCOUNT_ID_FROM_BUNDLE_ID;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.ACCOUNT_ID_FROM_BUNDLE_ID;
+//     }
 
-    @Override
-    public UUID compute(final UUID key, final CacheLoaderArgument cacheLoaderArgument) {
-        if (cacheLoaderArgument.getArgs() == null ||
-            !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
-            throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
-        }
+//     @Override
+//     public UUID compute(final UUID key, final CacheLoaderArgument cacheLoaderArgument) {
+//         if (cacheLoaderArgument.getArgs() == null ||
+//             !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
+//             throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
+//         }
 
-        final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
-        return callback.loadAccountId(key, cacheLoaderArgument.getInternalTenantContext());
-    }
+//         final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
+//         return callback.loadAccountId(key, cacheLoaderArgument.getInternalTenantContext());
+//     }
 
-    public interface LoaderCallback {
+//     public interface LoaderCallback {
 
-        UUID loadAccountId(final UUID bundleId, final InternalTenantContext context);
-    }
-}
+//         UUID loadAccountId(final UUID bundleId, final InternalTenantContext context);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/AccountRecordIdCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/AccountRecordIdCacheLoader.java
index 7cb8757..80536ca 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/AccountRecordIdCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/AccountRecordIdCacheLoader.java
@@ -16,36 +16,36 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.UUID;
+// import java.util.UUID;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.ObjectType;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.dao.NonEntityDao;
-import org.skife.jdbi.v2.Handle;
+// import org.killbill.billing.ObjectType;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.dao.NonEntityDao;
+// import org.skife.jdbi.v2.Handle;
 
-@Singleton
-public class AccountRecordIdCacheLoader extends BaseIdCacheLoader<Long> {
+// @Singleton
+// public class AccountRecordIdCacheLoader extends BaseIdCacheLoader<Long> {
 
-    private final NonEntityDao nonEntityDao;
+//     private final NonEntityDao nonEntityDao;
 
-    @Inject
-    public AccountRecordIdCacheLoader(final NonEntityDao nonEntityDao) {
-        super();
-        this.nonEntityDao = nonEntityDao;
-    }
+//     @Inject
+//     public AccountRecordIdCacheLoader(final NonEntityDao nonEntityDao) {
+//         super();
+//         this.nonEntityDao = nonEntityDao;
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.ACCOUNT_RECORD_ID;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.ACCOUNT_RECORD_ID;
+//     }
 
-    @Override
-    protected Long doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle) {
-        return nonEntityDao.retrieveAccountRecordIdFromObjectInTransaction(UUID.fromString(rawKey), objectType, null, handle);
-    }
-}
+//     @Override
+//     protected Long doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle) {
+//         return nonEntityDao.retrieveAccountRecordIdFromObjectInTransaction(UUID.fromString(rawKey), objectType, null, handle);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/AuditLogCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/AuditLogCacheLoader.java
index 7274eab..27fe8e4 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/AuditLogCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/AuditLogCacheLoader.java
@@ -16,46 +16,46 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.List;
+// import java.util.List;
 
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Named;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.audit.dao.AuditLogModelDao;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.dao.AuditSqlDao;
-import org.killbill.billing.util.entity.dao.DBRouter;
-import org.skife.jdbi.v2.IDBI;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.util.audit.dao.AuditLogModelDao;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.dao.AuditSqlDao;
+// import org.killbill.billing.util.entity.dao.DBRouter;
+// import org.skife.jdbi.v2.IDBI;
 
-import static org.killbill.billing.util.glue.IDBISetup.MAIN_RO_IDBI_NAMED;
+// import static org.killbill.billing.util.glue.IDBISetup.MAIN_RO_IDBI_NAMED;
 
-@Singleton
-public class AuditLogCacheLoader extends BaseCacheLoader<String, List<AuditLogModelDao>> {
+// @Singleton
+// public class AuditLogCacheLoader extends BaseCacheLoader<String, List<AuditLogModelDao>> {
 
-    private final DBRouter<AuditSqlDao> dbRouter;
+//     private final DBRouter<AuditSqlDao> dbRouter;
 
-    @Inject
-    public AuditLogCacheLoader(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi) {
-        super();
-        this.dbRouter = new DBRouter<AuditSqlDao>(dbi, roDbi, AuditSqlDao.class);
-    }
+//     @Inject
+//     public AuditLogCacheLoader(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi) {
+//         super();
+//         this.dbRouter = new DBRouter<AuditSqlDao>(dbi, roDbi, AuditSqlDao.class);
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.AUDIT_LOG;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.AUDIT_LOG;
+//     }
 
-    @Override
-    public List<AuditLogModelDao> compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
-        final Object[] args = cacheLoaderArgument.getArgs();
-        final String tableName = (String) args[0];
-        final Long targetRecordId = (Long) args[1];
-        final InternalTenantContext internalTenantContext = (InternalTenantContext) args[2];
+//     @Override
+//     public List<AuditLogModelDao> compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final Object[] args = cacheLoaderArgument.getArgs();
+//         final String tableName = (String) args[0];
+//         final Long targetRecordId = (Long) args[1];
+//         final InternalTenantContext internalTenantContext = (InternalTenantContext) args[2];
 
-        return dbRouter.onDemand(true).getAuditLogsForTargetRecordId(tableName, targetRecordId, internalTenantContext);
-    }
-}
+//         return dbRouter.onDemand(true).getAuditLogsForTargetRecordId(tableName, targetRecordId, internalTenantContext);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/AuditLogViaHistoryCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/AuditLogViaHistoryCacheLoader.java
index 55eb6ff..396ef69 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/AuditLogViaHistoryCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/AuditLogViaHistoryCacheLoader.java
@@ -16,46 +16,46 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.List;
+// import java.util.List;
 
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Named;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.audit.dao.AuditLogModelDao;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.dao.AuditSqlDao;
-import org.skife.jdbi.v2.IDBI;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.util.audit.dao.AuditLogModelDao;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.dao.AuditSqlDao;
+// import org.skife.jdbi.v2.IDBI;
 
-import static org.killbill.billing.util.glue.IDBISetup.MAIN_RO_IDBI_NAMED;
+// import static org.killbill.billing.util.glue.IDBISetup.MAIN_RO_IDBI_NAMED;
 
-@Singleton
-public class AuditLogViaHistoryCacheLoader extends BaseCacheLoader<String, List<AuditLogModelDao>> {
+// @Singleton
+// public class AuditLogViaHistoryCacheLoader extends BaseCacheLoader<String, List<AuditLogModelDao>> {
 
-    private final AuditSqlDao roAuditSqlDao;
+//     private final AuditSqlDao roAuditSqlDao;
 
-    @Inject
-    public AuditLogViaHistoryCacheLoader(@Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi) {
-        super();
-        this.roAuditSqlDao = roDbi.onDemand(AuditSqlDao.class);
-    }
+//     @Inject
+//     public AuditLogViaHistoryCacheLoader(@Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi) {
+//         super();
+//         this.roAuditSqlDao = roDbi.onDemand(AuditSqlDao.class);
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.AUDIT_LOG_VIA_HISTORY;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.AUDIT_LOG_VIA_HISTORY;
+//     }
 
-    @Override
-    public List<AuditLogModelDao> compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
-        final Object[] args = cacheLoaderArgument.getArgs();
-        final String tableName = (String) args[0];
-        final String historyTableName = (String) args[1];
-        final Long targetRecordId = (Long) args[2];
-        final InternalTenantContext internalTenantContext = (InternalTenantContext) args[3];
+//     @Override
+//     public List<AuditLogModelDao> compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final Object[] args = cacheLoaderArgument.getArgs();
+//         final String tableName = (String) args[0];
+//         final String historyTableName = (String) args[1];
+//         final Long targetRecordId = (Long) args[2];
+//         final InternalTenantContext internalTenantContext = (InternalTenantContext) args[3];
 
-        return roAuditSqlDao.getAuditLogsViaHistoryForTargetRecordId(tableName, historyTableName, targetRecordId, internalTenantContext);
-    }
-}
+//         return roAuditSqlDao.getAuditLogsViaHistoryForTargetRecordId(tableName, historyTableName, targetRecordId, internalTenantContext);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/BaseCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/BaseCacheLoader.java
index 973f9f0..5708c3e 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/BaseCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/BaseCacheLoader.java
@@ -16,15 +16,15 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
 
-public abstract class BaseCacheLoader<K, V> {
+// public abstract class BaseCacheLoader<K, V> {
 
-    static final String EMPTY_VALUE_PLACEHOLDER = "__#VALEUR!__";
+//     static final String EMPTY_VALUE_PLACEHOLDER = "__#VALEUR!__";
 
-    public abstract CacheType getCacheType();
+//     public abstract CacheType getCacheType();
 
-    public abstract V compute(final K key, final CacheLoaderArgument cacheLoaderArgument);
-}
+//     public abstract V compute(final K key, final CacheLoaderArgument cacheLoaderArgument);
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/BaseIdCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/BaseIdCacheLoader.java
index e2cb993..78fe1c5 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/BaseIdCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/BaseIdCacheLoader.java
@@ -15,31 +15,31 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import org.killbill.billing.ObjectType;
-import org.skife.jdbi.v2.Handle;
+// import org.killbill.billing.ObjectType;
+// import org.skife.jdbi.v2.Handle;
 
-public abstract class BaseIdCacheLoader<V> extends BaseCacheLoader<String, V> {
+// public abstract class BaseIdCacheLoader<V> extends BaseCacheLoader<String, V> {
 
-    protected BaseIdCacheLoader() {
-        super();
-    }
+//     protected BaseIdCacheLoader() {
+//         super();
+//     }
 
-    protected abstract V doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle);
+//     protected abstract V doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle);
 
-    @Override
-    public V compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
-        final String rawKey;
-        if (getCacheType().isKeyPrefixedWithTableName()) {
-            final String[] parts = key.split(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
-            rawKey = parts[1];
-        } else {
-            rawKey = key;
-        }
+//     @Override
+//     public V compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final String rawKey;
+//         if (getCacheType().isKeyPrefixedWithTableName()) {
+//             final String[] parts = key.split(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
+//             rawKey = parts[1];
+//         } else {
+//             rawKey = key;
+//         }
 
-        final ObjectType objectType = cacheLoaderArgument.getObjectType();
-        final Handle handle = cacheLoaderArgument.getHandle();
-        return doRetrieveOperation(rawKey, objectType, handle);
-    }
-}
+//         final ObjectType objectType = cacheLoaderArgument.getObjectType();
+//         final Handle handle = cacheLoaderArgument.getHandle();
+//         return doRetrieveOperation(rawKey, objectType, handle);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/BundleIdFromSubscriptionIdCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/BundleIdFromSubscriptionIdCacheLoader.java
index b88d7b7..5a400d8 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/BundleIdFromSubscriptionIdCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/BundleIdFromSubscriptionIdCacheLoader.java
@@ -15,36 +15,36 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.UUID;
+// import java.util.UUID;
 
-import javax.inject.Singleton;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
 
-@Singleton
-public class BundleIdFromSubscriptionIdCacheLoader extends BaseCacheLoader<UUID, UUID> {
+// @Singleton
+// public class BundleIdFromSubscriptionIdCacheLoader extends BaseCacheLoader<UUID, UUID> {
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.BUNDLE_ID_FROM_SUBSCRIPTION_ID;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.BUNDLE_ID_FROM_SUBSCRIPTION_ID;
+//     }
 
-    @Override
-    public UUID compute(final UUID key, final CacheLoaderArgument cacheLoaderArgument) {
-        if (cacheLoaderArgument.getArgs() == null ||
-            !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
-            throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
-        }
+//     @Override
+//     public UUID compute(final UUID key, final CacheLoaderArgument cacheLoaderArgument) {
+//         if (cacheLoaderArgument.getArgs() == null ||
+//             !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
+//             throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
+//         }
 
-        final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
-        return callback.loadBundleId(key, cacheLoaderArgument.getInternalTenantContext());
-    }
+//         final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
+//         return callback.loadBundleId(key, cacheLoaderArgument.getInternalTenantContext());
+//     }
 
-    public interface LoaderCallback {
+//     public interface LoaderCallback {
 
-        UUID loadBundleId(final UUID subscriptionId, final InternalTenantContext context);
-    }
-}
+//         UUID loadBundleId(final UUID subscriptionId, final InternalTenantContext context);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/Cachable.java b/util/src/main/java/org/killbill/billing/util/cache/Cachable.java
index 240ff3c..30d8efd 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/Cachable.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/Cachable.java
@@ -16,132 +16,132 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.util.List;
-import java.util.UUID;
+// import java.lang.annotation.ElementType;
+// import java.lang.annotation.Retention;
+// import java.lang.annotation.RetentionPolicy;
+// import java.lang.annotation.Target;
+// import java.util.List;
+// import java.util.UUID;
 
-import org.killbill.billing.account.api.ImmutableAccountData;
-import org.killbill.billing.catalog.api.Catalog;
-import org.killbill.billing.catalog.api.Plan;
-import org.killbill.billing.tenant.api.Tenant;
-import org.killbill.billing.util.config.tenant.PerTenantConfig;
+// import org.killbill.billing.account.api.ImmutableAccountData;
+// import org.killbill.billing.catalog.api.Catalog;
+// import org.killbill.billing.catalog.api.Plan;
+// import org.killbill.billing.tenant.api.Tenant;
+// import org.killbill.billing.util.config.tenant.PerTenantConfig;
 
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.METHOD})
-public @interface Cachable {
+// @Retention(RetentionPolicy.RUNTIME)
+// @Target({ElementType.METHOD})
+// public @interface Cachable {
 
-    String RECORD_ID_CACHE_NAME = "record-id";
-    String ACCOUNT_RECORD_ID_CACHE_NAME = "account-record-id";
-    String TENANT_RECORD_ID_CACHE_NAME = "tenant-record-id";
-    String OBJECT_ID_CACHE_NAME = "object-id";
-    String AUDIT_LOG_CACHE_NAME = "audit-log";
-    String AUDIT_LOG_VIA_HISTORY_CACHE_NAME = "audit-log-via-history";
-    String TENANT_CATALOG_CACHE_NAME = "tenant-catalog";
-    String TENANT_PAYMENT_STATE_MACHINE_CONFIG_CACHE_NAME = "tenant-payment-state-machine-config";
-    String TENANT_OVERDUE_CONFIG_CACHE_NAME = "tenant-overdue-config";
-    String TENANT_CONFIG_CACHE_NAME = "tenant-config";
-    String TENANT_KV_CACHE_NAME = "tenant-kv";
-    String TENANT_CACHE_NAME = "tenant";
-    String OVERRIDDEN_PLAN_CACHE_NAME = "overridden-plan";
-    String ACCOUNT_IMMUTABLE_CACHE_NAME = "account-immutable";
-    String ACCOUNT_BCD_CACHE_NAME = "account-bcd";
-    String ACCOUNT_ID_FROM_BUNDLE_ID_CACHE_NAME = "account-id-from-bundle-id";
-    String BUNDLE_ID_FROM_SUBSCRIPTION_ID_CACHE_NAME = "bundle-id-from-subscription-id";
-
-    CacheType value();
-
-    // Make sure both the key and value are Serializable
-    enum CacheType {
-
-        /* Mapping from object 'id (UUID as String)' -> object 'recordId (Long)' */
-        RECORD_ID(RECORD_ID_CACHE_NAME, String.class, Long.class, false),
-
-        /* Mapping from object 'id (UUID as String)' -> matching account object 'accountRecordId (Long)' */
-        ACCOUNT_RECORD_ID(ACCOUNT_RECORD_ID_CACHE_NAME, String.class, Long.class, false),
-
-        /* Mapping from object 'id (UUID as String)' -> matching object 'tenantRecordId (Long)' */
-        TENANT_RECORD_ID(TENANT_RECORD_ID_CACHE_NAME, String.class, Long.class, false),
-
-        /* Mapping from object 'recordId (Long as String)' -> object 'id (UUID)'  */
-        OBJECT_ID(OBJECT_ID_CACHE_NAME, String.class, UUID.class, true),
-
-        /* Mapping from object 'tableName::targetRecordId' -> matching objects 'List<AuditLogModelDao>' */
-        AUDIT_LOG(AUDIT_LOG_CACHE_NAME, String.class, List.class, true),
-
-        /* Mapping from object 'tableName::historyTableName::targetRecordId' -> matching objects 'List<AuditLogModelDao>' */
-        AUDIT_LOG_VIA_HISTORY(AUDIT_LOG_VIA_HISTORY_CACHE_NAME, String.class, List.class, true),
-
-        /* Tenant catalog cache */
-        TENANT_CATALOG(TENANT_CATALOG_CACHE_NAME, Long.class, Catalog.class, false),
-
-        /* Tenant payment state machine config cache (String -> SerializableStateMachineConfig) */
-        TENANT_PAYMENT_STATE_MACHINE_CONFIG(TENANT_PAYMENT_STATE_MACHINE_CONFIG_CACHE_NAME, String.class, Object.class, false),
-
-        /* Tenant overdue config cache (String -> DefaultOverdueConfig) */
-        TENANT_OVERDUE_CONFIG(TENANT_OVERDUE_CONFIG_CACHE_NAME, Long.class, Object.class, false),
-
-        /* Tenant overdue config cache */
-        TENANT_CONFIG(TENANT_CONFIG_CACHE_NAME, Long.class, PerTenantConfig.class, false),
-
-        /* Tenant config cache */
-        TENANT_KV(TENANT_KV_CACHE_NAME, String.class, String.class, false),
-
-        /* Tenant cache */
-        TENANT(TENANT_CACHE_NAME, String.class, Tenant.class, false),
-
-        /* Overwritten plans  */
-        OVERRIDDEN_PLAN(OVERRIDDEN_PLAN_CACHE_NAME, String.class, Plan.class, false),
-
-        /* Immutable account data config cache */
-        ACCOUNT_IMMUTABLE(ACCOUNT_IMMUTABLE_CACHE_NAME, Long.class, ImmutableAccountData.class, false),
-
-        /* Account BCD config cache */
-        ACCOUNT_BCD(ACCOUNT_BCD_CACHE_NAME, UUID.class, Integer.class, false),
-
-        /* Bundle id to Account id cache */
-        ACCOUNT_ID_FROM_BUNDLE_ID(ACCOUNT_ID_FROM_BUNDLE_ID_CACHE_NAME, UUID.class, UUID.class, false),
-
-        /* Entitlement id to Bundle id cache */
-        BUNDLE_ID_FROM_SUBSCRIPTION_ID(BUNDLE_ID_FROM_SUBSCRIPTION_ID_CACHE_NAME, UUID.class, UUID.class, false);
-
-        private final String cacheName;
-        private final Class keyType;
-        private final Class valueType;
-        private final boolean isKeyPrefixedWithTableName;
-
-        CacheType(final String cacheName, final Class keyType, final Class valueType, final boolean isKeyPrefixedWithTableName) {
-            this.cacheName = cacheName;
-            this.keyType = keyType;
-            this.valueType = valueType;
-            this.isKeyPrefixedWithTableName = isKeyPrefixedWithTableName;
-        }
-
-        public String getCacheName() {
-            return cacheName;
-        }
-
-        public Class<?> getKeyType() {
-            return keyType;
-        }
-
-        public Class<?> getValueType() {
-            return valueType;
-        }
-
-        public boolean isKeyPrefixedWithTableName() { return isKeyPrefixedWithTableName; }
+//     String RECORD_ID_CACHE_NAME = "record-id";
+//     String ACCOUNT_RECORD_ID_CACHE_NAME = "account-record-id";
+//     String TENANT_RECORD_ID_CACHE_NAME = "tenant-record-id";
+//     String OBJECT_ID_CACHE_NAME = "object-id";
+//     String AUDIT_LOG_CACHE_NAME = "audit-log";
+//     String AUDIT_LOG_VIA_HISTORY_CACHE_NAME = "audit-log-via-history";
+//     String TENANT_CATALOG_CACHE_NAME = "tenant-catalog";
+//     String TENANT_PAYMENT_STATE_MACHINE_CONFIG_CACHE_NAME = "tenant-payment-state-machine-config";
+//     String TENANT_OVERDUE_CONFIG_CACHE_NAME = "tenant-overdue-config";
+//     String TENANT_CONFIG_CACHE_NAME = "tenant-config";
+//     String TENANT_KV_CACHE_NAME = "tenant-kv";
+//     String TENANT_CACHE_NAME = "tenant";
+//     String OVERRIDDEN_PLAN_CACHE_NAME = "overridden-plan";
+//     String ACCOUNT_IMMUTABLE_CACHE_NAME = "account-immutable";
+//     String ACCOUNT_BCD_CACHE_NAME = "account-bcd";
+//     String ACCOUNT_ID_FROM_BUNDLE_ID_CACHE_NAME = "account-id-from-bundle-id";
+//     String BUNDLE_ID_FROM_SUBSCRIPTION_ID_CACHE_NAME = "bundle-id-from-subscription-id";
+
+//     CacheType value();
+
+//     // Make sure both the key and value are Serializable
+//     enum CacheType {
+
+//         /* Mapping from object 'id (UUID as String)' -> object 'recordId (Long)' */
+//         RECORD_ID(RECORD_ID_CACHE_NAME, String.class, Long.class, false),
+
+//         /* Mapping from object 'id (UUID as String)' -> matching account object 'accountRecordId (Long)' */
+//         ACCOUNT_RECORD_ID(ACCOUNT_RECORD_ID_CACHE_NAME, String.class, Long.class, false),
+
+//         /* Mapping from object 'id (UUID as String)' -> matching object 'tenantRecordId (Long)' */
+//         TENANT_RECORD_ID(TENANT_RECORD_ID_CACHE_NAME, String.class, Long.class, false),
+
+//         /* Mapping from object 'recordId (Long as String)' -> object 'id (UUID)'  */
+//         OBJECT_ID(OBJECT_ID_CACHE_NAME, String.class, UUID.class, true),
+
+//         /* Mapping from object 'tableName::targetRecordId' -> matching objects 'List<AuditLogModelDao>' */
+//         AUDIT_LOG(AUDIT_LOG_CACHE_NAME, String.class, List.class, true),
+
+//         /* Mapping from object 'tableName::historyTableName::targetRecordId' -> matching objects 'List<AuditLogModelDao>' */
+//         AUDIT_LOG_VIA_HISTORY(AUDIT_LOG_VIA_HISTORY_CACHE_NAME, String.class, List.class, true),
+
+//         /* Tenant catalog cache */
+//         TENANT_CATALOG(TENANT_CATALOG_CACHE_NAME, Long.class, Catalog.class, false),
+
+//         /* Tenant payment state machine config cache (String -> SerializableStateMachineConfig) */
+//         TENANT_PAYMENT_STATE_MACHINE_CONFIG(TENANT_PAYMENT_STATE_MACHINE_CONFIG_CACHE_NAME, String.class, Object.class, false),
+
+//         /* Tenant overdue config cache (String -> DefaultOverdueConfig) */
+//         TENANT_OVERDUE_CONFIG(TENANT_OVERDUE_CONFIG_CACHE_NAME, Long.class, Object.class, false),
+
+//         /* Tenant overdue config cache */
+//         TENANT_CONFIG(TENANT_CONFIG_CACHE_NAME, Long.class, PerTenantConfig.class, false),
+
+//         /* Tenant config cache */
+//         TENANT_KV(TENANT_KV_CACHE_NAME, String.class, String.class, false),
+
+//         /* Tenant cache */
+//         TENANT(TENANT_CACHE_NAME, String.class, Tenant.class, false),
+
+//         /* Overwritten plans  */
+//         OVERRIDDEN_PLAN(OVERRIDDEN_PLAN_CACHE_NAME, String.class, Plan.class, false),
+
+//         /* Immutable account data config cache */
+//         ACCOUNT_IMMUTABLE(ACCOUNT_IMMUTABLE_CACHE_NAME, Long.class, ImmutableAccountData.class, false),
+
+//         /* Account BCD config cache */
+//         ACCOUNT_BCD(ACCOUNT_BCD_CACHE_NAME, UUID.class, Integer.class, false),
+
+//         /* Bundle id to Account id cache */
+//         ACCOUNT_ID_FROM_BUNDLE_ID(ACCOUNT_ID_FROM_BUNDLE_ID_CACHE_NAME, UUID.class, UUID.class, false),
+
+//         /* Entitlement id to Bundle id cache */
+//         BUNDLE_ID_FROM_SUBSCRIPTION_ID(BUNDLE_ID_FROM_SUBSCRIPTION_ID_CACHE_NAME, UUID.class, UUID.class, false);
+
+//         private final String cacheName;
+//         private final Class keyType;
+//         private final Class valueType;
+//         private final boolean isKeyPrefixedWithTableName;
+
+//         CacheType(final String cacheName, final Class keyType, final Class valueType, final boolean isKeyPrefixedWithTableName) {
+//             this.cacheName = cacheName;
+//             this.keyType = keyType;
+//             this.valueType = valueType;
+//             this.isKeyPrefixedWithTableName = isKeyPrefixedWithTableName;
+//         }
+
+//         public String getCacheName() {
+//             return cacheName;
+//         }
+
+//         public Class<?> getKeyType() {
+//             return keyType;
+//         }
+
+//         public Class<?> getValueType() {
+//             return valueType;
+//         }
+
+//         public boolean isKeyPrefixedWithTableName() { return isKeyPrefixedWithTableName; }
 
-        public static CacheType findByName(final String input) {
-            for (final CacheType cacheType : CacheType.values()) {
-                if (cacheType.cacheName.equals(input)) {
-                    return cacheType;
-                }
-            }
-            return null;
-        }
-    }
-}
+//         public static CacheType findByName(final String input) {
+//             for (final CacheType cacheType : CacheType.values()) {
+//                 if (cacheType.cacheName.equals(input)) {
+//                     return cacheType;
+//                 }
+//             }
+//             return null;
+//         }
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/CachableKey.java b/util/src/main/java/org/killbill/billing/util/cache/CachableKey.java
index 69cf057..60f9950 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/CachableKey.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/CachableKey.java
@@ -14,17 +14,17 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+// import java.lang.annotation.ElementType;
+// import java.lang.annotation.Retention;
+// import java.lang.annotation.RetentionPolicy;
+// import java.lang.annotation.Target;
 
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER})
-public @interface CachableKey {
+// @Retention(RetentionPolicy.RUNTIME)
+// @Target({ElementType.PARAMETER})
+// public @interface CachableKey {
 
-    // Position (start at 1)
-    public int value();
-}
+//     // Position (start at 1)
+//     public int value();
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/CacheController.java b/util/src/main/java/org/killbill/billing/util/cache/CacheController.java
index 46ee5dc..7465266 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/CacheController.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/CacheController.java
@@ -14,31 +14,31 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.List;
+// import java.util.List;
 
-import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
 
-import com.google.common.base.Function;
+// import com.google.common.base.Function;
 
-public interface CacheController<K, V> {
+// public interface CacheController<K, V> {
 
-    List<K> getKeys();
+//     List<K> getKeys();
 
-    boolean isKeyInCache(K key);
+//     boolean isKeyInCache(K key);
 
-    V get(K key, CacheLoaderArgument objectType);
+//     V get(K key, CacheLoaderArgument objectType);
 
-    boolean remove(K key);
+//     boolean remove(K key);
 
-    void remove(Function<K, Boolean> keyMatcher);
+//     void remove(Function<K, Boolean> keyMatcher);
 
-    void putIfAbsent(final K key, V value);
+//     void putIfAbsent(final K key, V value);
 
-    int size();
+//     int size();
 
-    void removeAll();
+//     void removeAll();
 
-    CacheType getCacheType();
-}
+//     CacheType getCacheType();
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcher.java b/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcher.java
index 2d9b966..0ba2e61 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcher.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcher.java
@@ -14,48 +14,48 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.HashMap;
-import java.util.Map;
+// import java.util.HashMap;
+// import java.util.Map;
 
-import javax.inject.Inject;
+// import javax.inject.Inject;
 
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-// Kill Bill generic cache dispatcher
-public class CacheControllerDispatcher {
+// // Kill Bill generic cache dispatcher
+// public class CacheControllerDispatcher {
 
-    private static final Logger logger = LoggerFactory.getLogger(CacheControllerDispatcher.class);
+//     private static final Logger logger = LoggerFactory.getLogger(CacheControllerDispatcher.class);
 
-    public static final String CACHE_KEY_SEPARATOR = "::";
+//     public static final String CACHE_KEY_SEPARATOR = "::";
 
-    private final Map<CacheType, CacheController<Object, Object>> caches;
+//     private final Map<CacheType, CacheController<Object, Object>> caches;
 
-    @Inject
-    public CacheControllerDispatcher(final Map<CacheType, CacheController<Object, Object>> caches) {
-        this.caches = caches;
-    }
+//     @Inject
+//     public CacheControllerDispatcher(final Map<CacheType, CacheController<Object, Object>> caches) {
+//         this.caches = caches;
+//     }
 
-    // Test only
-    public CacheControllerDispatcher() {
-        caches = new HashMap<CacheType, CacheController<Object, Object>>();
-    }
+//     // Test only
+//     public CacheControllerDispatcher() {
+//         caches = new HashMap<CacheType, CacheController<Object, Object>>();
+//     }
 
-    public <K, V> CacheController<K, V> getCacheController(final CacheType cacheType) {
-        return cast(caches.get(cacheType));
-    }
+//     public <K, V> CacheController<K, V> getCacheController(final CacheType cacheType) {
+//         return cast(caches.get(cacheType));
+//     }
 
-    public void clearAll() {
-        for (final CacheController<Object, Object> cacheController : caches.values()) {
-            cacheController.removeAll();
-        }
-    }
+//     public void clearAll() {
+//         for (final CacheController<Object, Object> cacheController : caches.values()) {
+//             cacheController.removeAll();
+//         }
+//     }
 
-    @SuppressWarnings("unchecked")
-    private static <K, V> CacheController<K, V> cast(final CacheController<?, ?> cache) {
-        return (CacheController<K, V>) cache;
-    }
-}
+//     @SuppressWarnings("unchecked")
+//     private static <K, V> CacheController<K, V> cast(final CacheController<?, ?> cache) {
+//         return (CacheController<K, V>) cache;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcherProvider.java b/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcherProvider.java
index a99d0be..eddcd00 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcherProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcherProvider.java
@@ -16,55 +16,55 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
+// import java.util.LinkedHashMap;
+// import java.util.Map;
+// import java.util.Set;
 
-import javax.cache.Cache;
-import javax.cache.CacheManager;
-import javax.inject.Inject;
-import javax.inject.Provider;
+// import javax.cache.Cache;
+// import javax.cache.CacheManager;
+// import javax.inject.Inject;
+// import javax.inject.Provider;
 
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Preconditions;
+// import com.google.common.base.Preconditions;
 
-// Build the abstraction layer between JCache and Kill Bill
-public class CacheControllerDispatcherProvider implements Provider<CacheControllerDispatcher> {
+// // Build the abstraction layer between JCache and Kill Bill
+// public class CacheControllerDispatcherProvider implements Provider<CacheControllerDispatcher> {
 
-    private static final Logger logger = LoggerFactory.getLogger(CacheControllerDispatcherProvider.class);
+//     private static final Logger logger = LoggerFactory.getLogger(CacheControllerDispatcherProvider.class);
 
-    private final CacheManager cacheManager;
-    private final Set<BaseCacheLoader> cacheLoaders;
+//     private final CacheManager cacheManager;
+//     private final Set<BaseCacheLoader> cacheLoaders;
 
-    @Inject
-    public CacheControllerDispatcherProvider(final CacheManager cacheManager,
-                                             final Set<BaseCacheLoader> cacheLoaders) {
-        this.cacheManager = cacheManager;
-        this.cacheLoaders = cacheLoaders;
-    }
+//     @Inject
+//     public CacheControllerDispatcherProvider(final CacheManager cacheManager,
+//                                              final Set<BaseCacheLoader> cacheLoaders) {
+//         this.cacheManager = cacheManager;
+//         this.cacheLoaders = cacheLoaders;
+//     }
 
-    @Override
-    public CacheControllerDispatcher get() {
-        final Map<CacheType, CacheController<Object, Object>> cacheControllers = new LinkedHashMap<CacheType, CacheController<Object, Object>>();
-        for (final BaseCacheLoader cacheLoader : cacheLoaders) {
-            final CacheType cacheType = cacheLoader.getCacheType();
+//     @Override
+//     public CacheControllerDispatcher get() {
+//         final Map<CacheType, CacheController<Object, Object>> cacheControllers = new LinkedHashMap<CacheType, CacheController<Object, Object>>();
+//         for (final BaseCacheLoader cacheLoader : cacheLoaders) {
+//             final CacheType cacheType = cacheLoader.getCacheType();
 
-            final Cache cache = cacheManager.getCache(cacheType.getCacheName(), cacheType.getKeyType(), cacheType.getValueType());
-            if (cache == null) {
-                logger.warn("Cache for cacheName='{}' not configured", cacheLoader.getCacheType().getCacheName());
-                continue;
-            }
-            Preconditions.checkState(!cache.isClosed(), "Cache '%s' should not be closed", cacheType.getCacheName());
+//             final Cache cache = cacheManager.getCache(cacheType.getCacheName(), cacheType.getKeyType(), cacheType.getValueType());
+//             if (cache == null) {
+//                 logger.warn("Cache for cacheName='{}' not configured", cacheLoader.getCacheType().getCacheName());
+//                 continue;
+//             }
+//             Preconditions.checkState(!cache.isClosed(), "Cache '%s' should not be closed", cacheType.getCacheName());
 
-            final CacheController<Object, Object> killBillCacheController = new KillBillCacheController<Object, Object>(cache, cacheLoader);
-            cacheControllers.put(cacheType, killBillCacheController);
-        }
+//             final CacheController<Object, Object> killBillCacheController = new KillBillCacheController<Object, Object>(cache, cacheLoader);
+//             cacheControllers.put(cacheType, killBillCacheController);
+//         }
 
-        return new CacheControllerDispatcher(cacheControllers);
-    }
-}
+//         return new CacheControllerDispatcher(cacheControllers);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/CacheLoaderArgument.java b/util/src/main/java/org/killbill/billing/util/cache/CacheLoaderArgument.java
index 1724c59..3b86620 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/CacheLoaderArgument.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/CacheLoaderArgument.java
@@ -16,61 +16,61 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.Arrays;
+// import java.util.Arrays;
 
-import javax.annotation.Nullable;
+// import javax.annotation.Nullable;
 
-import org.killbill.billing.ObjectType;
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.skife.jdbi.v2.Handle;
+// import org.killbill.billing.ObjectType;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.skife.jdbi.v2.Handle;
 
-public class CacheLoaderArgument {
+// public class CacheLoaderArgument {
 
-    private final ObjectType objectType;
-    private final Object[] args;
-    private final InternalTenantContext internalTenantContext;
-    private final Handle handle;
+//     private final ObjectType objectType;
+//     private final Object[] args;
+//     private final InternalTenantContext internalTenantContext;
+//     private final Handle handle;
 
-    public CacheLoaderArgument(final ObjectType objectType) {
-        this(objectType, new Object[]{}, null);
-    }
+//     public CacheLoaderArgument(final ObjectType objectType) {
+//         this(objectType, new Object[]{}, null);
+//     }
 
-    public CacheLoaderArgument(final ObjectType objectType, final Object[] args, @Nullable final InternalTenantContext internalTenantContext) {
-        this(objectType, args, internalTenantContext, null);
-    }
+//     public CacheLoaderArgument(final ObjectType objectType, final Object[] args, @Nullable final InternalTenantContext internalTenantContext) {
+//         this(objectType, args, internalTenantContext, null);
+//     }
 
-    public CacheLoaderArgument(final ObjectType objectType, final Object[] args, @Nullable final InternalTenantContext internalTenantContext, @Nullable final Handle handle) {
-        this.objectType = objectType;
-        this.args = args;
-        this.internalTenantContext = internalTenantContext;
-        this.handle = handle;
-    }
+//     public CacheLoaderArgument(final ObjectType objectType, final Object[] args, @Nullable final InternalTenantContext internalTenantContext, @Nullable final Handle handle) {
+//         this.objectType = objectType;
+//         this.args = args;
+//         this.internalTenantContext = internalTenantContext;
+//         this.handle = handle;
+//     }
 
-    public ObjectType getObjectType() {
-        return objectType;
-    }
+//     public ObjectType getObjectType() {
+//         return objectType;
+//     }
 
-    public Object[] getArgs() {
-        return args;
-    }
+//     public Object[] getArgs() {
+//         return args;
+//     }
 
-    public InternalTenantContext getInternalTenantContext() {
-        return internalTenantContext;
-    }
+//     public InternalTenantContext getInternalTenantContext() {
+//         return internalTenantContext;
+//     }
 
-    public Handle getHandle() {
-        return handle;
-    }
+//     public Handle getHandle() {
+//         return handle;
+//     }
 
-    @Override
-    public String toString() {
-        final StringBuilder sb = new StringBuilder("CacheLoaderArgument{");
-        sb.append("objectType=").append(objectType);
-        sb.append(", args=").append(Arrays.toString(args));
-        sb.append(", internalTenantContext=").append(internalTenantContext);
-        sb.append('}');
-        return sb.toString();
-    }
-}
+//     @Override
+//     public String toString() {
+//         final StringBuilder sb = new StringBuilder("CacheLoaderArgument{");
+//         sb.append("objectType=").append(objectType);
+//         sb.append(", args=").append(Arrays.toString(args));
+//         sb.append(", internalTenantContext=").append(internalTenantContext);
+//         sb.append('}');
+//         return sb.toString();
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/ImmutableAccountCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/ImmutableAccountCacheLoader.java
index 8634a01..00f4857 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/ImmutableAccountCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/ImmutableAccountCacheLoader.java
@@ -15,32 +15,32 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import org.killbill.billing.account.api.ImmutableAccountData;
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.account.api.ImmutableAccountData;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
 
-public class ImmutableAccountCacheLoader extends BaseCacheLoader<Long, ImmutableAccountData> {
+// public class ImmutableAccountCacheLoader extends BaseCacheLoader<Long, ImmutableAccountData> {
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.ACCOUNT_IMMUTABLE;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.ACCOUNT_IMMUTABLE;
+//     }
 
-    @Override
-    public ImmutableAccountData compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) {
-        if (cacheLoaderArgument.getArgs() == null ||
-            !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
-            throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
-        }
+//     @Override
+//     public ImmutableAccountData compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) {
+//         if (cacheLoaderArgument.getArgs() == null ||
+//             !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
+//             throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
+//         }
 
-        final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
-        return callback.loadAccount(key, cacheLoaderArgument.getInternalTenantContext());
-    }
+//         final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
+//         return callback.loadAccount(key, cacheLoaderArgument.getInternalTenantContext());
+//     }
 
-    public interface LoaderCallback {
+//     public interface LoaderCallback {
 
-        ImmutableAccountData loadAccount(final Long recordId, final InternalTenantContext context);
-    }
-}
+//         ImmutableAccountData loadAccount(final Long recordId, final InternalTenantContext context);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/KillBillCacheController.java b/util/src/main/java/org/killbill/billing/util/cache/KillBillCacheController.java
index 1f9af3c..675a4ba 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/KillBillCacheController.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/KillBillCacheController.java
@@ -16,140 +16,140 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.cache.Cache;
-import javax.cache.Cache.Entry;
-import javax.cache.CacheException;
-
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-
-public class KillBillCacheController<K, V> implements CacheController<K, V> {
-
-    private static final Logger logger = LoggerFactory.getLogger(KillBillCacheController.class);
-
-    private final Cache<K, V> cache;
-    private final BaseCacheLoader<K, V> baseCacheLoader;
-
-    public KillBillCacheController(final Cache<K, V> cache, final BaseCacheLoader<K, V> baseCacheLoader) {
-        this.cache = cache;
-        this.baseCacheLoader = baseCacheLoader;
-    }
-
-    @Override
-    public List<K> getKeys() {
-        final Iterable<K> kIterable = Iterables.<Entry<K, V>, K>transform(cache,
-                                                                          new Function<Entry<K, V>, K>() {
-                                                                              @Override
-                                                                              public K apply(final Entry<K, V> input) {
-                                                                                  return input.getKey();
-                                                                              }
-                                                                          });
-        return ImmutableList.<K>copyOf(kIterable);
-    }
-
-    @Override
-    public boolean isKeyInCache(final K key) {
-        return cache.containsKey(key);
-    }
-
-    @Override
-    public V get(final K key, final CacheLoaderArgument cacheLoaderArgument) {
-        if (key == null) {
-            return null;
-        }
-
-        V value;
-        try {
-            if (!isKeyInCache(key)) {
-                value = computeAndCacheValue(key, cacheLoaderArgument);
-            } else {
-                value = cache.get(key);
-            }
-        } catch (final CacheException e) {
-            logger.warn("Unable to retrieve cached value for key='{}' and cacheLoaderArgument='{}'", key, cacheLoaderArgument, e);
-            value = computeValue(key, cacheLoaderArgument);
-        }
-
-        if (value == null || value.equals(BaseCacheLoader.EMPTY_VALUE_PLACEHOLDER)) {
-            return null;
-        } else {
-            return value;
-        }
-    }
-
-    @Override
-    public void putIfAbsent(final K key, final V value) {
-        cache.putIfAbsent(key, value);
-    }
-
-    @Override
-    public boolean remove(final K key) {
-        if (isKeyInCache(key)) {
-            cache.remove(key);
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    @Override
-    public void remove(final Function<K, Boolean> keyMatcher) {
-        final Set<K> toRemove = new HashSet<K>();
-        for (final Object key : getKeys()) {
-            if (keyMatcher.apply((K) key) == Boolean.TRUE) {
-                toRemove.add((K) key);
-            }
-        }
-        cache.removeAll(toRemove);
-    }
-
-    @Override
-    public void removeAll() {
-        cache.clear();
-    }
-
-    @Override
-    public int size() {
-        return Iterables.size(cache);
-    }
-
-    @Override
-    public CacheType getCacheType() {
-        return baseCacheLoader.getCacheType();
-    }
-
-    private V computeAndCacheValue(final K key, final CacheLoaderArgument cacheLoaderArgument) {
-        final V value = computeValue(key, cacheLoaderArgument);
-        if (value == null) {
-            return null;
-        }
-
-        // Race condition, we may compute it for nothing
-        putIfAbsent(key, value);
-
-        return value;
-    }
-
-    private V computeValue(final K key, final CacheLoaderArgument cacheLoaderArgument) {
-        final V value;
-        try {
-            value = baseCacheLoader.compute(key, cacheLoaderArgument);
-        } catch (final Exception e) {
-            // Remove noisy log (might be expected, see https://github.com/killbill/killbill/issues/842)
-            //logger.warn("Unable to compute cached value for key='{}' and cacheLoaderArgument='{}'", key, cacheLoaderArgument, e);
-            throw new RuntimeException(e);
-        }
-        return value;
-    }
-}
+// package org.killbill.billing.util.cache;
+
+// import java.util.HashSet;
+// import java.util.List;
+// import java.util.Set;
+
+// import javax.cache.Cache;
+// import javax.cache.Cache.Entry;
+// import javax.cache.CacheException;
+
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
+
+// import com.google.common.base.Function;
+// import com.google.common.collect.ImmutableList;
+// import com.google.common.collect.Iterables;
+
+// public class KillBillCacheController<K, V> implements CacheController<K, V> {
+
+//     private static final Logger logger = LoggerFactory.getLogger(KillBillCacheController.class);
+
+//     private final Cache<K, V> cache;
+//     private final BaseCacheLoader<K, V> baseCacheLoader;
+
+//     public KillBillCacheController(final Cache<K, V> cache, final BaseCacheLoader<K, V> baseCacheLoader) {
+//         this.cache = cache;
+//         this.baseCacheLoader = baseCacheLoader;
+//     }
+
+//     @Override
+//     public List<K> getKeys() {
+//         final Iterable<K> kIterable = Iterables.<Entry<K, V>, K>transform(cache,
+//                                                                           new Function<Entry<K, V>, K>() {
+//                                                                               @Override
+//                                                                               public K apply(final Entry<K, V> input) {
+//                                                                                   return input.getKey();
+//                                                                               }
+//                                                                           });
+//         return ImmutableList.<K>copyOf(kIterable);
+//     }
+
+//     @Override
+//     public boolean isKeyInCache(final K key) {
+//         return cache.containsKey(key);
+//     }
+
+//     @Override
+//     public V get(final K key, final CacheLoaderArgument cacheLoaderArgument) {
+//         if (key == null) {
+//             return null;
+//         }
+
+//         V value;
+//         try {
+//             if (!isKeyInCache(key)) {
+//                 value = computeAndCacheValue(key, cacheLoaderArgument);
+//             } else {
+//                 value = cache.get(key);
+//             }
+//         } catch (final CacheException e) {
+//             logger.warn("Unable to retrieve cached value for key='{}' and cacheLoaderArgument='{}'", key, cacheLoaderArgument, e);
+//             value = computeValue(key, cacheLoaderArgument);
+//         }
+
+//         if (value == null || value.equals(BaseCacheLoader.EMPTY_VALUE_PLACEHOLDER)) {
+//             return null;
+//         } else {
+//             return value;
+//         }
+//     }
+
+//     @Override
+//     public void putIfAbsent(final K key, final V value) {
+//         cache.putIfAbsent(key, value);
+//     }
+
+//     @Override
+//     public boolean remove(final K key) {
+//         if (isKeyInCache(key)) {
+//             cache.remove(key);
+//             return true;
+//         } else {
+//             return false;
+//         }
+//     }
+
+//     @Override
+//     public void remove(final Function<K, Boolean> keyMatcher) {
+//         final Set<K> toRemove = new HashSet<K>();
+//         for (final Object key : getKeys()) {
+//             if (keyMatcher.apply((K) key) == Boolean.TRUE) {
+//                 toRemove.add((K) key);
+//             }
+//         }
+//         cache.removeAll(toRemove);
+//     }
+
+//     @Override
+//     public void removeAll() {
+//         cache.clear();
+//     }
+
+//     @Override
+//     public int size() {
+//         return Iterables.size(cache);
+//     }
+
+//     @Override
+//     public CacheType getCacheType() {
+//         return baseCacheLoader.getCacheType();
+//     }
+
+//     private V computeAndCacheValue(final K key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final V value = computeValue(key, cacheLoaderArgument);
+//         if (value == null) {
+//             return null;
+//         }
+
+//         // Race condition, we may compute it for nothing
+//         putIfAbsent(key, value);
+
+//         return value;
+//     }
+
+//     private V computeValue(final K key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final V value;
+//         try {
+//             value = baseCacheLoader.compute(key, cacheLoaderArgument);
+//         } catch (final Exception e) {
+//             // Remove noisy log (might be expected, see https://github.com/killbill/killbill/issues/842)
+//             //logger.warn("Unable to compute cached value for key='{}' and cacheLoaderArgument='{}'", key, cacheLoaderArgument, e);
+//             throw new RuntimeException(e);
+//         }
+//         return value;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/ObjectIdCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/ObjectIdCacheLoader.java
index cda30b6..09d73b7 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/ObjectIdCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/ObjectIdCacheLoader.java
@@ -15,37 +15,37 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.UUID;
+// import java.util.UUID;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.ObjectType;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.dao.NonEntityDao;
-import org.skife.jdbi.v2.Handle;
+// import org.killbill.billing.ObjectType;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.dao.NonEntityDao;
+// import org.skife.jdbi.v2.Handle;
 
-@Singleton
-public class ObjectIdCacheLoader extends BaseIdCacheLoader<UUID> {
+// @Singleton
+// public class ObjectIdCacheLoader extends BaseIdCacheLoader<UUID> {
 
-    private final NonEntityDao nonEntityDao;
+//     private final NonEntityDao nonEntityDao;
 
-    @Inject
-    public ObjectIdCacheLoader(final NonEntityDao nonEntityDao) {
-        super();
-        this.nonEntityDao = nonEntityDao;
-    }
+//     @Inject
+//     public ObjectIdCacheLoader(final NonEntityDao nonEntityDao) {
+//         super();
+//         this.nonEntityDao = nonEntityDao;
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.OBJECT_ID;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.OBJECT_ID;
+//     }
 
-    @Override
-    protected UUID doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle) {
-        final Long recordId = Long.valueOf(rawKey);
-        return nonEntityDao.retrieveIdFromObjectInTransaction(recordId, objectType, null, handle);
-    }
-}
+//     @Override
+//     protected UUID doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle) {
+//         final Long recordId = Long.valueOf(rawKey);
+//         return nonEntityDao.retrieveIdFromObjectInTransaction(recordId, objectType, null, handle);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/OverriddenPlanCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/OverriddenPlanCacheLoader.java
index 79d73b8..8698756 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/OverriddenPlanCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/OverriddenPlanCacheLoader.java
@@ -15,63 +15,63 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.catalog.api.CatalogApiException;
-import org.killbill.billing.catalog.api.Plan;
-import org.killbill.billing.catalog.api.StaticCatalog;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.catalog.api.CatalogApiException;
+// import org.killbill.billing.catalog.api.Plan;
+// import org.killbill.billing.catalog.api.StaticCatalog;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-@Singleton
-public class OverriddenPlanCacheLoader extends BaseCacheLoader<String, Plan> {
+// @Singleton
+// public class OverriddenPlanCacheLoader extends BaseCacheLoader<String, Plan> {
 
-    private final Logger log = LoggerFactory.getLogger(OverriddenPlanCacheLoader.class);
+//     private final Logger log = LoggerFactory.getLogger(OverriddenPlanCacheLoader.class);
 
-    @Inject
-    public OverriddenPlanCacheLoader() {
-        super();
-    }
+//     @Inject
+//     public OverriddenPlanCacheLoader() {
+//         super();
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.OVERRIDDEN_PLAN;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.OVERRIDDEN_PLAN;
+//     }
 
-    @Override
-    public Plan compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
-        if (cacheLoaderArgument.getArgs() == null || cacheLoaderArgument.getArgs().length != 2) {
-            throw new IllegalArgumentException("Invalid arguments for overridden plans");
-        }
-        if (!(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
-            throw new IllegalArgumentException("Invalid arguments for overridden plans: missing loaderCallback from argument");
-        }
+//     @Override
+//     public Plan compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
+//         if (cacheLoaderArgument.getArgs() == null || cacheLoaderArgument.getArgs().length != 2) {
+//             throw new IllegalArgumentException("Invalid arguments for overridden plans");
+//         }
+//         if (!(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
+//             throw new IllegalArgumentException("Invalid arguments for overridden plans: missing loaderCallback from argument");
+//         }
 
-        if (!(cacheLoaderArgument.getArgs()[1] instanceof StaticCatalog)) {
-            throw new IllegalArgumentException("Invalid arguments for overridden plans: missing catalog from argument");
-        }
+//         if (!(cacheLoaderArgument.getArgs()[1] instanceof StaticCatalog)) {
+//             throw new IllegalArgumentException("Invalid arguments for overridden plans: missing catalog from argument");
+//         }
 
-        final String planName = key;
-        final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
-        final StaticCatalog catalog = (StaticCatalog) cacheLoaderArgument.getArgs()[1];
-        final InternalTenantContext internalTenantContext = cacheLoaderArgument.getInternalTenantContext();
-        try {
-            log.info("Loading overridden plan {} for tenant {}", planName, internalTenantContext.getTenantRecordId());
+//         final String planName = key;
+//         final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
+//         final StaticCatalog catalog = (StaticCatalog) cacheLoaderArgument.getArgs()[1];
+//         final InternalTenantContext internalTenantContext = cacheLoaderArgument.getInternalTenantContext();
+//         try {
+//             log.info("Loading overridden plan {} for tenant {}", planName, internalTenantContext.getTenantRecordId());
 
-            return callback.loadPlan(planName, catalog, internalTenantContext);
-        } catch (final CatalogApiException e) {
-            throw new IllegalStateException(String.format("Failed to load overridden plan for tenant %s : %s",
-                                                          planName, internalTenantContext.getTenantRecordId()), e);
-        }
-    }
+//             return callback.loadPlan(planName, catalog, internalTenantContext);
+//         } catch (final CatalogApiException e) {
+//             throw new IllegalStateException(String.format("Failed to load overridden plan for tenant %s : %s",
+//                                                           planName, internalTenantContext.getTenantRecordId()), e);
+//         }
+//     }
 
-    public interface LoaderCallback {
+//     public interface LoaderCallback {
 
-        public Plan loadPlan(final String planName, final StaticCatalog catalog, final InternalTenantContext context) throws CatalogApiException;
-    }
-}
+//         public Plan loadPlan(final String planName, final StaticCatalog catalog, final InternalTenantContext context) throws CatalogApiException;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/RecordIdCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/RecordIdCacheLoader.java
index a7027a8..430a047 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/RecordIdCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/RecordIdCacheLoader.java
@@ -16,36 +16,36 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.UUID;
+// import java.util.UUID;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.ObjectType;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.dao.NonEntityDao;
-import org.skife.jdbi.v2.Handle;
+// import org.killbill.billing.ObjectType;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.dao.NonEntityDao;
+// import org.skife.jdbi.v2.Handle;
 
-@Singleton
-public class RecordIdCacheLoader extends BaseIdCacheLoader<Long> {
+// @Singleton
+// public class RecordIdCacheLoader extends BaseIdCacheLoader<Long> {
 
-    private final NonEntityDao nonEntityDao;
+//     private final NonEntityDao nonEntityDao;
 
-    @Inject
-    public RecordIdCacheLoader(final NonEntityDao nonEntityDao) {
-        super();
-        this.nonEntityDao = nonEntityDao;
-    }
+//     @Inject
+//     public RecordIdCacheLoader(final NonEntityDao nonEntityDao) {
+//         super();
+//         this.nonEntityDao = nonEntityDao;
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.RECORD_ID;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.RECORD_ID;
+//     }
 
-    @Override
-    protected Long doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle) {
-        return nonEntityDao.retrieveRecordIdFromObjectInTransaction(UUID.fromString(rawKey), objectType, null, handle);
-    }
-}
+//     @Override
+//     protected Long doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle) {
+//         return nonEntityDao.retrieveRecordIdFromObjectInTransaction(UUID.fromString(rawKey), objectType, null, handle);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/TenantCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/TenantCacheLoader.java
index 1ed03a5..a89c300 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/TenantCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/TenantCacheLoader.java
@@ -15,38 +15,38 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.killbill.billing.tenant.api.Tenant;
-import org.killbill.billing.tenant.api.TenantApiException;
-import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-
-@Singleton
-public class TenantCacheLoader extends BaseCacheLoader<String, Tenant> {
-
-    private final TenantInternalApi tenantApi;
-
-    @Inject
-    public TenantCacheLoader(final TenantInternalApi tenantApi) {
-        super();
-        this.tenantApi = tenantApi;
-    }
-
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.TENANT;
-    }
-
-    @Override
-    public Tenant compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
-        try {
-            return tenantApi.getTenantByApiKey(key);
-        } catch (final TenantApiException e) {
-            throw new IllegalStateException("TenantCacheLoader cannot find value for key " + key);
-        }
-    }
-}
+// package org.killbill.billing.util.cache;
+
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
+
+// import org.killbill.billing.tenant.api.Tenant;
+// import org.killbill.billing.tenant.api.TenantApiException;
+// import org.killbill.billing.tenant.api.TenantInternalApi;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+
+// @Singleton
+// public class TenantCacheLoader extends BaseCacheLoader<String, Tenant> {
+
+//     private final TenantInternalApi tenantApi;
+
+//     @Inject
+//     public TenantCacheLoader(final TenantInternalApi tenantApi) {
+//         super();
+//         this.tenantApi = tenantApi;
+//     }
+
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.TENANT;
+//     }
+
+//     @Override
+//     public Tenant compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
+//         try {
+//             return tenantApi.getTenantByApiKey(key);
+//         } catch (final TenantApiException e) {
+//             throw new IllegalStateException("TenantCacheLoader cannot find value for key " + key);
+//         }
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/TenantCatalogCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/TenantCatalogCacheLoader.java
index 03a4ee3..8adeff6 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/TenantCatalogCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/TenantCatalogCacheLoader.java
@@ -15,63 +15,63 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.List;
+// import java.util.List;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.catalog.api.Catalog;
-import org.killbill.billing.catalog.api.CatalogApiException;
-import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.catalog.api.Catalog;
+// import org.killbill.billing.catalog.api.CatalogApiException;
+// import org.killbill.billing.tenant.api.TenantInternalApi;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-@Singleton
-public class TenantCatalogCacheLoader extends BaseCacheLoader<Long, Catalog> {
+// @Singleton
+// public class TenantCatalogCacheLoader extends BaseCacheLoader<Long, Catalog> {
 
-    private final Logger log = LoggerFactory.getLogger(TenantCatalogCacheLoader.class);
+//     private final Logger log = LoggerFactory.getLogger(TenantCatalogCacheLoader.class);
 
-    private final TenantInternalApi tenantApi;
+//     private final TenantInternalApi tenantApi;
 
-    @Inject
-    public TenantCatalogCacheLoader(final TenantInternalApi tenantApi) {
-        super();
-        this.tenantApi = tenantApi;
-    }
+//     @Inject
+//     public TenantCatalogCacheLoader(final TenantInternalApi tenantApi) {
+//         super();
+//         this.tenantApi = tenantApi;
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.TENANT_CATALOG;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.TENANT_CATALOG;
+//     }
 
-    @Override
-    public Catalog compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) {
-        final Long tenantRecordId = key;
-        final InternalTenantContext internalTenantContext = new InternalTenantContext(tenantRecordId);
+//     @Override
+//     public Catalog compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final Long tenantRecordId = key;
+//         final InternalTenantContext internalTenantContext = new InternalTenantContext(tenantRecordId);
 
-        if (cacheLoaderArgument.getArgs() == null || !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
-            throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
-        }
+//         if (cacheLoaderArgument.getArgs() == null || !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
+//             throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
+//         }
 
-        final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
-        final List<String> catalogXMLs = tenantApi.getTenantCatalogs(internalTenantContext);
-        if (catalogXMLs.isEmpty()) {
-            return null;
-        }
-        try {
-            log.info("Loading catalog cache for tenantRecordId='{}'", internalTenantContext.getTenantRecordId());
-            return callback.loadCatalog(catalogXMLs, tenantRecordId);
-        } catch (final CatalogApiException e) {
-            throw new IllegalStateException(String.format("Failed to de-serialize catalog for tenantRecordId='%s'", internalTenantContext.getTenantRecordId()), e);
-        }
-    }
+//         final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
+//         final List<String> catalogXMLs = tenantApi.getTenantCatalogs(internalTenantContext);
+//         if (catalogXMLs.isEmpty()) {
+//             return null;
+//         }
+//         try {
+//             log.info("Loading catalog cache for tenantRecordId='{}'", internalTenantContext.getTenantRecordId());
+//             return callback.loadCatalog(catalogXMLs, tenantRecordId);
+//         } catch (final CatalogApiException e) {
+//             throw new IllegalStateException(String.format("Failed to de-serialize catalog for tenantRecordId='%s'", internalTenantContext.getTenantRecordId()), e);
+//         }
+//     }
 
-    public interface LoaderCallback {
+//     public interface LoaderCallback {
 
-        public Catalog loadCatalog(final List<String> catalogXMLs, final Long tenantRecordId) throws CatalogApiException;
-    }
-}
+//         public Catalog loadCatalog(final List<String> catalogXMLs, final Long tenantRecordId) throws CatalogApiException;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/TenantConfigCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/TenantConfigCacheLoader.java
index d71ad0d..b234a1b 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/TenantConfigCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/TenantConfigCacheLoader.java
@@ -15,60 +15,60 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.io.IOException;
+// import java.io.IOException;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.config.tenant.PerTenantConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.tenant.api.TenantInternalApi;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.config.tenant.PerTenantConfig;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-@Singleton
-public class TenantConfigCacheLoader extends BaseCacheLoader<Long, PerTenantConfig> {
+// @Singleton
+// public class TenantConfigCacheLoader extends BaseCacheLoader<Long, PerTenantConfig> {
 
-    private final Logger log = LoggerFactory.getLogger(TenantConfigCacheLoader.class);
+//     private final Logger log = LoggerFactory.getLogger(TenantConfigCacheLoader.class);
 
-    private final TenantInternalApi tenantApi;
+//     private final TenantInternalApi tenantApi;
 
-    @Inject
-    public TenantConfigCacheLoader(final TenantInternalApi tenantApi) {
-        super();
-        this.tenantApi = tenantApi;
-    }
+//     @Inject
+//     public TenantConfigCacheLoader(final TenantInternalApi tenantApi) {
+//         super();
+//         this.tenantApi = tenantApi;
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.TENANT_CONFIG;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.TENANT_CONFIG;
+//     }
 
-    @Override
-    public PerTenantConfig compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) {
-        final Long tenantRecordId = key;
-        final InternalTenantContext internalTenantContext = new InternalTenantContext(tenantRecordId);
+//     @Override
+//     public PerTenantConfig compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final Long tenantRecordId = key;
+//         final InternalTenantContext internalTenantContext = new InternalTenantContext(tenantRecordId);
 
-        if (cacheLoaderArgument.getArgs() == null || !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
-            throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
-        }
+//         if (cacheLoaderArgument.getArgs() == null || !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
+//             throw new IllegalArgumentException("Missing LoaderCallback from the arguments ");
+//         }
 
-        final LoaderCallback loader = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
+//         final LoaderCallback loader = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
 
-        final String jsonValue = tenantApi.getTenantConfig(internalTenantContext);
+//         final String jsonValue = tenantApi.getTenantConfig(internalTenantContext);
 
-        try {
-            return loader.loadConfig(jsonValue);
-        } catch (final IOException e) {
-            throw new IllegalArgumentException("Failed to deserialize per tenant config for tenant recordId = " + tenantRecordId, e);
-        }
-    }
+//         try {
+//             return loader.loadConfig(jsonValue);
+//         } catch (final IOException e) {
+//             throw new IllegalArgumentException("Failed to deserialize per tenant config for tenant recordId = " + tenantRecordId, e);
+//         }
+//     }
 
-    public interface LoaderCallback {
+//     public interface LoaderCallback {
 
-        public PerTenantConfig loadConfig(final String inputJson) throws IOException;
-    }
-}
+//         public PerTenantConfig loadConfig(final String inputJson) throws IOException;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/TenantKVCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/TenantKVCacheLoader.java
index 5dcbca5..cfc4836 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/TenantKVCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/TenantKVCacheLoader.java
@@ -15,47 +15,47 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
-
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-
-@Singleton
-public class TenantKVCacheLoader extends BaseCacheLoader<String, String> {
-
-    private final TenantInternalApi tenantApi;
-
-    @Inject
-    public TenantKVCacheLoader(final TenantInternalApi tenantApi) {
-        super();
-        this.tenantApi = tenantApi;
-    }
-
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.TENANT_KV;
-    }
-
-    @Override
-    public String compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
-        final String[] parts = key.split(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
-        final String rawKey = parts[0];
-        final String tenantRecordId = parts[1];
-
-        final InternalTenantContext internalTenantContext = new InternalTenantContext(Long.valueOf(tenantRecordId));
-        final List<String> valuesForKey = tenantApi.getTenantValuesForKey(rawKey, internalTenantContext);
-        if (valuesForKey == null || valuesForKey.isEmpty()) {
-            return EMPTY_VALUE_PLACEHOLDER;
-        }
-        if (valuesForKey.size() > 1) {
-            throw new IllegalStateException("TenantKVCacheLoader expecting no more than one value for key " + key);
-        }
-        return valuesForKey.get(0);
-    }
-}
+// package org.killbill.billing.util.cache;
+
+// import java.util.List;
+
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
+
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.tenant.api.TenantInternalApi;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+
+// @Singleton
+// public class TenantKVCacheLoader extends BaseCacheLoader<String, String> {
+
+//     private final TenantInternalApi tenantApi;
+
+//     @Inject
+//     public TenantKVCacheLoader(final TenantInternalApi tenantApi) {
+//         super();
+//         this.tenantApi = tenantApi;
+//     }
+
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.TENANT_KV;
+//     }
+
+//     @Override
+//     public String compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final String[] parts = key.split(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
+//         final String rawKey = parts[0];
+//         final String tenantRecordId = parts[1];
+
+//         final InternalTenantContext internalTenantContext = new InternalTenantContext(Long.valueOf(tenantRecordId));
+//         final List<String> valuesForKey = tenantApi.getTenantValuesForKey(rawKey, internalTenantContext);
+//         if (valuesForKey == null || valuesForKey.isEmpty()) {
+//             return EMPTY_VALUE_PLACEHOLDER;
+//         }
+//         if (valuesForKey.size() > 1) {
+//             throw new IllegalStateException("TenantKVCacheLoader expecting no more than one value for key " + key);
+//         }
+//         return valuesForKey.get(0);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/TenantOverdueConfigCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/TenantOverdueConfigCacheLoader.java
index 6c95814..43aad58 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/TenantOverdueConfigCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/TenantOverdueConfigCacheLoader.java
@@ -15,63 +15,63 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.overdue.api.OverdueApiException;
-import org.killbill.billing.overdue.api.OverdueConfig;
-import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.overdue.api.OverdueApiException;
+// import org.killbill.billing.overdue.api.OverdueConfig;
+// import org.killbill.billing.tenant.api.TenantInternalApi;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-@Singleton
-public class TenantOverdueConfigCacheLoader extends BaseCacheLoader<Long, Object> {
+// @Singleton
+// public class TenantOverdueConfigCacheLoader extends BaseCacheLoader<Long, Object> {
 
-    private static final Logger log = LoggerFactory.getLogger(TenantOverdueConfigCacheLoader.class);
+//     private static final Logger log = LoggerFactory.getLogger(TenantOverdueConfigCacheLoader.class);
 
-    private final TenantInternalApi tenantApi;
+//     private final TenantInternalApi tenantApi;
 
-    @Inject
-    public TenantOverdueConfigCacheLoader(final TenantInternalApi tenantApi) {
-        super();
-        this.tenantApi = tenantApi;
-    }
+//     @Inject
+//     public TenantOverdueConfigCacheLoader(final TenantInternalApi tenantApi) {
+//         super();
+//         this.tenantApi = tenantApi;
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.TENANT_OVERDUE_CONFIG;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.TENANT_OVERDUE_CONFIG;
+//     }
 
-    @Override
-    public Object compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) {
-        final Long tenantRecordId = key;
-        final InternalTenantContext internalTenantContext = new InternalTenantContext(tenantRecordId);
+//     @Override
+//     public Object compute(final Long key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final Long tenantRecordId = key;
+//         final InternalTenantContext internalTenantContext = new InternalTenantContext(tenantRecordId);
 
-        if (cacheLoaderArgument.getArgs() == null || !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
-            throw new IllegalArgumentException("Missing LoaderCallback from the arguments");
-        }
+//         if (cacheLoaderArgument.getArgs() == null || !(cacheLoaderArgument.getArgs()[0] instanceof LoaderCallback)) {
+//             throw new IllegalArgumentException("Missing LoaderCallback from the arguments");
+//         }
 
-        final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
-        final String overdueXML = tenantApi.getTenantOverdueConfig(internalTenantContext);
-        if (overdueXML == null) {
-            return EMPTY_VALUE_PLACEHOLDER;
-        }
-        try {
-            log.info("Loading overdue cache for tenant " + internalTenantContext.getTenantRecordId());
+//         final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
+//         final String overdueXML = tenantApi.getTenantOverdueConfig(internalTenantContext);
+//         if (overdueXML == null) {
+//             return EMPTY_VALUE_PLACEHOLDER;
+//         }
+//         try {
+//             log.info("Loading overdue cache for tenant " + internalTenantContext.getTenantRecordId());
 
-            return callback.loadOverdueConfig(overdueXML);
-        } catch (final OverdueApiException e) {
-            throw new IllegalStateException(String.format("Failed to de-serialize overdue config for tenant %s : %s",
-                                                          internalTenantContext.getTenantRecordId(), e.getMessage()), e);
-        }
-    }
+//             return callback.loadOverdueConfig(overdueXML);
+//         } catch (final OverdueApiException e) {
+//             throw new IllegalStateException(String.format("Failed to de-serialize overdue config for tenant %s : %s",
+//                                                           internalTenantContext.getTenantRecordId(), e.getMessage()), e);
+//         }
+//     }
 
-    public interface LoaderCallback {
+//     public interface LoaderCallback {
 
-        public OverdueConfig loadOverdueConfig(final String overdueConfigXML) throws OverdueApiException;
-    }
-}
+//         public OverdueConfig loadOverdueConfig(final String overdueConfigXML) throws OverdueApiException;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/TenantRecordIdCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/TenantRecordIdCacheLoader.java
index 1144e59..895b0d0 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/TenantRecordIdCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/TenantRecordIdCacheLoader.java
@@ -16,36 +16,36 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.UUID;
+// import java.util.UUID;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.ObjectType;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.dao.NonEntityDao;
-import org.skife.jdbi.v2.Handle;
+// import org.killbill.billing.ObjectType;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.dao.NonEntityDao;
+// import org.skife.jdbi.v2.Handle;
 
-@Singleton
-public class TenantRecordIdCacheLoader extends BaseIdCacheLoader<Long> {
+// @Singleton
+// public class TenantRecordIdCacheLoader extends BaseIdCacheLoader<Long> {
 
-    private final NonEntityDao nonEntityDao;
+//     private final NonEntityDao nonEntityDao;
 
-    @Inject
-    public TenantRecordIdCacheLoader(final NonEntityDao nonEntityDao) {
-        super();
-        this.nonEntityDao = nonEntityDao;
-    }
+//     @Inject
+//     public TenantRecordIdCacheLoader(final NonEntityDao nonEntityDao) {
+//         super();
+//         this.nonEntityDao = nonEntityDao;
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.TENANT_RECORD_ID;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.TENANT_RECORD_ID;
+//     }
 
-    @Override
-    protected Long doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle) {
-        return nonEntityDao.retrieveTenantRecordIdFromObjectInTransaction(UUID.fromString(rawKey), objectType, null, handle);
-    }
-}
+//     @Override
+//     protected Long doRetrieveOperation(final String rawKey, final ObjectType objectType, final Handle handle) {
+//         return nonEntityDao.retrieveTenantRecordIdFromObjectInTransaction(UUID.fromString(rawKey), objectType, null, handle);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/cache/TenantStateMachineConfigCacheLoader.java b/util/src/main/java/org/killbill/billing/util/cache/TenantStateMachineConfigCacheLoader.java
index 6ef8e00..3634b1b 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/TenantStateMachineConfigCacheLoader.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/TenantStateMachineConfigCacheLoader.java
@@ -15,70 +15,70 @@
  * under the License.
  */
 
-package org.killbill.billing.util.cache;
+// package org.killbill.billing.util.cache;
 
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+// import java.util.regex.Matcher;
+// import java.util.regex.Pattern;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+// import javax.inject.Inject;
+// import javax.inject.Singleton;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.payment.api.PaymentApiException;
-import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.tenant.api.TenantKV.TenantKey;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.payment.api.PaymentApiException;
+// import org.killbill.billing.tenant.api.TenantInternalApi;
+// import org.killbill.billing.tenant.api.TenantKV.TenantKey;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-@Singleton
-public class TenantStateMachineConfigCacheLoader extends BaseCacheLoader<String, Object> {
+// @Singleton
+// public class TenantStateMachineConfigCacheLoader extends BaseCacheLoader<String, Object> {
 
-    private static final Pattern PATTERN = Pattern.compile(TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_.toString() + "(.*)");
-    private static final Logger log = LoggerFactory.getLogger(TenantStateMachineConfigCacheLoader.class);
+//     private static final Pattern PATTERN = Pattern.compile(TenantKey.PLUGIN_PAYMENT_STATE_MACHINE_.toString() + "(.*)");
+//     private static final Logger log = LoggerFactory.getLogger(TenantStateMachineConfigCacheLoader.class);
 
-    private final TenantInternalApi tenantApi;
+//     private final TenantInternalApi tenantApi;
 
-    @Inject
-    public TenantStateMachineConfigCacheLoader(final TenantInternalApi tenantApi) {
-        super();
-        this.tenantApi = tenantApi;
-    }
+//     @Inject
+//     public TenantStateMachineConfigCacheLoader(final TenantInternalApi tenantApi) {
+//         super();
+//         this.tenantApi = tenantApi;
+//     }
 
-    @Override
-    public CacheType getCacheType() {
-        return CacheType.TENANT_PAYMENT_STATE_MACHINE_CONFIG;
-    }
+//     @Override
+//     public CacheType getCacheType() {
+//         return CacheType.TENANT_PAYMENT_STATE_MACHINE_CONFIG;
+//     }
 
-    @Override
-    public Object compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
-        final String[] parts = key.split(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
-        final String rawKey = parts[0];
-        final Matcher matcher = PATTERN.matcher(rawKey);
-        if (!matcher.matches()) {
-            throw new IllegalArgumentException("Unexpected key " + rawKey);
-        }
-        final String pluginName = matcher.group(1);
-        final String tenantRecordId = parts[1];
+//     @Override
+//     public Object compute(final String key, final CacheLoaderArgument cacheLoaderArgument) {
+//         final String[] parts = key.split(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
+//         final String rawKey = parts[0];
+//         final Matcher matcher = PATTERN.matcher(rawKey);
+//         if (!matcher.matches()) {
+//             throw new IllegalArgumentException("Unexpected key " + rawKey);
+//         }
+//         final String pluginName = matcher.group(1);
+//         final String tenantRecordId = parts[1];
 
-        final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
+//         final LoaderCallback callback = (LoaderCallback) cacheLoaderArgument.getArgs()[0];
 
-        final InternalTenantContext internalTenantContext = new InternalTenantContext(Long.valueOf(tenantRecordId));
-        final String stateMachineConfigXML = tenantApi.getPluginPaymentStateMachineConfig(pluginName, internalTenantContext);
-        if (stateMachineConfigXML == null) {
-            return null;
-        }
+//         final InternalTenantContext internalTenantContext = new InternalTenantContext(Long.valueOf(tenantRecordId));
+//         final String stateMachineConfigXML = tenantApi.getPluginPaymentStateMachineConfig(pluginName, internalTenantContext);
+//         if (stateMachineConfigXML == null) {
+//             return null;
+//         }
 
-        try {
-            log.info("Loading config state machine cache for pluginName='{}', tenantRecordId='{}'", pluginName, internalTenantContext.getTenantRecordId());
-            return callback.loadStateMachineConfig(stateMachineConfigXML);
-        } catch (final PaymentApiException e) {
-            throw new IllegalStateException(String.format("Failed to de-serialize state machine config for tenantRecordId='%s'", internalTenantContext.getTenantRecordId()), e);
-        }
-    }
+//         try {
+//             log.info("Loading config state machine cache for pluginName='{}', tenantRecordId='{}'", pluginName, internalTenantContext.getTenantRecordId());
+//             return callback.loadStateMachineConfig(stateMachineConfigXML);
+//         } catch (final PaymentApiException e) {
+//             throw new IllegalStateException(String.format("Failed to de-serialize state machine config for tenantRecordId='%s'", internalTenantContext.getTenantRecordId()), e);
+//         }
+//     }
 
-    public interface LoaderCallback {
+//     public interface LoaderCallback {
 
-        public Object loadStateMachineConfig(final String stateMachineConfigXML) throws PaymentApiException;
-    }
-}
+//         public Object loadStateMachineConfig(final String stateMachineConfigXML) throws PaymentApiException;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java b/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java
index c4f9a6f..ed15ba1 100644
--- a/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java
+++ b/util/src/main/java/org/killbill/billing/util/callcontext/InternalCallContextFactory.java
@@ -32,9 +32,9 @@ import org.killbill.billing.account.api.ImmutableAccountInternalApi;
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.util.account.AccountDateTimeUtils;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.dao.TimeZoneAwareEntity;
 import org.killbill.clock.Clock;
@@ -56,30 +56,32 @@ public class InternalCallContextFactory {
     private final ImmutableAccountInternalApi accountInternalApi;
     private final Clock clock;
     private final NonEntityDao nonEntityDao;
-    private final CacheController<String, UUID> objectIdCacheController;
-    private final CacheController<String, Long> recordIdCacheController;
-    private final CacheController<String, Long> accountRecordIdCacheController;
-    private final CacheController<String, Long> tenantRecordIdCacheController;
+    // private final CacheController<String, UUID> objectIdCacheController;
+    // private final CacheController<String, Long> recordIdCacheController;
+    // private final CacheController<String, Long> accountRecordIdCacheController;
+    // private final CacheController<String, Long> tenantRecordIdCacheController;
 
     @Inject
     public InternalCallContextFactory(@Nullable final ImmutableAccountInternalApi accountInternalApi,
                                       final Clock clock,
-                                      final NonEntityDao nonEntityDao,
-                                      @Nullable final CacheControllerDispatcher cacheControllerDispatcher) {
+                                      final NonEntityDao nonEntityDao
+                                      // ,
+                                      // @Nullable final CacheControllerDispatcher cacheControllerDispatcher
+                                      ) {
         this.accountInternalApi = accountInternalApi;
         this.clock = clock;
         this.nonEntityDao = nonEntityDao;
-        if (cacheControllerDispatcher == null) {
-            this.objectIdCacheController = null;
-            this.recordIdCacheController = null;
-            this.accountRecordIdCacheController = null;
-            this.tenantRecordIdCacheController = null;
-        } else {
-            this.objectIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
-            this.recordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.RECORD_ID);
-            this.accountRecordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_RECORD_ID);
-            this.tenantRecordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_RECORD_ID);
-        }
+        // if (cacheControllerDispatcher == null) {
+        //     this.objectIdCacheController = null;
+        //     this.recordIdCacheController = null;
+        //     this.accountRecordIdCacheController = null;
+        //     this.tenantRecordIdCacheController = null;
+        // } else {
+        //     this.objectIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
+        //     this.recordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.RECORD_ID);
+        //     this.accountRecordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_RECORD_ID);
+        //     this.tenantRecordIdCacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_RECORD_ID);
+        // }
     }
 
     //
@@ -344,7 +346,7 @@ public class InternalCallContextFactory {
     public UUID getAccountId(final UUID objectId, final ObjectType objectType, final TenantContext context) {
         final Long accountRecordId = getAccountRecordIdSafe(objectId, objectType, context);
         if (accountRecordId != null) {
-            return nonEntityDao.retrieveIdFromObject(accountRecordId, ObjectType.ACCOUNT, objectIdCacheController);
+            return nonEntityDao.retrieveIdFromObject(accountRecordId, ObjectType.ACCOUNT, null);
         } else {
             return null;
         }
@@ -354,7 +356,7 @@ public class InternalCallContextFactory {
     public Long getRecordIdFromObject(final UUID objectId, final ObjectType objectType, final TenantContext context) {
         try {
             if (objectBelongsToTheRightTenant(objectId, objectType, context)) {
-                return nonEntityDao.retrieveRecordIdFromObject(objectId, objectType, recordIdCacheController);
+                return nonEntityDao.retrieveRecordIdFromObject(objectId, objectType, null);
             } else {
                 return null;
             }
@@ -395,11 +397,11 @@ public class InternalCallContextFactory {
     }
 
     private UUID getTenantIdSafe(final InternalTenantContext context) {
-        return nonEntityDao.retrieveIdFromObject(context.getTenantRecordId(), ObjectType.TENANT, objectIdCacheController);
+        return nonEntityDao.retrieveIdFromObject(context.getTenantRecordId(), ObjectType.TENANT, null);
     }
 
     private UUID getAccountIdSafe(final InternalTenantContext context) {
-        return context.getAccountRecordId() != null ? nonEntityDao.retrieveIdFromObject(context.getAccountRecordId(), ObjectType.ACCOUNT, objectIdCacheController) : null;
+        return context.getAccountRecordId() != null ? nonEntityDao.retrieveIdFromObject(context.getAccountRecordId(), ObjectType.ACCOUNT, null) : null;
     }
 
     //
@@ -427,11 +429,11 @@ public class InternalCallContextFactory {
     //
 
     private Long getAccountRecordIdUnsafe(final UUID objectId, final ObjectType objectType) {
-        return nonEntityDao.retrieveAccountRecordIdFromObject(objectId, objectType, accountRecordIdCacheController);
+        return nonEntityDao.retrieveAccountRecordIdFromObject(objectId, objectType, null);
     }
 
     private Long getTenantRecordIdUnsafe(final UUID objectId, final ObjectType objectType) {
-        return nonEntityDao.retrieveTenantRecordIdFromObject(objectId, objectType, tenantRecordIdCacheController);
+        return nonEntityDao.retrieveTenantRecordIdFromObject(objectId, objectType, null);
     }
 
     public static final class ObjectDoesNotExist extends IllegalStateException {
diff --git a/util/src/main/java/org/killbill/billing/util/config/DefaultConfigKillbillService.java b/util/src/main/java/org/killbill/billing/util/config/DefaultConfigKillbillService.java
index cf83f68..6a1b709 100644
--- a/util/src/main/java/org/killbill/billing/util/config/DefaultConfigKillbillService.java
+++ b/util/src/main/java/org/killbill/billing/util/config/DefaultConfigKillbillService.java
@@ -23,9 +23,9 @@ import javax.inject.Named;
 import org.killbill.billing.platform.api.LifecycleHandlerType;
 import org.killbill.billing.platform.api.LifecycleHandlerType.LifecycleLevel;
 import org.killbill.billing.tenant.api.TenantInternalApi;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
 import org.killbill.billing.tenant.api.TenantKV.TenantKey;
-import org.killbill.billing.util.glue.CacheModule;
+// import org.killbill.billing.util.glue.CacheModule;
 import org.killbill.billing.util.glue.ConfigModule;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,12 +35,12 @@ public class DefaultConfigKillbillService implements ConfigKillbillService {
     private static final Logger logger = LoggerFactory.getLogger(DefaultConfigKillbillService.class);
 
     private final TenantInternalApi tenantInternalApi;
-    private final CacheInvalidationCallback cacheInvalidationCallback;
+    // private final CacheInvalidationCallback cacheInvalidationCallback;
 
     @Inject
-    public DefaultConfigKillbillService(final TenantInternalApi tenantInternalApi, @Named(ConfigModule.CONFIG_INVALIDATION_CALLBACK) final CacheInvalidationCallback cacheInvalidationCallback) {
+    public DefaultConfigKillbillService(final TenantInternalApi tenantInternalApi ){//, @Named(ConfigModule.CONFIG_INVALIDATION_CALLBACK) final CacheInvalidationCallback cacheInvalidationCallback) {
         this.tenantInternalApi = tenantInternalApi;
-        this.cacheInvalidationCallback = cacheInvalidationCallback;
+        // this.cacheInvalidationCallback = cacheInvalidationCallback;
     }
 
     @Override
@@ -55,7 +55,7 @@ public class DefaultConfigKillbillService implements ConfigKillbillService {
 
     @LifecycleHandlerType(LifecycleLevel.INIT_SERVICE)
     public synchronized void initialize() throws ServiceException {
-        tenantInternalApi.initializeCacheInvalidationCallback(TenantKey.PER_TENANT_CONFIG, cacheInvalidationCallback);
+        // tenantInternalApi.initializeCacheInvalidationCallback(TenantKey.PER_TENANT_CONFIG, cacheInvalidationCallback);
     }
 
 }
diff --git a/util/src/main/java/org/killbill/billing/util/config/definition/EhCacheConfig.java b/util/src/main/java/org/killbill/billing/util/config/definition/EhCacheConfig.java
index 8a105ce..4e19bba 100644
--- a/util/src/main/java/org/killbill/billing/util/config/definition/EhCacheConfig.java
+++ b/util/src/main/java/org/killbill/billing/util/config/definition/EhCacheConfig.java
@@ -15,17 +15,17 @@
  * under the License.
  */
 
-package org.killbill.billing.util.config.definition;
+// package org.killbill.billing.util.config.definition;
 
-import org.skife.config.Config;
-import org.skife.config.Default;
-import org.skife.config.Description;
+// import org.skife.config.Config;
+// import org.skife.config.Default;
+// import org.skife.config.Description;
 
-public interface EhCacheConfig extends KillbillConfig {
+// public interface EhCacheConfig extends KillbillConfig {
 
-    @Config("org.killbill.cache.config.location")
-    @Default("ehcache.xml")
-    @Description("Path to Ehcache XML configuration")
-    public String getCacheConfigLocation();
+//     @Config("org.killbill.cache.config.location")
+//     @Default("ehcache.xml")
+//     @Description("Path to Ehcache XML configuration")
+//     public String getCacheConfigLocation();
 
-}
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/config/definition/RedisCacheConfig.java b/util/src/main/java/org/killbill/billing/util/config/definition/RedisCacheConfig.java
index cbe8f34..26d64b8 100644
--- a/util/src/main/java/org/killbill/billing/util/config/definition/RedisCacheConfig.java
+++ b/util/src/main/java/org/killbill/billing/util/config/definition/RedisCacheConfig.java
@@ -15,26 +15,26 @@
  * under the License.
  */
 
-package org.killbill.billing.util.config.definition;
+// package org.killbill.billing.util.config.definition;
 
-import org.skife.config.Config;
-import org.skife.config.Default;
-import org.skife.config.Description;
+// import org.skife.config.Config;
+// import org.skife.config.Default;
+// import org.skife.config.Description;
 
-public interface RedisCacheConfig extends KillbillConfig {
+// public interface RedisCacheConfig extends KillbillConfig {
 
-    @Config("org.killbill.cache.config.redis")
-    @Default("false")
-    @Description("Whether Redis integration for caching is enabled")
-    public boolean isRedisCachingEnabled();
+//     @Config("org.killbill.cache.config.redis")
+//     @Default("false")
+//     @Description("Whether Redis integration for caching is enabled")
+//     public boolean isRedisCachingEnabled();
 
-    @Config("org.killbill.cache.config.redis.url")
-    @Default("redis://127.0.0.1:6379")
-    @Description("Redis URL")
-    public String getUrl();
+//     @Config("org.killbill.cache.config.redis.url")
+//     @Default("redis://127.0.0.1:6379")
+//     @Description("Redis URL")
+//     public String getUrl();
 
-    @Config("org.killbill.cache.config.redis.connectionMinimumIdleSize")
-    @Default("1")
-    @Description("Minimum number of connections")
-    public int getConnectionMinimumIdleSize();
-}
+//     @Config("org.killbill.cache.config.redis.connectionMinimumIdleSize")
+//     @Default("1")
+//     @Description("Minimum number of connections")
+//     public int getConnectionMinimumIdleSize();
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/config/tenant/CacheConfig.java b/util/src/main/java/org/killbill/billing/util/config/tenant/CacheConfig.java
index 789cc0b..2e51d4f 100644
--- a/util/src/main/java/org/killbill/billing/util/config/tenant/CacheConfig.java
+++ b/util/src/main/java/org/killbill/billing/util/config/tenant/CacheConfig.java
@@ -15,58 +15,58 @@
  * under the License.
  */
 
-package org.killbill.billing.util.config.tenant;
+// package org.killbill.billing.util.config.tenant;
 
-import java.io.IOException;
+// import java.io.IOException;
 
-import javax.annotation.Nullable;
+// import javax.annotation.Nullable;
 
-import org.killbill.billing.ObjectType;
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
-import org.killbill.billing.util.cache.TenantConfigCacheLoader.LoaderCallback;
-import org.killbill.billing.util.jackson.ObjectMapper;
+// import org.killbill.billing.ObjectType;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.TenantConfigCacheLoader.LoaderCallback;
+// import org.killbill.billing.util.jackson.ObjectMapper;
 
-import com.google.inject.Inject;
+// import com.google.inject.Inject;
 
-public class CacheConfig {
+// public class CacheConfig {
 
-    private final CacheController<Long, PerTenantConfig> cacheController;
-    private final CacheLoaderArgument cacheLoaderArgument;
+//     private final CacheController<Long, PerTenantConfig> cacheController;
+//     private final CacheLoaderArgument cacheLoaderArgument;
 
-    private final ObjectMapper objectMapper;
+//     private final ObjectMapper objectMapper;
 
-    @Inject
-    public CacheConfig(final CacheControllerDispatcher cacheControllerDispatcher) {
-        this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_CONFIG);
-        this.objectMapper = new ObjectMapper();
-        this.cacheLoaderArgument = initializeCacheLoaderArgument();
+//     @Inject
+//     public CacheConfig(final CacheControllerDispatcher cacheControllerDispatcher) {
+//         this.cacheController = cacheControllerDispatcher.getCacheController(CacheType.TENANT_CONFIG);
+//         this.objectMapper = new ObjectMapper();
+//         this.cacheLoaderArgument = initializeCacheLoaderArgument();
 
-    }
+//     }
 
-    public PerTenantConfig getPerTenantConfig(final InternalTenantContext tenantContext) {
-        final PerTenantConfig perTenantConfig = cacheController.get(tenantContext.getTenantRecordId(), cacheLoaderArgument);
-        return perTenantConfig;
-    }
+//     public PerTenantConfig getPerTenantConfig(final InternalTenantContext tenantContext) {
+//         final PerTenantConfig perTenantConfig = cacheController.get(tenantContext.getTenantRecordId(), cacheLoaderArgument);
+//         return perTenantConfig;
+//     }
 
-    public void clearPerTenantConfig(final InternalTenantContext tenantContext) {
-        cacheController.remove(tenantContext.getTenantRecordId());
-    }
+//     public void clearPerTenantConfig(final InternalTenantContext tenantContext) {
+//         cacheController.remove(tenantContext.getTenantRecordId());
+//     }
 
-    private CacheLoaderArgument initializeCacheLoaderArgument() {
-        final LoaderCallback loaderCallback = new LoaderCallback() {
-            @Override
-            public PerTenantConfig loadConfig(@Nullable final String inputJson) throws IOException {
-                return inputJson != null ? objectMapper.readValue(inputJson, PerTenantConfig.class) : new PerTenantConfig();
-            }
-        };
-        final Object[] args = new Object[1];
-        args[0] = loaderCallback;
-        final ObjectType irrelevant = null;
-        final InternalTenantContext notUsed = null;
-        return new CacheLoaderArgument(irrelevant, args, notUsed);
-    }
-}
+//     private CacheLoaderArgument initializeCacheLoaderArgument() {
+//         final LoaderCallback loaderCallback = new LoaderCallback() {
+//             @Override
+//             public PerTenantConfig loadConfig(@Nullable final String inputJson) throws IOException {
+//                 return inputJson != null ? objectMapper.readValue(inputJson, PerTenantConfig.class) : new PerTenantConfig();
+//             }
+//         };
+//         final Object[] args = new Object[1];
+//         args[0] = loaderCallback;
+//         final ObjectType irrelevant = null;
+//         final InternalTenantContext notUsed = null;
+//         return new CacheLoaderArgument(irrelevant, args, notUsed);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/config/tenant/MultiTenantConfigBase.java b/util/src/main/java/org/killbill/billing/util/config/tenant/MultiTenantConfigBase.java
index 10c9e38..0cd2544 100644
--- a/util/src/main/java/org/killbill/billing/util/config/tenant/MultiTenantConfigBase.java
+++ b/util/src/main/java/org/killbill/billing/util/config/tenant/MultiTenantConfigBase.java
@@ -34,8 +34,8 @@ import com.google.common.collect.Iterables;
 
 public abstract class MultiTenantConfigBase {
 
-    private final Map<String, Method> methodsCache = new HashMap<String, Method>();
-    protected final CacheConfig cacheConfig;
+    // private final Map<String, Method> methodsCache = new HashMap<String, Method>();
+    // protected final CacheConfig cacheConfig;
 
     private final static Function<String, Integer> INT_CONVERTER = new Function<String, Integer>() {
         @Override
@@ -51,8 +51,8 @@ public abstract class MultiTenantConfigBase {
         }
     };
 
-    public MultiTenantConfigBase(final CacheConfig cacheConfig) {
-        this.cacheConfig = cacheConfig;
+    public MultiTenantConfigBase() {
+        // this.cacheConfig = cacheConfig;
     }
 
     //
@@ -88,13 +88,13 @@ public abstract class MultiTenantConfigBase {
     }
 
     private String getCachedValue(final Config annotation, final InternalTenantContext tenantContext) {
-        final PerTenantConfig perTenantConfig = cacheConfig.getPerTenantConfig(tenantContext);
-        for (final String propertyName : annotation.value()) {
-            final String result = perTenantConfig.get(propertyName);
-            if (result != null) {
-                return result;
-            }
-        }
+        // final PerTenantConfig perTenantConfig = cacheConfig.getPerTenantConfig(tenantContext);
+        // for (final String propertyName : annotation.value()) {
+        //     final String result = perTenantConfig.get(propertyName);
+        //     if (result != null) {
+        //         return result;
+        //     }
+        // }
         return null;
     }
 
@@ -116,20 +116,21 @@ public abstract class MultiTenantConfigBase {
     }
 
     protected Method getConfigStaticMethod(final String methodName) {
-        Method method = methodsCache.get(methodName);
-        if (method == null) {
-            synchronized (methodsCache) {
-                method = methodsCache.get(methodName);
-                if (method == null) {
+        // Method method = methodsCache.get(methodName);
+        Method method = null;
+        // if (method == null) {
+            // synchronized (methodsCache) {
+                // method = methodsCache.get(methodName);
+                // if (method == null) {
                     try {
                         method = getConfigClass().getMethod(methodName, InternalTenantContext.class);
-                        methodsCache.put(methodName, method);
+                        // methodsCache.put(methodName, method);
                     } catch (final NoSuchMethodException e) {
                         throw new RuntimeException(e);
                     }
-                }
-            }
-        }
+                // }
+            // }
+        // }
         return method;
     }
 
diff --git a/util/src/main/java/org/killbill/billing/util/config/tenant/PerTenantConfigInvalidationCallback.java b/util/src/main/java/org/killbill/billing/util/config/tenant/PerTenantConfigInvalidationCallback.java
index bbc9a97..3c857ca 100644
--- a/util/src/main/java/org/killbill/billing/util/config/tenant/PerTenantConfigInvalidationCallback.java
+++ b/util/src/main/java/org/killbill/billing/util/config/tenant/PerTenantConfigInvalidationCallback.java
@@ -15,31 +15,31 @@
  * under the License.
  */
 
-package org.killbill.billing.util.config.tenant;
+// package org.killbill.billing.util.config.tenant;
 
-import javax.inject.Inject;
+// import javax.inject.Inject;
 
-import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
-import org.killbill.billing.tenant.api.TenantKV.TenantKey;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.callcontext.InternalTenantContext;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantKV.TenantKey;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-public class PerTenantConfigInvalidationCallback implements CacheInvalidationCallback {
+// public class PerTenantConfigInvalidationCallback implements CacheInvalidationCallback {
 
 
-    private final Logger log = LoggerFactory.getLogger(PerTenantConfigInvalidationCallback.class);
+//     private final Logger log = LoggerFactory.getLogger(PerTenantConfigInvalidationCallback.class);
 
-    private final CacheConfig cacheConfig;
+//     private final CacheConfig cacheConfig;
 
-    @Inject
-    public PerTenantConfigInvalidationCallback(final CacheConfig cacheConfig) {
-        this.cacheConfig = cacheConfig;
-    }
+//     @Inject
+//     public PerTenantConfigInvalidationCallback(final CacheConfig cacheConfig) {
+//         this.cacheConfig = cacheConfig;
+//     }
 
-    @Override
-    public void invalidateCache(final TenantKey key, final Object cookie, final InternalTenantContext tenantContext) {
-        log.info("Invalidate config cache for tenant {} ", tenantContext.getTenantRecordId());
-        cacheConfig.clearPerTenantConfig(tenantContext);
-    }
-}
+//     @Override
+//     public void invalidateCache(final TenantKey key, final Object cookie, final InternalTenantContext tenantContext) {
+//         log.info("Invalidate config cache for tenant {} ", tenantContext.getTenantRecordId());
+//         cacheConfig.clearPerTenantConfig(tenantContext);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java b/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java
index 1677cc8..626e138 100644
--- a/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java
+++ b/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java
@@ -36,7 +36,7 @@ import org.killbill.billing.util.api.CustomFieldApiException;
 import org.killbill.billing.util.audit.AuditLogWithHistory;
 import org.killbill.billing.util.audit.ChangeType;
 import org.killbill.billing.util.audit.dao.AuditDao;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.customfield.CustomField;
 import org.killbill.billing.util.customfield.api.DefaultCustomFieldCreationEvent;
@@ -74,9 +74,11 @@ public class DefaultCustomFieldDao extends EntityDaoBase<CustomFieldModelDao, Cu
     private final AuditDao auditDao;
 
     @Inject
-    public DefaultCustomFieldDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, final CacheControllerDispatcher controllerDispatcher,
+    public DefaultCustomFieldDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final Clock clock, // final CacheControllerDispatcher controllerDispatcher,
                                  final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory, final PersistentBus bus, final AuditDao auditDao) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, controllerDispatcher, nonEntityDao, internalCallContextFactory), CustomFieldSqlDao.class);
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+            // controllerDispatcher,
+             nonEntityDao, internalCallContextFactory), CustomFieldSqlDao.class);
         this.bus = bus;
         this.auditDao = auditDao;
     }
diff --git a/util/src/main/java/org/killbill/billing/util/dao/AuditSqlDao.java b/util/src/main/java/org/killbill/billing/util/dao/AuditSqlDao.java
index e9cf5b8..e03337b 100644
--- a/util/src/main/java/org/killbill/billing/util/dao/AuditSqlDao.java
+++ b/util/src/main/java/org/killbill/billing/util/dao/AuditSqlDao.java
@@ -32,9 +32,9 @@ import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.commons.jdbi.statement.SmartFetchSize;
 import org.killbill.billing.util.audit.dao.AuditLogModelDao;
-import org.killbill.billing.util.cache.Cachable;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CachableKey;
+// import org.killbill.billing.util.cache.Cachable;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CachableKey;
 
 /**
  * Note 1: cache invalidation has to happen for audit logs (which is tricky in the multi-nodes scenario).
@@ -63,15 +63,22 @@ public interface AuditSqlDao {
                                                                                  @SmartBindBean final InternalTenantContext context);
 
     @SqlQuery
-    @Cachable(CacheType.AUDIT_LOG)
-    public List<AuditLogModelDao> getAuditLogsForTargetRecordId(@CachableKey(1) @Bind("tableName") final String tableName,
-                                                                @CachableKey(2) @Bind("targetRecordId") final long targetRecordId,
+    // @Cachable(CacheType.AUDIT_LOG)
+    public List<AuditLogModelDao> getAuditLogsForTargetRecordId(
+      // @CachableKey(1) 
+      @Bind("tableName") final String tableName,
+                                                                // @CachableKey(2)
+                                                                 @Bind("targetRecordId") final long targetRecordId,
                                                                 @SmartBindBean final InternalTenantContext context);
 
     @SqlQuery
-    @Cachable(CacheType.AUDIT_LOG_VIA_HISTORY)
-    public List<AuditLogModelDao> getAuditLogsViaHistoryForTargetRecordId(@CachableKey(1) @Bind("tableName") final String historyTableName, /* Uppercased - used to find entries in audit_log table */
-                                                                          @CachableKey(2) @Define("historyTableName") final String actualHistoryTableName, /* Actual table name, used in the inner join query */
-                                                                          @CachableKey(3) @Bind("targetRecordId") final long targetRecordId,
+    // @Cachable(CacheType.AUDIT_LOG_VIA_HISTORY)
+    public List<AuditLogModelDao> getAuditLogsViaHistoryForTargetRecordId(
+      // @CachableKey(1) 
+      @Bind("tableName") final String historyTableName, /* Uppercased - used to find entries in audit_log table */
+                                                                          // @CachableKey(2) 
+                                                                          @Define("historyTableName") final String actualHistoryTableName, /* Actual table name, used in the inner join query */
+                                                                          // @CachableKey(3) 
+                                                                          @Bind("targetRecordId") final long targetRecordId,
                                                                           @SmartBindBean final InternalTenantContext context);
 }
diff --git a/util/src/main/java/org/killbill/billing/util/dao/DefaultNonEntityDao.java b/util/src/main/java/org/killbill/billing/util/dao/DefaultNonEntityDao.java
index 41aa896..7ebb1c4 100644
--- a/util/src/main/java/org/killbill/billing/util/dao/DefaultNonEntityDao.java
+++ b/util/src/main/java/org/killbill/billing/util/dao/DefaultNonEntityDao.java
@@ -25,9 +25,9 @@ import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.killbill.billing.ObjectType;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.entity.dao.DBRouter;
 import org.killbill.commons.profiling.Profiling;
@@ -55,11 +55,11 @@ public class DefaultNonEntityDao implements NonEntityDao {
     }
 
     @Override
-    public Long retrieveRecordIdFromObject(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache) {
+    public Long retrieveRecordIdFromObject(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final Object cache) {
         return retrieveRecordIdFromObjectInTransaction(objectId, objectType, cache, null);
     }
 
-    public Long retrieveRecordIdFromObjectInTransaction(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache, @Nullable final Handle handle) {
+    public Long retrieveRecordIdFromObjectInTransaction(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final Object cache, @Nullable final Handle handle) {
         if (objectId == null) {
             return null;
         }
@@ -77,12 +77,12 @@ public class DefaultNonEntityDao implements NonEntityDao {
     }
 
     @Override
-    public Long retrieveAccountRecordIdFromObject(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache) {
+    public Long retrieveAccountRecordIdFromObject(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final Object cache) {
         return retrieveAccountRecordIdFromObjectInTransaction(objectId, objectType, cache, null);
     }
 
     @Override
-    public Long retrieveAccountRecordIdFromObjectInTransaction(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache, @Nullable final Handle handle) {
+    public Long retrieveAccountRecordIdFromObjectInTransaction(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final Object cache, @Nullable final Handle handle) {
         final TableName tableName = TableName.fromObjectType(objectType);
         Preconditions.checkNotNull(tableName, "%s is not a valid ObjectType", objectType);
 
@@ -109,12 +109,12 @@ public class DefaultNonEntityDao implements NonEntityDao {
     }
 
     @Override
-    public Long retrieveTenantRecordIdFromObject(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache) {
+    public Long retrieveTenantRecordIdFromObject(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final Object cache) {
         return retrieveTenantRecordIdFromObjectInTransaction(objectId, objectType, cache, null);
     }
 
     @Override
-    public Long retrieveTenantRecordIdFromObjectInTransaction(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache, @Nullable final Handle handle) {
+    public Long retrieveTenantRecordIdFromObjectInTransaction(@Nullable final UUID objectId, final ObjectType objectType, @Nullable final Object cache, @Nullable final Handle handle) {
         final TableName tableName = TableName.fromObjectType(objectType);
         Preconditions.checkNotNull(tableName, "%s is not a valid ObjectType", objectType);
 
@@ -138,12 +138,12 @@ public class DefaultNonEntityDao implements NonEntityDao {
     }
 
     @Override
-    public UUID retrieveIdFromObject(final Long recordId, final ObjectType objectType, @Nullable final CacheController<String, UUID> cache) {
+    public UUID retrieveIdFromObject(final Long recordId, final ObjectType objectType, @Nullable final Object cache) {
         return retrieveIdFromObjectInTransaction(recordId, objectType, cache, null);
     }
 
     @Override
-    public UUID retrieveIdFromObjectInTransaction(final Long recordId, final ObjectType objectType, @Nullable final CacheController<String, UUID> cache, @Nullable final Handle handle) {
+    public UUID retrieveIdFromObjectInTransaction(final Long recordId, final ObjectType objectType, @Nullable final Object cache, @Nullable final Handle handle) {
         if (objectType == ObjectType.TENANT && InternalCallContextFactory.INTERNAL_TENANT_RECORD_ID.equals(recordId)) {
             return null;
         }
@@ -179,18 +179,18 @@ public class DefaultNonEntityDao implements NonEntityDao {
     // 'cache' will be null for the CacheLoader classes -- or if cache is not configured.
     private class WithCaching<TypeIn, TypeOut> {
 
-        private TypeOut withCaching(final OperationRetrieval<TypeOut> op, @Nullable final TypeIn objectOrRecordId, final ObjectType objectType, final TableName tableName, @Nullable final CacheController<TypeIn, TypeOut> cache) {
+        private TypeOut withCaching(final OperationRetrieval<TypeOut> op, @Nullable final TypeIn objectOrRecordId, final ObjectType objectType, final TableName tableName, @Nullable final Object cache) {
 
             final Profiling<TypeOut, RuntimeException> prof = new Profiling<TypeOut, RuntimeException>();
             if (objectOrRecordId == null) {
                 return null;
             }
-            if (cache != null) {
-                final TypeIn key = (cache.getCacheType().isKeyPrefixedWithTableName()) ?
-                                   (TypeIn) (tableName + CacheControllerDispatcher.CACHE_KEY_SEPARATOR + objectOrRecordId.toString()) :
-                                   objectOrRecordId;
-                return cache.get(key, new CacheLoaderArgument(objectType));
-            }
+            // if (cache != null) {
+            //     final TypeIn key = (cache.getCacheType().isKeyPrefixedWithTableName()) ?
+            //                        (TypeIn) (tableName + CacheControllerDispatcher.CACHE_KEY_SEPARATOR + objectOrRecordId.toString()) :
+            //                        objectOrRecordId;
+            //     return cache.get(key, new CacheLoaderArgument(objectType));
+            // }
             final TypeOut result;
             result = prof.executeWithProfiling(ProfilingFeatureType.DAO_DETAILS, "NonEntityDao (type = " + objectType + ") cache miss", new WithProfilingCallback<TypeOut, RuntimeException>() {
                 @Override
diff --git a/util/src/main/java/org/killbill/billing/util/dao/NonEntityDao.java b/util/src/main/java/org/killbill/billing/util/dao/NonEntityDao.java
index 0261192..19142be 100644
--- a/util/src/main/java/org/killbill/billing/util/dao/NonEntityDao.java
+++ b/util/src/main/java/org/killbill/billing/util/dao/NonEntityDao.java
@@ -23,27 +23,27 @@ import java.util.UUID;
 import javax.annotation.Nullable;
 
 import org.killbill.billing.ObjectType;
-import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheController;
 import org.skife.jdbi.v2.Handle;
 
 // This should only be used for internal operations (trusted code, not API), because the context will not be validated!
 public interface NonEntityDao {
 
-    public Long retrieveRecordIdFromObject(final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache);
+    public Long retrieveRecordIdFromObject(final UUID objectId, final ObjectType objectType, @Nullable final Object cache);
 
-    public Long retrieveRecordIdFromObjectInTransaction(final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache, @Nullable final Handle handle);
+    public Long retrieveRecordIdFromObjectInTransaction(final UUID objectId, final ObjectType objectType, @Nullable final Object cache, @Nullable final Handle handle);
 
-    public Long retrieveAccountRecordIdFromObject(final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache);
+    public Long retrieveAccountRecordIdFromObject(final UUID objectId, final ObjectType objectType, @Nullable final Object cache);
 
-    public Long retrieveAccountRecordIdFromObjectInTransaction(final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache, @Nullable final Handle handle);
+    public Long retrieveAccountRecordIdFromObjectInTransaction(final UUID objectId, final ObjectType objectType, @Nullable final Object cache, @Nullable final Handle handle);
 
-    public Long retrieveTenantRecordIdFromObject(final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache);
+    public Long retrieveTenantRecordIdFromObject(final UUID objectId, final ObjectType objectType, @Nullable final Object cache);
 
-    public Long retrieveTenantRecordIdFromObjectInTransaction(final UUID objectId, final ObjectType objectType, @Nullable final CacheController<String, Long> cache, @Nullable final Handle handle);
+    public Long retrieveTenantRecordIdFromObjectInTransaction(final UUID objectId, final ObjectType objectType, @Nullable final Object cache, @Nullable final Handle handle);
 
-    public UUID retrieveIdFromObject(final Long recordId, final ObjectType objectType, @Nullable final CacheController<String, UUID> cache);
+    public UUID retrieveIdFromObject(final Long recordId, final ObjectType objectType, @Nullable final Object cache);
 
-    public UUID retrieveIdFromObjectInTransaction(final Long recordId, final ObjectType objectType, @Nullable final CacheController<String, UUID> cache, @Nullable final Handle handle);
+    public UUID retrieveIdFromObjectInTransaction(final Long recordId, final ObjectType objectType, @Nullable final Object cache, @Nullable final Handle handle);
 
     // This retrieves from the history table the latest record for which targetId matches the one we are passing
     public Long retrieveLastHistoryRecordIdFromTransaction(final Long targetRecordId, final TableName tableName, final NonEntitySqlDao transactional);
diff --git a/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDaoBase.java b/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDaoBase.java
index a4684b3..46dbcc9 100644
--- a/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDaoBase.java
+++ b/util/src/main/java/org/killbill/billing/util/entity/dao/EntityDaoBase.java
@@ -65,7 +65,7 @@ public abstract class EntityDaoBase<M extends EntityModelDao<E>, E extends Entit
     public void create(final M entity, final InternalCallContext context) throws U {
         final M refreshedEntity = transactionalSqlDao.execute(false, targetExceptionClass, getCreateEntitySqlDaoTransactionWrapper(entity, context));
         // Populate the caches only after the transaction has been committed, in case of rollbacks
-        transactionalSqlDao.populateCaches(refreshedEntity);
+        // transactionalSqlDao.populateCaches(refreshedEntity);
     }
 
 
@@ -73,7 +73,7 @@ public abstract class EntityDaoBase<M extends EntityModelDao<E>, E extends Entit
         final List<M> refreshedEntities = transactionalSqlDao.execute(false, targetExceptionClass, getCreateEntitySqlDaoTransactionWrapper(entities, context));
         // Populate the caches only after the transaction has been committed, in case of rollbacks
         for (M refreshedEntity : refreshedEntities) {
-            transactionalSqlDao.populateCaches(refreshedEntity);
+            // transactionalSqlDao.populateCaches(refreshedEntity);
         }
     }
 
diff --git a/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDao.java b/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDao.java
index a4ddb91..2a2efcd 100644
--- a/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDao.java
+++ b/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDao.java
@@ -25,9 +25,10 @@ import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.entity.EntityPersistenceException;
 import org.killbill.billing.util.audit.ChangeType;
-import org.killbill.billing.util.cache.Cachable;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CachableKey;
+import org.killbill.billing.util.entity.dao.Audited;
+// import org.killbill.billing.util.cache.Cachable;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CachableKey;
 import org.killbill.billing.util.dao.AuditSqlDao;
 import org.killbill.billing.util.dao.HistorySqlDao;
 import org.killbill.billing.util.entity.Entity;
@@ -64,8 +65,10 @@ public interface EntitySqlDao<M extends EntityModelDao<E>, E extends Entity> ext
     public List<M> getByAccountRecordIdIncludedDeleted(@SmartBindBean final InternalTenantContext context);
 
     @SqlQuery
-    @Cachable(CacheType.RECORD_ID)
-    public Long getRecordId(@CachableKey(1) @Bind("id") final String id,
+    // @Cachable(CacheType.RECORD_ID)
+    public Long getRecordId(
+      // @CachableKey(1)
+       @Bind("id") final String id,
                             @SmartBindBean final InternalTenantContext context);
 
     @SqlQuery
diff --git a/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoTransactionalJdbiWrapper.java b/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoTransactionalJdbiWrapper.java
index a651330..c35d283 100644
--- a/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoTransactionalJdbiWrapper.java
+++ b/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoTransactionalJdbiWrapper.java
@@ -20,7 +20,7 @@ package org.killbill.billing.util.entity.dao;
 
 import javax.annotation.Nullable;
 
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.entity.Entity;
@@ -41,21 +41,22 @@ public class EntitySqlDaoTransactionalJdbiWrapper {
 
     private final DBRouterUntyped dbRouter;
     private final Clock clock;
-    private final CacheControllerDispatcher cacheControllerDispatcher;
+    // private final CacheControllerDispatcher cacheControllerDispatcher;
     private final NonEntityDao nonEntityDao;
     private final InternalCallContextFactory internalCallContextFactory;
 
-    public EntitySqlDaoTransactionalJdbiWrapper(final IDBI dbi, final IDBI roDbi, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher,
+    public EntitySqlDaoTransactionalJdbiWrapper(final IDBI dbi, final IDBI roDbi, final Clock clock,
+     // final Object cacheControllerDispatcher,
                                                 final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory) {
         this.clock = clock;
-        this.cacheControllerDispatcher = cacheControllerDispatcher;
+        // this.cacheControllerDispatcher = cacheControllerDispatcher;
         this.nonEntityDao = nonEntityDao;
         this.internalCallContextFactory = internalCallContextFactory;
         this.dbRouter = new DBRouterUntyped(dbi, roDbi);
     }
 
     public <M extends EntityModelDao> void populateCaches(final M refreshedEntity) {
-        EntitySqlDaoWrapperInvocationHandler.populateCaches(cacheControllerDispatcher, refreshedEntity);
+        // EntitySqlDaoWrapperInvocationHandler.populateCaches(cacheControllerDispatcher, refreshedEntity);
     }
 
     class JdbiTransaction<ReturnType, M extends EntityModelDao<E>, E extends Entity> implements Transaction<ReturnType, EntitySqlDao<M, E>> {
@@ -70,7 +71,7 @@ public class EntitySqlDaoTransactionalJdbiWrapper {
 
         @Override
         public ReturnType inTransaction(final EntitySqlDao<M, E> transactionalSqlDao, final TransactionStatus status) throws Exception {
-            final EntitySqlDaoWrapperFactory factoryEntitySqlDao = new EntitySqlDaoWrapperFactory(h, clock, cacheControllerDispatcher, internalCallContextFactory);
+            final EntitySqlDaoWrapperFactory factoryEntitySqlDao = new EntitySqlDaoWrapperFactory(h, clock, internalCallContextFactory);
             return entitySqlDaoTransactionWrapper.inTransaction(factoryEntitySqlDao);
         }
     }
diff --git a/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoWrapperFactory.java b/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoWrapperFactory.java
index 12aab8d..cba64b4 100644
--- a/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoWrapperFactory.java
+++ b/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoWrapperFactory.java
@@ -20,7 +20,7 @@ package org.killbill.billing.util.entity.dao;
 
 import java.lang.reflect.Proxy;
 
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.entity.Entity;
 import org.killbill.clock.Clock;
@@ -37,14 +37,16 @@ public class EntitySqlDaoWrapperFactory {
 
     private final Handle handle;
     private final Clock clock;
-    private final CacheControllerDispatcher cacheControllerDispatcher;
+    // private final CacheControllerDispatcher cacheControllerDispatcher;
 
     private final InternalCallContextFactory internalCallContextFactory;
 
-    public EntitySqlDaoWrapperFactory(final Handle handle, final Clock clock, final CacheControllerDispatcher cacheControllerDispatcher, final InternalCallContextFactory internalCallContextFactory) {
+    public EntitySqlDaoWrapperFactory(final Handle handle, final Clock clock, 
+        // final CacheControllerDispatcher cacheControllerDispatcher,
+         final InternalCallContextFactory internalCallContextFactory) {
         this.handle = handle;
         this.clock = clock;
-        this.cacheControllerDispatcher = cacheControllerDispatcher;
+        // this.cacheControllerDispatcher = cacheControllerDispatcher;
         this.internalCallContextFactory = internalCallContextFactory;
     }
 
@@ -73,7 +75,9 @@ public class EntitySqlDaoWrapperFactory {
         final ClassLoader classLoader = newSqlDao.getClass().getClassLoader();
         final Class[] interfacesToImplement = {newSqlDaoClass};
         final EntitySqlDaoWrapperInvocationHandler<NewSqlDao, NewEntityModelDao, NewEntity> wrapperInvocationHandler =
-                new EntitySqlDaoWrapperInvocationHandler<NewSqlDao, NewEntityModelDao, NewEntity>(newSqlDaoClass, newSqlDao, handle, clock, cacheControllerDispatcher, internalCallContextFactory);
+                new EntitySqlDaoWrapperInvocationHandler<NewSqlDao, NewEntityModelDao, NewEntity>(newSqlDaoClass, newSqlDao, handle, clock, 
+                    // cacheControllerDispatcher,
+                     internalCallContextFactory);
 
         final Object newSqlDaoObject = Proxy.newProxyInstance(classLoader, interfacesToImplement, wrapperInvocationHandler);
         return newSqlDaoClass.cast(newSqlDaoObject);
diff --git a/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoWrapperInvocationHandler.java b/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoWrapperInvocationHandler.java
index 195d41d..1154593 100644
--- a/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoWrapperInvocationHandler.java
+++ b/util/src/main/java/org/killbill/billing/util/entity/dao/EntitySqlDaoWrapperInvocationHandler.java
@@ -42,12 +42,12 @@ import org.killbill.billing.ObjectType;
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.util.audit.ChangeType;
-import org.killbill.billing.util.cache.Cachable;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.killbill.billing.util.cache.CachableKey;
-import org.killbill.billing.util.cache.CacheController;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheLoaderArgument;
+// import org.killbill.billing.util.cache.Cachable;
+// import org.killbill.billing.util.cache.Cachable.CacheType;
+// import org.killbill.billing.util.cache.CachableKey;
+// import org.killbill.billing.util.cache.CacheController;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheLoaderArgument;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.EntityAudit;
 import org.killbill.billing.util.dao.EntityHistoryModelDao;
@@ -92,7 +92,7 @@ public class EntitySqlDaoWrapperInvocationHandler<S extends EntitySqlDao<M, E>, 
     private final S sqlDao;
     private final Handle handle;
 
-    private final CacheControllerDispatcher cacheControllerDispatcher;
+    // private final CacheControllerDispatcher cacheControllerDispatcher;
     private final Clock clock;
     private final InternalCallContextFactory internalCallContextFactory;
     private final Profiling<Object, Throwable> prof;
@@ -102,13 +102,13 @@ public class EntitySqlDaoWrapperInvocationHandler<S extends EntitySqlDao<M, E>, 
                                                 final Handle handle,
                                                 final Clock clock,
                                                 // Special DAO that don't require caching can invoke EntitySqlDaoWrapperInvocationHandler with no caching (e.g NoCachingTenantDao)
-                                                @Nullable final CacheControllerDispatcher cacheControllerDispatcher,
+                                                // @Nullable final CacheControllerDispatcher cacheControllerDispatcher,
                                                 final InternalCallContextFactory internalCallContextFactory) {
         this.sqlDaoClass = sqlDaoClass;
         this.sqlDao = sqlDao;
         this.handle = handle;
         this.clock = clock;
-        this.cacheControllerDispatcher = cacheControllerDispatcher;
+        // this.cacheControllerDispatcher = cacheControllerDispatcher;
         this.internalCallContextFactory = internalCallContextFactory;
         this.prof = new Profiling<Object, Throwable>();
     }
@@ -190,13 +190,13 @@ public class EntitySqlDaoWrapperInvocationHandler<S extends EntitySqlDao<M, E>, 
     private Object invokeSafely(final Object proxy, final Method method, final Object[] args) throws Throwable {
 
         final Audited auditedAnnotation = method.getAnnotation(Audited.class);
-        final Cachable cachableAnnotation = method.getAnnotation(Cachable.class);
+        // final Cachable cachableAnnotation = method.getAnnotation(Cachable.class);
 
         // This can't be AUDIT'ed and CACHABLE'd at the same time as we only cache 'get'
         if (auditedAnnotation != null) {
             return invokeWithAuditAndHistory(auditedAnnotation, method, args);
-        } else if (cachableAnnotation != null && cacheControllerDispatcher != null) {
-            return invokeWithCaching(cachableAnnotation, method, args);
+        // } else if (cachableAnnotation != null && cacheControllerDispatcher != null) {
+            // return invokeWithCaching(cachableAnnotation, method, args);
         } else {
             return invokeRaw(method, args);
         }
@@ -212,50 +212,50 @@ public class EntitySqlDaoWrapperInvocationHandler<S extends EntitySqlDao<M, E>, 
                 // the object after it was created, which means this method is (by pattern) first called right after object creation and contains all the goodies we care
                 // about (record_id, account_record_id, object_id, tenant_record_id)
                 //
-                if (result != null && method.getName().equals("getById")) {
-                    populateCacheOnGetByIdInvocation((M) result);
-                }
+                // if (result != null && method.getName().equals("getById")) {
+                    // populateCacheOnGetByIdInvocation((M) result);
+                // }
                 return result;
             }
         });
     }
 
-    private Object invokeWithCaching(final Cachable cachableAnnotation, final Method method, final Object[] args)
-            throws Throwable {
-        final ObjectType objectType = getObjectType();
-        final CacheType cacheType = cachableAnnotation.value();
-        final CacheController<Object, Object> cache = cacheControllerDispatcher.getCacheController(cacheType);
-        // TODO Change NonEntityDao to take in TableName instead to cache things like TenantBroadcastModelDao (no ObjectType)
-        if (cache != null && objectType != null) {
-            // Find all arguments marked with @CachableKey
-            final Map<Integer, Object> keyPieces = new LinkedHashMap<Integer, Object>();
-            final Annotation[][] annotations = getAnnotations(method);
-            for (int i = 0; i < annotations.length; i++) {
-                for (int j = 0; j < annotations[i].length; j++) {
-                    final Annotation annotation = annotations[i][j];
-                    if (CachableKey.class.equals(annotation.annotationType())) {
-                        // CachableKey position starts at 1
-                        keyPieces.put(((CachableKey) annotation).value() - 1, args[i]);
-                        break;
-                    }
-                }
-            }
-
-            // Build the Cache key
-            final String cacheKey = buildCacheKey(keyPieces);
-
-            final InternalTenantContext internalTenantContext = (InternalTenantContext) Iterables.find(ImmutableList.copyOf(args), new Predicate<Object>() {
-                @Override
-                public boolean apply(final Object input) {
-                    return input instanceof InternalTenantContext;
-                }
-            }, null);
-            final CacheLoaderArgument cacheLoaderArgument = new CacheLoaderArgument(objectType, args, internalTenantContext, handle);
-            return cache.get(cacheKey, cacheLoaderArgument);
-        } else {
-            return invokeRaw(method, args);
-        }
-    }
+    // private Object invokeWithCaching(final Cachable cachableAnnotation, final Method method, final Object[] args)
+    //         throws Throwable {
+    //     final ObjectType objectType = getObjectType();
+    //     final CacheType cacheType = cachableAnnotation.value();
+    //     final CacheController<Object, Object> cache = cacheControllerDispatcher.getCacheController(cacheType);
+    //     // TODO Change NonEntityDao to take in TableName instead to cache things like TenantBroadcastModelDao (no ObjectType)
+    //     if (cache != null && objectType != null) {
+    //         // Find all arguments marked with @CachableKey
+    //         final Map<Integer, Object> keyPieces = new LinkedHashMap<Integer, Object>();
+    //         final Annotation[][] annotations = getAnnotations(method);
+    //         for (int i = 0; i < annotations.length; i++) {
+    //             for (int j = 0; j < annotations[i].length; j++) {
+    //                 final Annotation annotation = annotations[i][j];
+    //                 if (CachableKey.class.equals(annotation.annotationType())) {
+    //                     // CachableKey position starts at 1
+    //                     keyPieces.put(((CachableKey) annotation).value() - 1, args[i]);
+    //                     break;
+    //                 }
+    //             }
+    //         }
+
+    //         // Build the Cache key
+    //         final String cacheKey = buildCacheKey(keyPieces);
+
+    //         final InternalTenantContext internalTenantContext = (InternalTenantContext) Iterables.find(ImmutableList.copyOf(args), new Predicate<Object>() {
+    //             @Override
+    //             public boolean apply(final Object input) {
+    //                 return input instanceof InternalTenantContext;
+    //             }
+    //         }, null);
+    //         final CacheLoaderArgument cacheLoaderArgument = new CacheLoaderArgument(objectType, args, internalTenantContext, handle);
+    //         return cache.get(cacheKey, cacheLoaderArgument);
+    //     } else {
+    //         return invokeRaw(method, args);
+    //     }
+    // }
 
     /**
      * Extract object from sqlDaoClass by looking at first parameter type (EntityModelDao) and
@@ -371,33 +371,33 @@ public class EntitySqlDaoWrapperInvocationHandler<S extends EntitySqlDao<M, E>, 
         }
     }
 
-    private void populateCacheOnGetByIdInvocation(final M model) {
-        populateCaches(cacheControllerDispatcher, model);
-    }
+    // private void populateCacheOnGetByIdInvocation(final M model) {
+    //     populateCaches(cacheControllerDispatcher, model);
+    // }
 
-    public static void populateCaches(final CacheControllerDispatcher cacheControllerDispatcher, final EntityModelDao model) {
-        final CacheController<String, Long> cacheRecordId = cacheControllerDispatcher.getCacheController(CacheType.RECORD_ID);
-        cacheRecordId.putIfAbsent(getKey(model.getId().toString(), CacheType.RECORD_ID, model.getTableName()), model.getRecordId());
+    // public static void populateCaches(final CacheControllerDispatcher cacheControllerDispatcher, final EntityModelDao model) {
+    //     final CacheController<String, Long> cacheRecordId = cacheControllerDispatcher.getCacheController(CacheType.RECORD_ID);
+    //     cacheRecordId.putIfAbsent(getKey(model.getId().toString(), CacheType.RECORD_ID, model.getTableName()), model.getRecordId());
 
-        final CacheController<String, UUID> cacheObjectId = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
-        cacheObjectId.putIfAbsent(getKey(model.getRecordId().toString(), CacheType.OBJECT_ID, model.getTableName()), model.getId());
+    //     final CacheController<String, UUID> cacheObjectId = cacheControllerDispatcher.getCacheController(CacheType.OBJECT_ID);
+    //     cacheObjectId.putIfAbsent(getKey(model.getRecordId().toString(), CacheType.OBJECT_ID, model.getTableName()), model.getId());
 
-        if (model.getTenantRecordId() != null) {
-            final CacheController<String, Long> cacheTenantRecordId = cacheControllerDispatcher.getCacheController(CacheType.TENANT_RECORD_ID);
-            cacheTenantRecordId.putIfAbsent(getKey(model.getId().toString(), CacheType.TENANT_RECORD_ID, model.getTableName()), model.getTenantRecordId());
-        }
+    //     if (model.getTenantRecordId() != null) {
+    //         final CacheController<String, Long> cacheTenantRecordId = cacheControllerDispatcher.getCacheController(CacheType.TENANT_RECORD_ID);
+    //         cacheTenantRecordId.putIfAbsent(getKey(model.getId().toString(), CacheType.TENANT_RECORD_ID, model.getTableName()), model.getTenantRecordId());
+    //     }
 
-        if (model.getAccountRecordId() != null) {
-            final CacheController<String, Long> cacheAccountRecordId = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_RECORD_ID);
-            cacheAccountRecordId.putIfAbsent(getKey(model.getId().toString(), CacheType.ACCOUNT_RECORD_ID, model.getTableName()), model.getAccountRecordId());
-        }
-    }
+    //     if (model.getAccountRecordId() != null) {
+    //         final CacheController<String, Long> cacheAccountRecordId = cacheControllerDispatcher.getCacheController(CacheType.ACCOUNT_RECORD_ID);
+    //         cacheAccountRecordId.putIfAbsent(getKey(model.getId().toString(), CacheType.ACCOUNT_RECORD_ID, model.getTableName()), model.getAccountRecordId());
+    //     }
+    // }
 
-    private static String getKey(final String rawKey, final CacheType cacheType, final TableName tableName) {
-        return cacheType.isKeyPrefixedWithTableName() ?
-               tableName + CacheControllerDispatcher.CACHE_KEY_SEPARATOR + rawKey :
-               rawKey;
-    }
+    // private static String getKey(final String rawKey, final CacheType cacheType, final TableName tableName) {
+    //     return cacheType.isKeyPrefixedWithTableName() ?
+    //            tableName + CacheControllerDispatcher.CACHE_KEY_SEPARATOR + rawKey :
+    //            rawKey;
+    // }
 
     private M updateHistoryAndAudit(final String entityId, @Nullable final M deletedEntity, final ChangeType changeType, final InternalCallContext context) throws Throwable {
         final Object reHydratedEntity = prof.executeWithProfiling(ProfilingFeatureType.DAO_DETAILS, getProfilingId("history/audit", null), new WithProfilingCallback<Object, Throwable>() {
@@ -528,35 +528,35 @@ public class EntitySqlDaoWrapperInvocationHandler<S extends EntitySqlDao<M, E>, 
 
         // We need to invalidate the caches. There is a small window of doom here where caches will be stale.
         // TODO Knowledge on how the key is constructed is also in AuditSqlDao
-        if (tableName.getHistoryTableName() != null) {
-            final CacheController<String, List> cacheController = cacheControllerDispatcher.getCacheController(CacheType.AUDIT_LOG_VIA_HISTORY);
-            if (cacheController != null) {
-                final String key = buildCacheKey(ImmutableMap.<Integer, Object>of(0, tableName.getHistoryTableName(), 1, tableName.getHistoryTableName(), 2, entityRecordId));
-                cacheController.remove(key);
-            }
-        } else {
-            final CacheController<String, List> cacheController = cacheControllerDispatcher.getCacheController(CacheType.AUDIT_LOG);
-            if (cacheController != null) {
-                final String key = buildCacheKey(ImmutableMap.<Integer, Object>of(0, tableName, 1, entityRecordId));
-                cacheController.remove(key);
-            }
-        }
+        // if (tableName.getHistoryTableName() != null) {
+            // final CacheController<String, List> cacheController = cacheControllerDispatcher.getCacheController(CacheType.AUDIT_LOG_VIA_HISTORY);
+            // if (cacheController != null) {
+            //     final String key = buildCacheKey(ImmutableMap.<Integer, Object>of(0, tableName.getHistoryTableName(), 1, tableName.getHistoryTableName(), 2, entityRecordId));
+            //     cacheController.remove(key);
+            // }
+        // } else {
+            // final CacheController<String, List> cacheController = cacheControllerDispatcher.getCacheController(CacheType.AUDIT_LOG);
+            // if (cacheController != null) {
+            //     final String key = buildCacheKey(ImmutableMap.<Integer, Object>of(0, tableName, 1, entityRecordId));
+            //     cacheController.remove(key);
+            // }
+        // }
     }
 
-    private String buildCacheKey(final Map<Integer, Object> keyPieces) {
-        final StringBuilder cacheKey = new StringBuilder();
-        for (int i = 0; i < keyPieces.size(); i++) {
-            // To normalize the arguments and avoid casing issues, we make all pieces of the key uppercase.
-            // Since the database engine may be case insensitive and we use arguments of the SQL method call
-            // to build the key, the key has to be case insensitive as well.
-            final String str = String.valueOf(keyPieces.get(i)).toUpperCase();
-            cacheKey.append(str);
-            if (i < keyPieces.size() - 1) {
-                cacheKey.append(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
-            }
-        }
-        return cacheKey.toString();
-    }
+    // private String buildCacheKey(final Map<Integer, Object> keyPieces) {
+    //     final StringBuilder cacheKey = new StringBuilder();
+    //     for (int i = 0; i < keyPieces.size(); i++) {
+    //         // To normalize the arguments and avoid casing issues, we make all pieces of the key uppercase.
+    //         // Since the database engine may be case insensitive and we use arguments of the SQL method call
+    //         // to build the key, the key has to be case insensitive as well.
+    //         final String str = String.valueOf(keyPieces.get(i)).toUpperCase();
+    //         cacheKey.append(str);
+    //         if (i < keyPieces.size() - 1) {
+    //             cacheKey.append(CacheControllerDispatcher.CACHE_KEY_SEPARATOR);
+    //         }
+    //     }
+    //     return cacheKey.toString();
+    // }
 
     private String getProfilingId(@Nullable final String prefix, @Nullable final Method method) {
         final StringBuilder stringBuilder = new StringBuilder().append(sqlDaoClass.getSimpleName());
diff --git a/util/src/main/java/org/killbill/billing/util/glue/CacheModule.java b/util/src/main/java/org/killbill/billing/util/glue/CacheModule.java
index 8289c70..414890c 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/CacheModule.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/CacheModule.java
@@ -16,84 +16,84 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
+// package org.killbill.billing.util.glue;
 
-import javax.cache.CacheManager;
+// import javax.cache.CacheManager;
 
-import org.killbill.billing.platform.api.KillbillConfigSource;
-import org.killbill.billing.util.cache.AccountBCDCacheLoader;
-import org.killbill.billing.util.cache.AccountIdFromBundleIdCacheLoader;
-import org.killbill.billing.util.cache.AccountRecordIdCacheLoader;
-import org.killbill.billing.util.cache.AuditLogCacheLoader;
-import org.killbill.billing.util.cache.AuditLogViaHistoryCacheLoader;
-import org.killbill.billing.util.cache.BaseCacheLoader;
-import org.killbill.billing.util.cache.BundleIdFromSubscriptionIdCacheLoader;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
-import org.killbill.billing.util.cache.CacheControllerDispatcherProvider;
-import org.killbill.billing.util.cache.ImmutableAccountCacheLoader;
-import org.killbill.billing.util.cache.ObjectIdCacheLoader;
-import org.killbill.billing.util.cache.OverriddenPlanCacheLoader;
-import org.killbill.billing.util.cache.RecordIdCacheLoader;
-import org.killbill.billing.util.cache.TenantCacheLoader;
-import org.killbill.billing.util.cache.TenantCatalogCacheLoader;
-import org.killbill.billing.util.cache.TenantConfigCacheLoader;
-import org.killbill.billing.util.cache.TenantKVCacheLoader;
-import org.killbill.billing.util.cache.TenantOverdueConfigCacheLoader;
-import org.killbill.billing.util.cache.TenantRecordIdCacheLoader;
-import org.killbill.billing.util.cache.TenantStateMachineConfigCacheLoader;
-import org.killbill.billing.util.config.definition.EhCacheConfig;
-import org.killbill.billing.util.config.definition.RedisCacheConfig;
-import org.redisson.api.RedissonClient;
-import org.skife.config.ConfigurationObjectFactory;
+// import org.killbill.billing.platform.api.KillbillConfigSource;
+// import org.killbill.billing.util.cache.AccountBCDCacheLoader;
+// import org.killbill.billing.util.cache.AccountIdFromBundleIdCacheLoader;
+// import org.killbill.billing.util.cache.AccountRecordIdCacheLoader;
+// import org.killbill.billing.util.cache.AuditLogCacheLoader;
+// import org.killbill.billing.util.cache.AuditLogViaHistoryCacheLoader;
+// import org.killbill.billing.util.cache.BaseCacheLoader;
+// import org.killbill.billing.util.cache.BundleIdFromSubscriptionIdCacheLoader;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcherProvider;
+// import org.killbill.billing.util.cache.ImmutableAccountCacheLoader;
+// import org.killbill.billing.util.cache.ObjectIdCacheLoader;
+// import org.killbill.billing.util.cache.OverriddenPlanCacheLoader;
+// import org.killbill.billing.util.cache.RecordIdCacheLoader;
+// import org.killbill.billing.util.cache.TenantCacheLoader;
+// import org.killbill.billing.util.cache.TenantCatalogCacheLoader;
+// import org.killbill.billing.util.cache.TenantConfigCacheLoader;
+// import org.killbill.billing.util.cache.TenantKVCacheLoader;
+// import org.killbill.billing.util.cache.TenantOverdueConfigCacheLoader;
+// import org.killbill.billing.util.cache.TenantRecordIdCacheLoader;
+// import org.killbill.billing.util.cache.TenantStateMachineConfigCacheLoader;
+// import org.killbill.billing.util.config.definition.EhCacheConfig;
+// import org.killbill.billing.util.config.definition.RedisCacheConfig;
+// import org.redisson.api.RedissonClient;
+// import org.skife.config.ConfigurationObjectFactory;
 
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.name.Names;
-import com.google.inject.util.Providers;
+// import com.google.inject.multibindings.Multibinder;
+// import com.google.inject.name.Names;
+// import com.google.inject.util.Providers;
 
-public class CacheModule extends KillBillModule {
+// public class CacheModule extends KillBillModule {
 
-    public static final String REDIS_CACHE_CLIENT = "redisCacheClient";
+//     public static final String REDIS_CACHE_CLIENT = "redisCacheClient";
 
-    public CacheModule(final KillbillConfigSource configSource) {
-        super(configSource);
-    }
+//     public CacheModule(final KillbillConfigSource configSource) {
+//         super(configSource);
+//     }
 
-    @Override
-    protected void configure() {
-        final EhCacheConfig ehCacheConfig = new ConfigurationObjectFactory(skifeConfigSource).build(EhCacheConfig.class);
-        bind(EhCacheConfig.class).toInstance(ehCacheConfig);
+//     @Override
+//     protected void configure() {
+//         final EhCacheConfig ehCacheConfig = new ConfigurationObjectFactory(skifeConfigSource).build(EhCacheConfig.class);
+//         bind(EhCacheConfig.class).toInstance(ehCacheConfig);
 
-        final RedisCacheConfig redisCacheConfig = new ConfigurationObjectFactory(skifeConfigSource).build(RedisCacheConfig.class);
-        bind(RedisCacheConfig.class).toInstance(redisCacheConfig);
+//         final RedisCacheConfig redisCacheConfig = new ConfigurationObjectFactory(skifeConfigSource).build(RedisCacheConfig.class);
+//         bind(RedisCacheConfig.class).toInstance(redisCacheConfig);
 
-        if (redisCacheConfig.isRedisCachingEnabled()) {
-            bind(RedissonClient.class).annotatedWith(Names.named(REDIS_CACHE_CLIENT)).toProvider(RedissonCacheClientProvider.class).asEagerSingleton();
-            bind(CacheManager.class).toProvider(Redis107CacheManagerProvider.class).asEagerSingleton();
-        } else {
-            bind(RedissonClient.class).annotatedWith(Names.named(REDIS_CACHE_CLIENT)).toProvider(Providers.<RedissonClient>of(null));
-            bind(CacheManager.class).toProvider(Eh107CacheManagerProvider.class).asEagerSingleton();
-        }
+//         if (redisCacheConfig.isRedisCachingEnabled()) {
+//             bind(RedissonClient.class).annotatedWith(Names.named(REDIS_CACHE_CLIENT)).toProvider(RedissonCacheClientProvider.class).asEagerSingleton();
+//             bind(CacheManager.class).toProvider(Redis107CacheManagerProvider.class).asEagerSingleton();
+//         } else {
+//             bind(RedissonClient.class).annotatedWith(Names.named(REDIS_CACHE_CLIENT)).toProvider(Providers.<RedissonClient>of(null));
+//             bind(CacheManager.class).toProvider(Eh107CacheManagerProvider.class).asEagerSingleton();
+//         }
 
-        // Kill Bill generic cache dispatcher
-        bind(CacheControllerDispatcher.class).toProvider(CacheControllerDispatcherProvider.class).asEagerSingleton();
+//         // Kill Bill generic cache dispatcher
+//         bind(CacheControllerDispatcher.class).toProvider(CacheControllerDispatcherProvider.class).asEagerSingleton();
 
-        final Multibinder<BaseCacheLoader> resultSetMapperSetBinder = Multibinder.newSetBinder(binder(), BaseCacheLoader.class);
-        resultSetMapperSetBinder.addBinding().to(ImmutableAccountCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(AccountBCDCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(RecordIdCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(AccountRecordIdCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(TenantRecordIdCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(ObjectIdCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(AuditLogCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(AuditLogViaHistoryCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(TenantCatalogCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(TenantConfigCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(TenantOverdueConfigCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(TenantKVCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(TenantCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(OverriddenPlanCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(TenantStateMachineConfigCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(AccountIdFromBundleIdCacheLoader.class).asEagerSingleton();
-        resultSetMapperSetBinder.addBinding().to(BundleIdFromSubscriptionIdCacheLoader.class).asEagerSingleton();
-    }
-}
+//         final Multibinder<BaseCacheLoader> resultSetMapperSetBinder = Multibinder.newSetBinder(binder(), BaseCacheLoader.class);
+//         resultSetMapperSetBinder.addBinding().to(ImmutableAccountCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(AccountBCDCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(RecordIdCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(AccountRecordIdCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(TenantRecordIdCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(ObjectIdCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(AuditLogCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(AuditLogViaHistoryCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(TenantCatalogCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(TenantConfigCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(TenantOverdueConfigCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(TenantKVCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(TenantCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(OverriddenPlanCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(TenantStateMachineConfigCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(AccountIdFromBundleIdCacheLoader.class).asEagerSingleton();
+//         resultSetMapperSetBinder.addBinding().to(BundleIdFromSubscriptionIdCacheLoader.class).asEagerSingleton();
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/CacheProviderBase.java b/util/src/main/java/org/killbill/billing/util/glue/CacheProviderBase.java
index ceb312c..17aef74 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/CacheProviderBase.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/CacheProviderBase.java
@@ -15,42 +15,42 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
+// package org.killbill.billing.util.glue;
 
-import javax.cache.Cache;
-import javax.cache.CacheManager;
-import javax.cache.configuration.Configuration;
+// import javax.cache.Cache;
+// import javax.cache.CacheManager;
+// import javax.cache.configuration.Configuration;
 
-import com.codahale.metrics.Metric;
-import com.codahale.metrics.MetricFilter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.jcache.JCacheGaugeSet;
-import com.google.common.base.Preconditions;
+// import com.codahale.metrics.Metric;
+// import com.codahale.metrics.MetricFilter;
+// import com.codahale.metrics.MetricRegistry;
+// import com.codahale.metrics.jcache.JCacheGaugeSet;
+// import com.google.common.base.Preconditions;
 
-abstract class CacheProviderBase {
+// abstract class CacheProviderBase {
 
-    private static final String PROP_METRIC_REG_JCACHE_STATISTICS = "jcache.statistics";
+//     private static final String PROP_METRIC_REG_JCACHE_STATISTICS = "jcache.statistics";
 
-    private final MetricRegistry metricRegistry;
+//     private final MetricRegistry metricRegistry;
 
-    CacheProviderBase(final MetricRegistry metricRegistry) {
-        this.metricRegistry = metricRegistry;
-    }
+//     CacheProviderBase(final MetricRegistry metricRegistry) {
+//         this.metricRegistry = metricRegistry;
+//     }
 
-    <C extends Configuration> void createCache(final CacheManager cacheManager, final String cacheName, final C configuration) {
-        // Make sure we start from a clean state - this is mainly useful for tests
-        cacheManager.destroyCache(cacheName);
+//     <C extends Configuration> void createCache(final CacheManager cacheManager, final String cacheName, final C configuration) {
+//         // Make sure we start from a clean state - this is mainly useful for tests
+//         cacheManager.destroyCache(cacheName);
 
-        final Cache cache = cacheManager.createCache(cacheName, configuration);
-        Preconditions.checkState(!cache.isClosed(), "Cache '%s' should not be closed", cacheName);
+//         final Cache cache = cacheManager.createCache(cacheName, configuration);
+//         Preconditions.checkState(!cache.isClosed(), "Cache '%s' should not be closed", cacheName);
 
-        // Re-create the metrics to support dynamically created caches (e.g. for Shiro)
-        metricRegistry.removeMatching(new MetricFilter() {
-            @Override
-            public boolean matches(final String name, final Metric metric) {
-                return name != null && name.startsWith(PROP_METRIC_REG_JCACHE_STATISTICS);
-            }
-        });
-        metricRegistry.register(PROP_METRIC_REG_JCACHE_STATISTICS, new JCacheGaugeSet());
-    }
-}
+//         // Re-create the metrics to support dynamically created caches (e.g. for Shiro)
+//         metricRegistry.removeMatching(new MetricFilter() {
+//             @Override
+//             public boolean matches(final String name, final Metric metric) {
+//                 return name != null && name.startsWith(PROP_METRIC_REG_JCACHE_STATISTICS);
+//             }
+//         });
+//         metricRegistry.register(PROP_METRIC_REG_JCACHE_STATISTICS, new JCacheGaugeSet());
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/ConfigModule.java b/util/src/main/java/org/killbill/billing/util/glue/ConfigModule.java
index 0e73a81..5b139e5 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/ConfigModule.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/ConfigModule.java
@@ -18,11 +18,11 @@
 package org.killbill.billing.util.glue;
 
 import org.killbill.billing.platform.api.KillbillConfigSource;
-import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
+// import org.killbill.billing.tenant.api.TenantInternalApi.CacheInvalidationCallback;
 import org.killbill.billing.util.config.ConfigKillbillService;
 import org.killbill.billing.util.config.DefaultConfigKillbillService;
-import org.killbill.billing.util.config.tenant.CacheConfig;
-import org.killbill.billing.util.config.tenant.PerTenantConfigInvalidationCallback;
+// import org.killbill.billing.util.config.tenant.CacheConfig;
+// import org.killbill.billing.util.config.tenant.PerTenantConfigInvalidationCallback;
 
 import com.google.inject.name.Names;
 
@@ -36,8 +36,8 @@ public class ConfigModule extends KillBillModule {
 
     @Override
     protected void configure() {
-        bind(CacheConfig.class).asEagerSingleton();
-        bind(CacheInvalidationCallback.class).annotatedWith(Names.named(CONFIG_INVALIDATION_CALLBACK)).to(PerTenantConfigInvalidationCallback.class).asEagerSingleton();
+        // bind(CacheConfig.class).asEagerSingleton();
+        // bind(CacheInvalidationCallback.class).annotatedWith(Names.named(CONFIG_INVALIDATION_CALLBACK)).to(PerTenantConfigInvalidationCallback.class).asEagerSingleton();
         bind(ConfigKillbillService.class).to(DefaultConfigKillbillService.class).asEagerSingleton();;
     }
 }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/Eh107CacheManagerProvider.java b/util/src/main/java/org/killbill/billing/util/glue/Eh107CacheManagerProvider.java
index 49bf278..4406e12 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/Eh107CacheManagerProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/Eh107CacheManagerProvider.java
@@ -16,68 +16,68 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
+// package org.killbill.billing.util.glue;
 
-import java.net.URISyntaxException;
-import java.util.Set;
+// import java.net.URISyntaxException;
+// import java.util.Set;
 
-import javax.cache.CacheManager;
-import javax.cache.Caching;
-import javax.cache.spi.CachingProvider;
-import javax.inject.Inject;
-import javax.inject.Provider;
+// import javax.cache.CacheManager;
+// import javax.cache.Caching;
+// import javax.cache.spi.CachingProvider;
+// import javax.inject.Inject;
+// import javax.inject.Provider;
 
-import org.ehcache.core.spi.store.InternalCacheManager;
-import org.killbill.billing.util.cache.BaseCacheLoader;
-import org.killbill.billing.util.config.definition.EhCacheConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.ehcache.core.spi.store.InternalCacheManager;
+// import org.killbill.billing.util.cache.BaseCacheLoader;
+// import org.killbill.billing.util.config.definition.EhCacheConfig;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-import com.codahale.metrics.MetricRegistry;
+// import com.codahale.metrics.MetricRegistry;
 
-// EhCache specific provider
-public class Eh107CacheManagerProvider extends EhCacheProviderBase implements Provider<CacheManager> {
+// // EhCache specific provider
+// public class Eh107CacheManagerProvider extends EhCacheProviderBase implements Provider<CacheManager> {
 
-    private static final Logger logger = LoggerFactory.getLogger(Eh107CacheManagerProvider.class);
-    private static final EhcacheLoggingListener ehcacheLoggingListener = new EhcacheLoggingListener();
+//     private static final Logger logger = LoggerFactory.getLogger(Eh107CacheManagerProvider.class);
+//     private static final EhcacheLoggingListener ehcacheLoggingListener = new EhcacheLoggingListener();
 
-    private final Set<BaseCacheLoader> cacheLoaders;
+//     private final Set<BaseCacheLoader> cacheLoaders;
 
-    @Inject
-    public Eh107CacheManagerProvider(final MetricRegistry metricRegistry,
-                                     final EhCacheConfig cacheConfig,
-                                     final Set<BaseCacheLoader> cacheLoaders) {
-        super(metricRegistry, cacheConfig);
-        this.cacheLoaders = cacheLoaders;
-    }
+//     @Inject
+//     public Eh107CacheManagerProvider(final MetricRegistry metricRegistry,
+//                                      final EhCacheConfig cacheConfig,
+//                                      final Set<BaseCacheLoader> cacheLoaders) {
+//         super(metricRegistry, cacheConfig);
+//         this.cacheLoaders = cacheLoaders;
+//     }
 
-    @Override
-    public CacheManager get() {
-        // JSR-107 registration, required for JMX integration
-        final CachingProvider cachingProvider = Caching.getCachingProvider("org.ehcache.jsr107.EhcacheCachingProvider");
+//     @Override
+//     public CacheManager get() {
+//         // JSR-107 registration, required for JMX integration
+//         final CachingProvider cachingProvider = Caching.getCachingProvider("org.ehcache.jsr107.EhcacheCachingProvider");
 
-        CacheManager cacheManager;
-        try {
-            cacheManager = cachingProvider.getCacheManager(xmlConfigurationURL.toURI(), getClass().getClassLoader());
-        } catch (final RuntimeException e) {
-            logger.error("Unable to read ehcache.xml, using default configuration", e);
-            cacheManager = cachingProvider.getCacheManager();
-        } catch (final URISyntaxException e) {
-            logger.error("Unable to read ehcache.xml, using default configuration", e);
-            cacheManager = cachingProvider.getCacheManager();
-        }
+//         CacheManager cacheManager;
+//         try {
+//             cacheManager = cachingProvider.getCacheManager(xmlConfigurationURL.toURI(), getClass().getClassLoader());
+//         } catch (final RuntimeException e) {
+//             logger.error("Unable to read ehcache.xml, using default configuration", e);
+//             cacheManager = cachingProvider.getCacheManager();
+//         } catch (final URISyntaxException e) {
+//             logger.error("Unable to read ehcache.xml, using default configuration", e);
+//             cacheManager = cachingProvider.getCacheManager();
+//         }
 
-        // Make sure we start from a clean state - this is mainly useful for tests
-        cacheManager.unwrap(InternalCacheManager.class).deregisterListener(ehcacheLoggingListener);
-        cacheManager.unwrap(InternalCacheManager.class).registerListener(ehcacheLoggingListener);
+//         // Make sure we start from a clean state - this is mainly useful for tests
+//         cacheManager.unwrap(InternalCacheManager.class).deregisterListener(ehcacheLoggingListener);
+//         cacheManager.unwrap(InternalCacheManager.class).registerListener(ehcacheLoggingListener);
 
-        for (final BaseCacheLoader<?, ?> cacheLoader : cacheLoaders) {
-            createCache(cacheManager,
-                        cacheLoader.getCacheType().getCacheName(),
-                        cacheLoader.getCacheType().getKeyType(),
-                        cacheLoader.getCacheType().getValueType());
-        }
+//         for (final BaseCacheLoader<?, ?> cacheLoader : cacheLoaders) {
+//             createCache(cacheManager,
+//                         cacheLoader.getCacheType().getCacheName(),
+//                         cacheLoader.getCacheType().getKeyType(),
+//                         cacheLoader.getCacheType().getValueType());
+//         }
 
-        return cacheManager;
-    }
-}
+//         return cacheManager;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/EhcacheLoggingListener.java b/util/src/main/java/org/killbill/billing/util/glue/EhcacheLoggingListener.java
index 721072e..80978d8 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/EhcacheLoggingListener.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/EhcacheLoggingListener.java
@@ -15,30 +15,30 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
+// package org.killbill.billing.util.glue;
 
-import org.ehcache.Cache;
-import org.ehcache.Status;
-import org.ehcache.core.events.CacheManagerListener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.ehcache.Cache;
+// import org.ehcache.Status;
+// import org.ehcache.core.events.CacheManagerListener;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-public class EhcacheLoggingListener implements CacheManagerListener {
+// public class EhcacheLoggingListener implements CacheManagerListener {
 
-    private static final Logger logger = LoggerFactory.getLogger(EhcacheLoggingListener.class);
+//     private static final Logger logger = LoggerFactory.getLogger(EhcacheLoggingListener.class);
 
-    @Override
-    public void cacheAdded(final String alias, final Cache<?, ?> cache) {
-        logger.info("Added Ehcache '{}'", alias);
-    }
+//     @Override
+//     public void cacheAdded(final String alias, final Cache<?, ?> cache) {
+//         logger.info("Added Ehcache '{}'", alias);
+//     }
 
-    @Override
-    public void cacheRemoved(final String alias, final Cache<?, ?> cache) {
-        logger.info("Removed Ehcache '{}'", alias);
-    }
+//     @Override
+//     public void cacheRemoved(final String alias, final Cache<?, ?> cache) {
+//         logger.info("Removed Ehcache '{}'", alias);
+//     }
 
-    @Override
-    public void stateTransition(final Status from, final Status to) {
-        logger.info("Transitioning Ehcache from '{}' to '{}'", from, to);
-    }
-}
+//     @Override
+//     public void stateTransition(final Status from, final Status to) {
+//         logger.info("Transitioning Ehcache from '{}' to '{}'", from, to);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/EhCacheProviderBase.java b/util/src/main/java/org/killbill/billing/util/glue/EhCacheProviderBase.java
index 924e766..88a7909 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/EhCacheProviderBase.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/EhCacheProviderBase.java
@@ -15,41 +15,41 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
+// package org.killbill.billing.util.glue;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
+// import java.io.IOException;
+// import java.net.URISyntaxException;
+// import java.net.URL;
 
-import javax.cache.CacheManager;
-import javax.cache.configuration.Configuration;
-import javax.cache.configuration.MutableConfiguration;
+// import javax.cache.CacheManager;
+// import javax.cache.configuration.Configuration;
+// import javax.cache.configuration.MutableConfiguration;
 
-import org.killbill.billing.util.config.definition.EhCacheConfig;
-import org.killbill.xmlloader.UriAccessor;
+// import org.killbill.billing.util.config.definition.EhCacheConfig;
+// import org.killbill.xmlloader.UriAccessor;
 
-import com.codahale.metrics.MetricRegistry;
+// import com.codahale.metrics.MetricRegistry;
 
-abstract class EhCacheProviderBase extends CacheProviderBase {
+// abstract class EhCacheProviderBase extends CacheProviderBase {
 
-    final URL xmlConfigurationURL;
+//     final URL xmlConfigurationURL;
 
-    EhCacheProviderBase(final MetricRegistry metricRegistry, final EhCacheConfig cacheConfig) {
-        super(metricRegistry);
+//     EhCacheProviderBase(final MetricRegistry metricRegistry, final EhCacheConfig cacheConfig) {
+//         super(metricRegistry);
 
-        try {
-            xmlConfigurationURL = UriAccessor.toURL(cacheConfig.getCacheConfigLocation());
-        } catch (final IOException e) {
-            throw new RuntimeException(e);
-        } catch (final URISyntaxException e) {
-            throw new RuntimeException(e);
-        }
-    }
+//         try {
+//             xmlConfigurationURL = UriAccessor.toURL(cacheConfig.getCacheConfigLocation());
+//         } catch (final IOException e) {
+//             throw new RuntimeException(e);
+//         } catch (final URISyntaxException e) {
+//             throw new RuntimeException(e);
+//         }
+//     }
 
-    <K, V> void createCache(final CacheManager cacheManager, final String cacheName, final Class<K> keyType, final Class<V> valueType) {
-        // All other configuration options come from the ehcache.xml
-        final Configuration configuration = new MutableConfiguration<K, V>().setTypes(keyType, valueType)
-                                                                            .setStoreByValue(false); // Store by reference to avoid copying large objects (e.g. catalog)
-        super.createCache(cacheManager, cacheName, configuration);
-    }
-}
+//     <K, V> void createCache(final CacheManager cacheManager, final String cacheName, final Class<K> keyType, final Class<V> valueType) {
+//         // All other configuration options come from the ehcache.xml
+//         final Configuration configuration = new MutableConfiguration<K, V>().setTypes(keyType, valueType)
+//                                                                             .setStoreByValue(false); // Store by reference to avoid copying large objects (e.g. catalog)
+//         super.createCache(cacheManager, cacheName, configuration);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/EhcacheShiroManagerProvider.java b/util/src/main/java/org/killbill/billing/util/glue/EhcacheShiroManagerProvider.java
index 0d83057..7fd3d2c 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/EhcacheShiroManagerProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/EhcacheShiroManagerProvider.java
@@ -16,113 +16,113 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
-
-import java.lang.reflect.Field;
-
-import javax.cache.CacheManager;
-import javax.inject.Inject;
-import javax.inject.Provider;
-
-import org.apache.shiro.cache.Cache;
-import org.apache.shiro.cache.CacheException;
-import org.apache.shiro.mgt.DefaultSecurityManager;
-import org.apache.shiro.mgt.SecurityManager;
-import org.apache.shiro.mgt.SubjectDAO;
-import org.ehcache.integrations.shiro.EhcacheShiro;
-import org.ehcache.integrations.shiro.EhcacheShiroManager;
-import org.killbill.billing.util.config.definition.EhCacheConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.codahale.metrics.MetricRegistry;
-
-public class EhcacheShiroManagerProvider extends EhCacheProviderBase implements Provider<EhcacheShiroManager> {
-
-    private final SecurityManager securityManager;
-    private final SubjectDAO subjectDAO;
-    private final CacheManager eh107CacheManager;
-    private final org.ehcache.CacheManager ehcacheCacheManager;
-
-    @Inject
-    public EhcacheShiroManagerProvider(final SecurityManager securityManager,
-                                       final SubjectDAO subjectDAO,
-                                       final CacheManager eh107CacheManager,
-                                       final MetricRegistry metricRegistry,
-                                       final EhCacheConfig cacheConfig) {
-        super(metricRegistry, cacheConfig);
-        this.securityManager = securityManager;
-        this.subjectDAO = subjectDAO;
-        this.eh107CacheManager = eh107CacheManager;
-        this.ehcacheCacheManager = getEhcacheManager();
-    }
-
-    @Override
-    public EhcacheShiroManager get() {
-        final EhcacheShiroManager shiroEhCacheManager = new EhcacheShiroManagerWrapper(this);
-        // Same EhCache manager instance as the rest of the system
-        shiroEhCacheManager.setCacheManager(ehcacheCacheManager);
-
-        if (securityManager instanceof DefaultSecurityManager) {
-            // For RBAC only (see also KillbillJdbcTenantRealmProvider)
-            final DefaultSecurityManager securityManager = (DefaultSecurityManager) this.securityManager;
-            securityManager.setCacheManager(shiroEhCacheManager);
-            securityManager.setSubjectDAO(subjectDAO);
-        }
-
-        return shiroEhCacheManager;
-    }
-
-    // Shiro isn't JCache compatible
-    private org.ehcache.CacheManager getEhcacheManager() {
-        try {
-            final Field f = eh107CacheManager.getClass().getDeclaredField("ehCacheManager");
-            f.setAccessible(true);
-
-            return (org.ehcache.CacheManager) f.get(eh107CacheManager);
-        } catch (final IllegalAccessException e) {
-            throw new RuntimeException(e);
-        } catch (final NoSuchFieldException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    // Custom createCache implementation going through JCache layer to enable stats, etc.
-    private final class EhcacheShiroManagerWrapper extends EhcacheShiroManager {
-
-        private final Logger log = LoggerFactory.getLogger(EhcacheShiroManagerWrapper.class);
-
-        // shiro-activeSessionCache is lazily created by the first request and EhcacheShiroManagerProvider isn't thread safe
-        private final Object shiroCacheLock = new Object();
-
-        private final EhcacheShiroManagerProvider ehcacheShiroManagerProvider;
-
-        EhcacheShiroManagerWrapper(final EhcacheShiroManagerProvider ehcacheShiroManagerProvider) {
-            this.ehcacheShiroManagerProvider = ehcacheShiroManagerProvider;
-        }
-
-        public <K, V> Cache<K, V> getCache(final String name) throws CacheException {
-            log.trace("Acquiring EhcacheShiro instance named [{}]", name);
-
-            org.ehcache.Cache<Object, Object> cache = getCacheManager().getCache(name, Object.class, Object.class);
-
-            if (cache == null) {
-                synchronized (shiroCacheLock) {
-                    cache = getCacheManager().getCache(name, Object.class, Object.class);
-                    if (cache == null) {
-                        log.info("Cache with name {} does not yet exist.  Creating now.", name);
-                        ehcacheShiroManagerProvider.createCache(eh107CacheManager, name, Object.class, Object.class);
-                        cache = getCacheManager().getCache(name, Object.class, Object.class);
-                        log.info("Added EhcacheShiro named [{}]", name);
-                    } else {
-                        log.info("Using existing EhcacheShiro named [{}]", name);
-                    }
-                }
-            } else {
-                log.info("Using existing EhcacheShiro named [{}]", name);
-            }
-
-            return new EhcacheShiro<K, V>(cache);
-        }
-    }
-}
+// package org.killbill.billing.util.glue;
+
+// import java.lang.reflect.Field;
+
+// import javax.cache.CacheManager;
+// import javax.inject.Inject;
+// import javax.inject.Provider;
+
+// import org.apache.shiro.cache.Cache;
+// import org.apache.shiro.cache.CacheException;
+// import org.apache.shiro.mgt.DefaultSecurityManager;
+// import org.apache.shiro.mgt.SecurityManager;
+// import org.apache.shiro.mgt.SubjectDAO;
+// import org.ehcache.integrations.shiro.EhcacheShiro;
+// import org.ehcache.integrations.shiro.EhcacheShiroManager;
+// import org.killbill.billing.util.config.definition.EhCacheConfig;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
+
+// import com.codahale.metrics.MetricRegistry;
+
+// public class EhcacheShiroManagerProvider extends EhCacheProviderBase implements Provider<EhcacheShiroManager> {
+
+//     private final SecurityManager securityManager;
+//     private final SubjectDAO subjectDAO;
+//     private final CacheManager eh107CacheManager;
+//     private final org.ehcache.CacheManager ehcacheCacheManager;
+
+//     @Inject
+//     public EhcacheShiroManagerProvider(final SecurityManager securityManager,
+//                                        final SubjectDAO subjectDAO,
+//                                        final CacheManager eh107CacheManager,
+//                                        final MetricRegistry metricRegistry,
+//                                        final EhCacheConfig cacheConfig) {
+//         super(metricRegistry, cacheConfig);
+//         this.securityManager = securityManager;
+//         this.subjectDAO = subjectDAO;
+//         this.eh107CacheManager = eh107CacheManager;
+//         this.ehcacheCacheManager = getEhcacheManager();
+//     }
+
+//     @Override
+//     public EhcacheShiroManager get() {
+//         final EhcacheShiroManager shiroEhCacheManager = new EhcacheShiroManagerWrapper(this);
+//         // Same EhCache manager instance as the rest of the system
+//         shiroEhCacheManager.setCacheManager(ehcacheCacheManager);
+
+//         if (securityManager instanceof DefaultSecurityManager) {
+//             // For RBAC only (see also KillbillJdbcTenantRealmProvider)
+//             final DefaultSecurityManager securityManager = (DefaultSecurityManager) this.securityManager;
+//             securityManager.setCacheManager(shiroEhCacheManager);
+//             securityManager.setSubjectDAO(subjectDAO);
+//         }
+
+//         return shiroEhCacheManager;
+//     }
+
+//     // Shiro isn't JCache compatible
+//     private org.ehcache.CacheManager getEhcacheManager() {
+//         try {
+//             final Field f = eh107CacheManager.getClass().getDeclaredField("ehCacheManager");
+//             f.setAccessible(true);
+
+//             return (org.ehcache.CacheManager) f.get(eh107CacheManager);
+//         } catch (final IllegalAccessException e) {
+//             throw new RuntimeException(e);
+//         } catch (final NoSuchFieldException e) {
+//             throw new RuntimeException(e);
+//         }
+//     }
+
+//     // Custom createCache implementation going through JCache layer to enable stats, etc.
+//     private final class EhcacheShiroManagerWrapper extends EhcacheShiroManager {
+
+//         private final Logger log = LoggerFactory.getLogger(EhcacheShiroManagerWrapper.class);
+
+//         // shiro-activeSessionCache is lazily created by the first request and EhcacheShiroManagerProvider isn't thread safe
+//         private final Object shiroCacheLock = new Object();
+
+//         private final EhcacheShiroManagerProvider ehcacheShiroManagerProvider;
+
+//         EhcacheShiroManagerWrapper(final EhcacheShiroManagerProvider ehcacheShiroManagerProvider) {
+//             this.ehcacheShiroManagerProvider = ehcacheShiroManagerProvider;
+//         }
+
+//         public <K, V> Cache<K, V> getCache(final String name) throws CacheException {
+//             log.trace("Acquiring EhcacheShiro instance named [{}]", name);
+
+//             org.ehcache.Cache<Object, Object> cache = getCacheManager().getCache(name, Object.class, Object.class);
+
+//             if (cache == null) {
+//                 synchronized (shiroCacheLock) {
+//                     cache = getCacheManager().getCache(name, Object.class, Object.class);
+//                     if (cache == null) {
+//                         log.info("Cache with name {} does not yet exist.  Creating now.", name);
+//                         ehcacheShiroManagerProvider.createCache(eh107CacheManager, name, Object.class, Object.class);
+//                         cache = getCacheManager().getCache(name, Object.class, Object.class);
+//                         log.info("Added EhcacheShiro named [{}]", name);
+//                     } else {
+//                         log.info("Using existing EhcacheShiro named [{}]", name);
+//                     }
+//                 }
+//             } else {
+//                 log.info("Using existing EhcacheShiro named [{}]", name);
+//             }
+
+//             return new EhcacheShiro<K, V>(cache);
+//         }
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/KillBillShiroModule.java b/util/src/main/java/org/killbill/billing/util/glue/KillBillShiroModule.java
index 2f9a3e0..40ce690 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/KillBillShiroModule.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/KillBillShiroModule.java
@@ -18,7 +18,7 @@
 
 package org.killbill.billing.util.glue;
 
-import org.apache.shiro.cache.CacheManager;
+// import org.apache.shiro.cache.CacheManager;
 import org.apache.shiro.guice.ShiroModule;
 import org.apache.shiro.mgt.SecurityManager;
 import org.apache.shiro.mgt.SubjectDAO;
@@ -28,7 +28,7 @@ import org.apache.shiro.session.mgt.SessionManager;
 import org.apache.shiro.session.mgt.eis.SessionDAO;
 import org.killbill.billing.platform.api.KillbillConfigSource;
 import org.killbill.billing.util.config.definition.RbacConfig;
-import org.killbill.billing.util.config.definition.RedisCacheConfig;
+// import org.killbill.billing.util.config.definition.RedisCacheConfig;
 import org.killbill.billing.util.security.shiro.realm.KillBillJdbcRealm;
 import org.killbill.billing.util.security.shiro.realm.KillBillJndiLdapRealm;
 import org.killbill.billing.util.security.shiro.realm.KillBillOktaRealm;
@@ -114,19 +114,19 @@ public class KillBillShiroModule extends ShiroModule {
     protected void bindSecurityManager(final AnnotatedBindingBuilder<? super SecurityManager> bind) {
         super.bindSecurityManager(bind);
 
-        final RedisCacheConfig redisCacheConfig = new ConfigurationObjectFactory(new ConfigSource() {
-            @Override
-            public String getString(final String propertyName) {
-                return configSource.getString(propertyName);
-            }
-        }).build(RedisCacheConfig.class);
-
-        // Magic provider to configure the cache manager
-        if (redisCacheConfig.isRedisCachingEnabled()) {
-            bind(CacheManager.class).toProvider(RedisShiroManagerProvider.class).asEagerSingleton();
-        } else {
-            bind(CacheManager.class).toProvider(EhcacheShiroManagerProvider.class).asEagerSingleton();
-        }
+        // final RedisCacheConfig redisCacheConfig = new ConfigurationObjectFactory(new ConfigSource() {
+        //     @Override
+        //     public String getString(final String propertyName) {
+        //         return configSource.getString(propertyName);
+        //     }
+        // }).build(RedisCacheConfig.class);
+
+        // // Magic provider to configure the cache manager
+        // if (redisCacheConfig.isRedisCachingEnabled()) {
+        //     bind(CacheManager.class).toProvider(RedisShiroManagerProvider.class).asEagerSingleton();
+        // } else {
+        //     bind(CacheManager.class).toProvider(EhcacheShiroManagerProvider.class).asEagerSingleton();
+        // }
     }
 
     @Override
diff --git a/util/src/main/java/org/killbill/billing/util/glue/NoCachingInternalCallContextFactoryProvider.java b/util/src/main/java/org/killbill/billing/util/glue/NoCachingInternalCallContextFactoryProvider.java
index 51aa352..0fd6435 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/NoCachingInternalCallContextFactoryProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/NoCachingInternalCallContextFactoryProvider.java
@@ -37,6 +37,6 @@ public class NoCachingInternalCallContextFactoryProvider implements Provider<Int
 
     @Override
     public InternalCallContextFactory get() {
-        return new InternalCallContextFactory(null, clock, nonEntityDao, null);
+        return new InternalCallContextFactory(null, clock, nonEntityDao);
     }
 }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/Redis107CacheManagerProvider.java b/util/src/main/java/org/killbill/billing/util/glue/Redis107CacheManagerProvider.java
index 1d51e13..9e24ded 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/Redis107CacheManagerProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/Redis107CacheManagerProvider.java
@@ -15,54 +15,54 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
+// package org.killbill.billing.util.glue;
 
-import java.util.Set;
+// import java.util.Set;
 
-import javax.cache.CacheManager;
-import javax.cache.Caching;
-import javax.cache.spi.CachingProvider;
-import javax.inject.Inject;
-import javax.inject.Provider;
+// import javax.cache.CacheManager;
+// import javax.cache.Caching;
+// import javax.cache.spi.CachingProvider;
+// import javax.inject.Inject;
+// import javax.inject.Provider;
 
-import org.killbill.billing.util.cache.BaseCacheLoader;
-import org.redisson.api.RedissonClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+// import org.killbill.billing.util.cache.BaseCacheLoader;
+// import org.redisson.api.RedissonClient;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
 
-import com.codahale.metrics.MetricRegistry;
-import com.google.inject.name.Named;
+// import com.codahale.metrics.MetricRegistry;
+// import com.google.inject.name.Named;
 
-import static org.killbill.billing.util.glue.CacheModule.REDIS_CACHE_CLIENT;
+// import static org.killbill.billing.util.glue.CacheModule.REDIS_CACHE_CLIENT;
 
-public class Redis107CacheManagerProvider extends RedisCacheProviderBase implements Provider<CacheManager> {
+// public class Redis107CacheManagerProvider extends RedisCacheProviderBase implements Provider<CacheManager> {
 
-    private static final Logger logger = LoggerFactory.getLogger(Redis107CacheManagerProvider.class);
+//     private static final Logger logger = LoggerFactory.getLogger(Redis107CacheManagerProvider.class);
 
-    private final Set<BaseCacheLoader> cacheLoaders;
+//     private final Set<BaseCacheLoader> cacheLoaders;
 
-    @Inject
-    public Redis107CacheManagerProvider(final MetricRegistry metricRegistry,
-                                        @Named(REDIS_CACHE_CLIENT) final RedissonClient redissonClient,
-                                        final Set<BaseCacheLoader> cacheLoaders) {
-        super(metricRegistry, redissonClient);
-        this.cacheLoaders = cacheLoaders;
-    }
+//     @Inject
+//     public Redis107CacheManagerProvider(final MetricRegistry metricRegistry,
+//                                         @Named(REDIS_CACHE_CLIENT) final RedissonClient redissonClient,
+//                                         final Set<BaseCacheLoader> cacheLoaders) {
+//         super(metricRegistry, redissonClient);
+//         this.cacheLoaders = cacheLoaders;
+//     }
 
-    @Override
-    public CacheManager get() {
-        // JSR-107 registration, required for JMX integration
-        final CachingProvider cachingProvider = Caching.getCachingProvider("org.redisson.jcache.JCachingProvider");
+//     @Override
+//     public CacheManager get() {
+//         // JSR-107 registration, required for JMX integration
+//         final CachingProvider cachingProvider = Caching.getCachingProvider("org.redisson.jcache.JCachingProvider");
 
-        final CacheManager cacheManager = cachingProvider.getCacheManager();
+//         final CacheManager cacheManager = cachingProvider.getCacheManager();
 
-        for (final BaseCacheLoader<?, ?> cacheLoader : cacheLoaders) {
-            createCache(cacheManager,
-                        cacheLoader.getCacheType().getCacheName(),
-                        cacheLoader.getCacheType().getKeyType(),
-                        cacheLoader.getCacheType().getValueType());
-        }
+//         for (final BaseCacheLoader<?, ?> cacheLoader : cacheLoaders) {
+//             createCache(cacheManager,
+//                         cacheLoader.getCacheType().getCacheName(),
+//                         cacheLoader.getCacheType().getKeyType(),
+//                         cacheLoader.getCacheType().getValueType());
+//         }
 
-        return cacheManager;
-    }
-}
+//         return cacheManager;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/RedisCacheProviderBase.java b/util/src/main/java/org/killbill/billing/util/glue/RedisCacheProviderBase.java
index 1a5effc..160fd8d 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/RedisCacheProviderBase.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/RedisCacheProviderBase.java
@@ -15,31 +15,31 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
+// package org.killbill.billing.util.glue;
 
-import javax.cache.CacheManager;
-import javax.cache.configuration.Configuration;
-import javax.cache.configuration.MutableConfiguration;
+// import javax.cache.CacheManager;
+// import javax.cache.configuration.Configuration;
+// import javax.cache.configuration.MutableConfiguration;
 
-import org.redisson.api.RedissonClient;
-import org.redisson.jcache.configuration.RedissonConfiguration;
+// import org.redisson.api.RedissonClient;
+// import org.redisson.jcache.configuration.RedissonConfiguration;
 
-import com.codahale.metrics.MetricRegistry;
+// import com.codahale.metrics.MetricRegistry;
 
-abstract class RedisCacheProviderBase extends CacheProviderBase {
+// abstract class RedisCacheProviderBase extends CacheProviderBase {
 
-    private final RedissonClient redissonClient;
+//     private final RedissonClient redissonClient;
 
-    RedisCacheProviderBase(final MetricRegistry metricRegistry, final RedissonClient redissonClient) {
-        super(metricRegistry);
-        this.redissonClient = redissonClient;
-    }
+//     RedisCacheProviderBase(final MetricRegistry metricRegistry, final RedissonClient redissonClient) {
+//         super(metricRegistry);
+//         this.redissonClient = redissonClient;
+//     }
 
-    <K, V> void createCache(final CacheManager cacheManager, final String cacheName, final Class<K> keyType, final Class<V> valueType) {
-        final Configuration jcacheConfig = new MutableConfiguration().setTypes(keyType, valueType);
+//     <K, V> void createCache(final CacheManager cacheManager, final String cacheName, final Class<K> keyType, final Class<V> valueType) {
+//         final Configuration jcacheConfig = new MutableConfiguration().setTypes(keyType, valueType);
 
-        final Configuration redissonConfiguration = RedissonConfiguration.fromInstance(redissonClient, jcacheConfig);
+//         final Configuration redissonConfiguration = RedissonConfiguration.fromInstance(redissonClient, jcacheConfig);
 
-        createCache(cacheManager, cacheName, redissonConfiguration);
-    }
-}
+//         createCache(cacheManager, cacheName, redissonConfiguration);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/RedisShiroManager.java b/util/src/main/java/org/killbill/billing/util/glue/RedisShiroManager.java
index 0a08407..b0c916c 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/RedisShiroManager.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/RedisShiroManager.java
@@ -15,131 +15,131 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.Set;
-
-import javax.cache.Cache.Entry;
-
-import org.apache.shiro.cache.Cache;
-import org.apache.shiro.cache.CacheException;
-import org.apache.shiro.cache.CacheManager;
-import org.redisson.api.RedissonClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.codahale.metrics.MetricRegistry;
-
-public class RedisShiroManager extends RedisCacheProviderBase implements CacheManager {
-
-    private static final Logger log = LoggerFactory.getLogger(RedisShiroManager.class);
-
-    private final javax.cache.CacheManager eh107CacheManager;
-
-    public RedisShiroManager(final javax.cache.CacheManager eh107CacheManager,
-                             final MetricRegistry metricRegistry,
-                             final RedissonClient redissonClient) {
-        super(metricRegistry, redissonClient);
-        this.eh107CacheManager = eh107CacheManager;
-    }
-
-    @Override
-    public <K, V> Cache<K, V> getCache(final String name) throws CacheException {
-        log.trace("Acquiring RedisShiro instance named [{}]", name);
-
-        javax.cache.Cache<Object, Object> cache = eh107CacheManager.getCache(name, Object.class, Object.class);
-
-        if (cache == null) {
-            log.info("Cache with name {} does not yet exist.  Creating now.", name);
-            createCache(eh107CacheManager, name, Object.class, Object.class);
-            cache = eh107CacheManager.getCache(name, Object.class, Object.class);
-            log.info("Added RedisShiro named [{}]", name);
-        } else {
-            log.info("Using existing RedisShiro named [{}]", name);
-        }
-
-        return new RedisCache<K, V>(cache);
-    }
-
-    private static final class RedisCache<K, V> implements Cache<K, V> {
-
-        private final javax.cache.Cache<K, V> cache;
-
-        public RedisCache(final javax.cache.Cache cache) {
-            this.cache = cache;
-
-        }
-
-        @Override
-        public V get(final K key) throws CacheException {
-            return cache.get(key);
-        }
-
-        @Override
-        public V put(final K key, final V value) throws CacheException {
-            V previousValue;
-            while (true) {
-                previousValue = cache.get(key);
-                if (previousValue == null) {
-                    if (cache.putIfAbsent(key, value)) {
-                        break;
-                    }
-                } else {
-                    if (cache.replace(key, value)) {
-                        break;
-                    }
-                }
-            }
-
-            return previousValue;
-        }
-
-        @Override
-        public V remove(final K key) throws CacheException {
-            V previousValue;
-            while (true) {
-                previousValue = cache.get(key);
-                if (previousValue == null) {
-                    break;
-                } else {
-                    if (cache.remove(key)) {
-                        break;
-                    }
-                }
-            }
-
-            return previousValue;
-        }
-
-        @Override
-        public void clear() throws CacheException {
-            cache.clear();
-        }
-
-        @Override
-        public int size() {
-            return keys().size();
-        }
-
-        @Override
-        public Set<K> keys() {
-            final Set<K> result = new HashSet<K>();
-            for (final Entry<K, V> entry : cache) {
-                result.add(entry.getKey());
-            }
-            return result;
-        }
-
-        @Override
-        public Collection<V> values() {
-            final Collection<V> result = new LinkedList<V>();
-            for (final Entry<K, V> entry : cache) {
-                result.add(entry.getValue());
-            }
-            return result;
-        }
-    }
-}
+// package org.killbill.billing.util.glue;
+
+// import java.util.Collection;
+// import java.util.HashSet;
+// import java.util.LinkedList;
+// import java.util.Set;
+
+// import javax.cache.Cache.Entry;
+
+// import org.apache.shiro.cache.Cache;
+// import org.apache.shiro.cache.CacheException;
+// import org.apache.shiro.cache.CacheManager;
+// import org.redisson.api.RedissonClient;
+// import org.slf4j.Logger;
+// import org.slf4j.LoggerFactory;
+
+// import com.codahale.metrics.MetricRegistry;
+
+// public class RedisShiroManager extends RedisCacheProviderBase implements CacheManager {
+
+//     private static final Logger log = LoggerFactory.getLogger(RedisShiroManager.class);
+
+//     private final javax.cache.CacheManager eh107CacheManager;
+
+//     public RedisShiroManager(final javax.cache.CacheManager eh107CacheManager,
+//                              final MetricRegistry metricRegistry,
+//                              final RedissonClient redissonClient) {
+//         super(metricRegistry, redissonClient);
+//         this.eh107CacheManager = eh107CacheManager;
+//     }
+
+//     @Override
+//     public <K, V> Cache<K, V> getCache(final String name) throws CacheException {
+//         log.trace("Acquiring RedisShiro instance named [{}]", name);
+
+//         javax.cache.Cache<Object, Object> cache = eh107CacheManager.getCache(name, Object.class, Object.class);
+
+//         if (cache == null) {
+//             log.info("Cache with name {} does not yet exist.  Creating now.", name);
+//             createCache(eh107CacheManager, name, Object.class, Object.class);
+//             cache = eh107CacheManager.getCache(name, Object.class, Object.class);
+//             log.info("Added RedisShiro named [{}]", name);
+//         } else {
+//             log.info("Using existing RedisShiro named [{}]", name);
+//         }
+
+//         return new RedisCache<K, V>(cache);
+//     }
+
+//     private static final class RedisCache<K, V> implements Cache<K, V> {
+
+//         private final javax.cache.Cache<K, V> cache;
+
+//         public RedisCache(final javax.cache.Cache cache) {
+//             this.cache = cache;
+
+//         }
+
+//         @Override
+//         public V get(final K key) throws CacheException {
+//             return cache.get(key);
+//         }
+
+//         @Override
+//         public V put(final K key, final V value) throws CacheException {
+//             V previousValue;
+//             while (true) {
+//                 previousValue = cache.get(key);
+//                 if (previousValue == null) {
+//                     if (cache.putIfAbsent(key, value)) {
+//                         break;
+//                     }
+//                 } else {
+//                     if (cache.replace(key, value)) {
+//                         break;
+//                     }
+//                 }
+//             }
+
+//             return previousValue;
+//         }
+
+//         @Override
+//         public V remove(final K key) throws CacheException {
+//             V previousValue;
+//             while (true) {
+//                 previousValue = cache.get(key);
+//                 if (previousValue == null) {
+//                     break;
+//                 } else {
+//                     if (cache.remove(key)) {
+//                         break;
+//                     }
+//                 }
+//             }
+
+//             return previousValue;
+//         }
+
+//         @Override
+//         public void clear() throws CacheException {
+//             cache.clear();
+//         }
+
+//         @Override
+//         public int size() {
+//             return keys().size();
+//         }
+
+//         @Override
+//         public Set<K> keys() {
+//             final Set<K> result = new HashSet<K>();
+//             for (final Entry<K, V> entry : cache) {
+//                 result.add(entry.getKey());
+//             }
+//             return result;
+//         }
+
+//         @Override
+//         public Collection<V> values() {
+//             final Collection<V> result = new LinkedList<V>();
+//             for (final Entry<K, V> entry : cache) {
+//                 result.add(entry.getValue());
+//             }
+//             return result;
+//         }
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/RedisShiroManagerProvider.java b/util/src/main/java/org/killbill/billing/util/glue/RedisShiroManagerProvider.java
index e992feb..c5c6e02 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/RedisShiroManagerProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/RedisShiroManagerProvider.java
@@ -15,55 +15,55 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
+// package org.killbill.billing.util.glue;
 
-import javax.cache.CacheManager;
-import javax.inject.Inject;
-import javax.inject.Provider;
+// import javax.cache.CacheManager;
+// import javax.inject.Inject;
+// import javax.inject.Provider;
 
-import org.apache.shiro.mgt.DefaultSecurityManager;
-import org.apache.shiro.mgt.SecurityManager;
-import org.apache.shiro.mgt.SubjectDAO;
-import org.redisson.api.RedissonClient;
+// import org.apache.shiro.mgt.DefaultSecurityManager;
+// import org.apache.shiro.mgt.SecurityManager;
+// import org.apache.shiro.mgt.SubjectDAO;
+// import org.redisson.api.RedissonClient;
 
-import com.codahale.metrics.MetricRegistry;
-import com.google.inject.name.Named;
+// import com.codahale.metrics.MetricRegistry;
+// import com.google.inject.name.Named;
 
-import static org.killbill.billing.util.glue.CacheModule.REDIS_CACHE_CLIENT;
+// import static org.killbill.billing.util.glue.CacheModule.REDIS_CACHE_CLIENT;
 
-public class RedisShiroManagerProvider implements Provider<RedisShiroManager> {
+// public class RedisShiroManagerProvider implements Provider<RedisShiroManager> {
 
-    private final SecurityManager securityManager;
-    private final SubjectDAO subjectDAO;
-    private final CacheManager eh107CacheManager;
-    private final MetricRegistry metricRegistry;
-    private final RedissonClient redissonClient;
+//     private final SecurityManager securityManager;
+//     private final SubjectDAO subjectDAO;
+//     private final CacheManager eh107CacheManager;
+//     private final MetricRegistry metricRegistry;
+//     private final RedissonClient redissonClient;
 
-    @Inject
-    public RedisShiroManagerProvider(final SecurityManager securityManager,
-                                     final SubjectDAO subjectDAO,
-                                     final CacheManager eh107CacheManager,
-                                     final MetricRegistry metricRegistry,
-                                     @Named(REDIS_CACHE_CLIENT) final RedissonClient redissonClient) {
-        this.securityManager = securityManager;
-        this.subjectDAO = subjectDAO;
-        this.eh107CacheManager = eh107CacheManager;
-        this.metricRegistry = metricRegistry;
-        this.redissonClient = redissonClient;
-    }
+//     @Inject
+//     public RedisShiroManagerProvider(final SecurityManager securityManager,
+//                                      final SubjectDAO subjectDAO,
+//                                      final CacheManager eh107CacheManager,
+//                                      final MetricRegistry metricRegistry,
+//                                      @Named(REDIS_CACHE_CLIENT) final RedissonClient redissonClient) {
+//         this.securityManager = securityManager;
+//         this.subjectDAO = subjectDAO;
+//         this.eh107CacheManager = eh107CacheManager;
+//         this.metricRegistry = metricRegistry;
+//         this.redissonClient = redissonClient;
+//     }
 
-    @Override
-    public RedisShiroManager get() {
-        // Same Redis manager instance as the rest of the system
-        final RedisShiroManager shiroRedisManager = new RedisShiroManager(eh107CacheManager, metricRegistry, redissonClient);
+//     @Override
+//     public RedisShiroManager get() {
+//         // Same Redis manager instance as the rest of the system
+//         final RedisShiroManager shiroRedisManager = new RedisShiroManager(eh107CacheManager, metricRegistry, redissonClient);
 
-        if (securityManager instanceof DefaultSecurityManager) {
-            // For RBAC only (see also KillbillJdbcTenantRealmProvider)
-            final DefaultSecurityManager securityManager = (DefaultSecurityManager) this.securityManager;
-            securityManager.setCacheManager(shiroRedisManager);
-            securityManager.setSubjectDAO(subjectDAO);
-        }
+//         if (securityManager instanceof DefaultSecurityManager) {
+//             // For RBAC only (see also KillbillJdbcTenantRealmProvider)
+//             final DefaultSecurityManager securityManager = (DefaultSecurityManager) this.securityManager;
+//             securityManager.setCacheManager(shiroRedisManager);
+//             securityManager.setSubjectDAO(subjectDAO);
+//         }
 
-        return shiroRedisManager;
-    }
-}
+//         return shiroRedisManager;
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/RedissonCacheClientProvider.java b/util/src/main/java/org/killbill/billing/util/glue/RedissonCacheClientProvider.java
index 8d4f958..13d9fd2 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/RedissonCacheClientProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/RedissonCacheClientProvider.java
@@ -15,46 +15,46 @@
  * under the License.
  */
 
-package org.killbill.billing.util.glue;
-
-import javax.inject.Inject;
-
-import org.killbill.billing.util.config.definition.RedisCacheConfig;
-import org.redisson.Redisson;
-import org.redisson.api.RedissonClient;
-import org.redisson.client.codec.Codec;
-import org.redisson.codec.SerializationCodec;
-import org.redisson.config.Config;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.inject.Provider;
-
-public class RedissonCacheClientProvider implements Provider<RedissonClient> {
-
-    private final String address;
-    private final int connectionMinimumIdleSize;
-
-    @Inject
-    public RedissonCacheClientProvider(final RedisCacheConfig cacheConfig) {
-        this(cacheConfig.getUrl(), cacheConfig.getConnectionMinimumIdleSize());
-    }
-
-    @VisibleForTesting
-    public RedissonCacheClientProvider(final String address, final int connectionMinimumIdleSize) {
-        this.address = address;
-        this.connectionMinimumIdleSize = connectionMinimumIdleSize;
-    }
-
-    @Override
-    public RedissonClient get() {
-        // JDK serialization codec for now, but we can do better in speed and space
-        final Codec codec = new SerializationCodec();
-
-        final Config redissonCfg = new Config();
-        redissonCfg.setCodec(codec)
-                   .useSingleServer()
-                   .setAddress(address)
-                   .setConnectionMinimumIdleSize(connectionMinimumIdleSize);
-        return Redisson.create(redissonCfg);
-    }
-}
+// package org.killbill.billing.util.glue;
+
+// import javax.inject.Inject;
+
+// import org.killbill.billing.util.config.definition.RedisCacheConfig;
+// import org.redisson.Redisson;
+// import org.redisson.api.RedissonClient;
+// import org.redisson.client.codec.Codec;
+// import org.redisson.codec.SerializationCodec;
+// import org.redisson.config.Config;
+
+// import com.google.common.annotations.VisibleForTesting;
+// import com.google.inject.Provider;
+
+// public class RedissonCacheClientProvider implements Provider<RedissonClient> {
+
+//     private final String address;
+//     private final int connectionMinimumIdleSize;
+
+//     @Inject
+//     public RedissonCacheClientProvider(final RedisCacheConfig cacheConfig) {
+//         this(cacheConfig.getUrl(), cacheConfig.getConnectionMinimumIdleSize());
+//     }
+
+//     @VisibleForTesting
+//     public RedissonCacheClientProvider(final String address, final int connectionMinimumIdleSize) {
+//         this.address = address;
+//         this.connectionMinimumIdleSize = connectionMinimumIdleSize;
+//     }
+
+//     @Override
+//     public RedissonClient get() {
+//         // JDK serialization codec for now, but we can do better in speed and space
+//         final Codec codec = new SerializationCodec();
+
+//         final Config redissonCfg = new Config();
+//         redissonCfg.setCodec(codec)
+//                    .useSingleServer()
+//                    .setAddress(address)
+//                    .setConnectionMinimumIdleSize(connectionMinimumIdleSize);
+//         return Redisson.create(redissonCfg);
+//     }
+// }
diff --git a/util/src/main/java/org/killbill/billing/util/glue/SessionDAOProvider.java b/util/src/main/java/org/killbill/billing/util/glue/SessionDAOProvider.java
index 0cfba7e..62027dc 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/SessionDAOProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/SessionDAOProvider.java
@@ -27,9 +27,9 @@ import org.apache.shiro.session.mgt.SessionManager;
 import org.apache.shiro.session.mgt.eis.CachingSessionDAO;
 import org.apache.shiro.session.mgt.eis.SessionDAO;
 import org.killbill.billing.util.config.definition.RbacConfig;
-import org.killbill.billing.util.config.definition.RedisCacheConfig;
+// import org.killbill.billing.util.config.definition.RedisCacheConfig;
 import org.killbill.billing.util.security.shiro.dao.JDBCSessionDao;
-import org.killbill.billing.util.security.shiro.dao.RedisSessionDao;
+// import org.killbill.billing.util.security.shiro.dao.RedisSessionDao;
 import org.skife.jdbi.v2.IDBI;
 
 import static org.killbill.billing.util.glue.IDBISetup.MAIN_RO_IDBI_NAMED;
@@ -40,25 +40,25 @@ public class SessionDAOProvider implements Provider<SessionDAO> {
     private final IDBI dbi;
     private final IDBI roDbi;
     private final RbacConfig rbacConfig;
-    private final RedisCacheConfig redisCacheConfig;
+    // private final RedisCacheConfig redisCacheConfig;
 
     @Inject
-    public SessionDAOProvider(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final SessionManager sessionManager, final RbacConfig rbacConfig, final RedisCacheConfig redisCacheConfig) {
+    public SessionDAOProvider(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final SessionManager sessionManager, final RbacConfig rbacConfig){//, final RedisCacheConfig redisCacheConfig) {
         this.sessionManager = sessionManager;
         this.dbi = dbi;
         this.roDbi = roDbi;
         this.rbacConfig = rbacConfig;
-        this.redisCacheConfig = redisCacheConfig;
+        // this.redisCacheConfig = redisCacheConfig;
     }
 
     @Override
     public SessionDAO get() {
         final CachingSessionDAO sessionDao;
-        if (redisCacheConfig.isRedisCachingEnabled()) {
-            sessionDao = new RedisSessionDao();
-        } else {
+        // if (redisCacheConfig.isRedisCachingEnabled()) {
+        //     sessionDao = new RedisSessionDao();
+        // } else {
             sessionDao = new JDBCSessionDao(dbi, roDbi);
-        }
+        // }
 
         if (sessionManager instanceof DefaultSessionManager) {
             final DefaultSessionManager defaultSessionManager = (DefaultSessionManager) sessionManager;
diff --git a/util/src/main/java/org/killbill/billing/util/security/AnnotationHierarchicalResolver.java b/util/src/main/java/org/killbill/billing/util/security/AnnotationHierarchicalResolver.java
index 7ae7360..dc8a72f 100644
--- a/util/src/main/java/org/killbill/billing/util/security/AnnotationHierarchicalResolver.java
+++ b/util/src/main/java/org/killbill/billing/util/security/AnnotationHierarchicalResolver.java
@@ -122,14 +122,14 @@ public class AnnotationHierarchicalResolver implements AnnotationResolver {
         return annotation;
     }
 
-    private static final Map<Class<?>, Boolean> annotatedInterfaceCache = new WeakHashMap<Class<?>, Boolean>();
+    // private static final Map<Class<?>, Boolean> annotatedInterfaceCache = new WeakHashMap<Class<?>, Boolean>();
 
     private static boolean isInterfaceWithAnnotatedMethods(final Class<?> iface) {
-        synchronized (annotatedInterfaceCache) {
-            final Boolean flag = annotatedInterfaceCache.get(iface);
-            if (flag != null) {
-                return flag;
-            }
+        // synchronized (annotatedInterfaceCache) {
+            // final Boolean flag = annotatedInterfaceCache.get(iface);
+            // if (flag != null) {
+            //     return flag;
+            // }
             boolean found = false;
             for (final Method ifcMethod : iface.getMethods()) {
                 if (ifcMethod.getAnnotations().length > 0) {
@@ -137,8 +137,8 @@ public class AnnotationHierarchicalResolver implements AnnotationResolver {
                     break;
                 }
             }
-            annotatedInterfaceCache.put(iface, found);
+            // annotatedInterfaceCache.put(iface, found);
             return found;
         }
-    }
+    // }
 }
diff --git a/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDao.java b/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDao.java
index 9cb4bdc..9b9e4a4 100644
--- a/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDao.java
+++ b/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDao.java
@@ -35,7 +35,7 @@ import org.killbill.billing.util.api.TagApiException;
 import org.killbill.billing.util.audit.AuditLogWithHistory;
 import org.killbill.billing.util.audit.ChangeType;
 import org.killbill.billing.util.audit.dao.AuditDao;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.dao.TableName;
@@ -74,8 +74,11 @@ public class DefaultTagDao extends EntityDaoBase<TagModelDao, Tag, TagApiExcepti
 
     @Inject
     public DefaultTagDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final TagEventBuilder tagEventBuilder, final PersistentBus bus, final Clock clock,
-                         final CacheControllerDispatcher controllerDispatcher, final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory, final AuditDao auditDao) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, controllerDispatcher, nonEntityDao, internalCallContextFactory), TagSqlDao.class);
+                         // final CacheControllerDispatcher controllerDispatcher, 
+                         final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory, final AuditDao auditDao) {
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+            // controllerDispatcher,
+             nonEntityDao, internalCallContextFactory), TagSqlDao.class);
         this.tagEventBuilder = tagEventBuilder;
         this.bus = bus;
         this.auditDao = auditDao;
diff --git a/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDefinitionDao.java b/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDefinitionDao.java
index ce6fd4e..e70d747 100644
--- a/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDefinitionDao.java
+++ b/util/src/main/java/org/killbill/billing/util/tag/dao/DefaultTagDefinitionDao.java
@@ -36,7 +36,7 @@ import org.killbill.billing.util.api.TagDefinitionApiException;
 import org.killbill.billing.util.audit.AuditLogWithHistory;
 import org.killbill.billing.util.audit.ChangeType;
 import org.killbill.billing.util.audit.dao.AuditDao;
-import org.killbill.billing.util.cache.CacheControllerDispatcher;
+// import org.killbill.billing.util.cache.CacheControllerDispatcher;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
 import org.killbill.billing.util.dao.TableName;
@@ -70,8 +70,11 @@ public class DefaultTagDefinitionDao extends EntityDaoBase<TagDefinitionModelDao
 
     @Inject
     public DefaultTagDefinitionDao(final IDBI dbi, @Named(MAIN_RO_IDBI_NAMED) final IDBI roDbi, final TagEventBuilder tagEventBuilder, final PersistentBus bus, final Clock clock,
-                                   final CacheControllerDispatcher controllerDispatcher, final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory, final AuditDao auditDao) {
-        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, controllerDispatcher, nonEntityDao, internalCallContextFactory), TagDefinitionSqlDao.class);
+                                   // final CacheControllerDispatcher controllerDispatcher,
+                                    final NonEntityDao nonEntityDao, final InternalCallContextFactory internalCallContextFactory, final AuditDao auditDao) {
+        super(new EntitySqlDaoTransactionalJdbiWrapper(dbi, roDbi, clock, 
+            // controllerDispatcher,
+             nonEntityDao, internalCallContextFactory), TagDefinitionSqlDao.class);
         this.tagEventBuilder = tagEventBuilder;
         this.bus = bus;
         this.auditDao = auditDao;
diff --git a/util/src/main/resources/ehcache.xml b/util/src/main/resources/ehcache.xml
index b2d732c..787e569 100644
--- a/util/src/main/resources/ehcache.xml
+++ b/util/src/main/resources/ehcache.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<!-- <?xml version="1.0" encoding="UTF-8"?>
+
 
-<!--
   ~ Copyright 2010-2014 Ning, Inc.
   ~ Copyright 2014-2017 Groupon, Inc
   ~ Copyright 2014-2017 The Billing Project, LLC
@@ -16,7 +16,7 @@
   ~ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
   ~ License for the specific language governing permissions and limitations
   ~ under the License.
-  -->
+  
 
 <ehcache:config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
                 xmlns:ehcache='http://www.ehcache.org/v3'
@@ -30,7 +30,7 @@
                                     http://www.ehcache.org/schema/ehcache-clustered-ext-3.3.xsd">
     <ehcache:service>
         <jsr107:defaults default-template="defaultCacheConfiguration" enable-management="true" enable-statistics="true">
-            <!-- See AuditSqlDao -->
+            See AuditSqlDao
             <jsr107:cache name="audit-log" template="defaultShortTTLCacheConfiguration"/>
             <jsr107:cache name="audit-log-via-history" template="defaultShortTTLCacheConfiguration"/>
         </jsr107:defaults>
@@ -57,3 +57,4 @@
     </ehcache:cache-template>
 </ehcache:config>
 
+ -->
\ No newline at end of file