killbill-uncached

Changes

Details

diff --git a/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java b/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java
index f177991..a9a2c06 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java
@@ -63,7 +63,7 @@ import com.ning.billing.analytics.model.BusinessInvoicePaymentModelDao;
 import com.ning.billing.analytics.model.BusinessOverdueStatusModelDao;
 import com.ning.billing.analytics.model.BusinessSubscriptionTransitionModelDao;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.payment.api.Payment;
 import com.ning.billing.payment.api.PaymentApiException;
 import com.ning.billing.util.callcontext.CallContext;
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessOverdueStatusDao.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessOverdueStatusDao.java
index 076843f..818f400 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessOverdueStatusDao.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessOverdueStatusDao.java
@@ -33,13 +33,12 @@ import com.ning.billing.analytics.dao.BusinessOverdueStatusSqlDao;
 import com.ning.billing.analytics.model.BusinessOverdueStatusModelDao;
 import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
-import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.junction.api.JunctionApi;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.util.callcontext.InternalCallContext;
 import com.ning.billing.util.svcapi.account.AccountInternalApi;
 import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
-import com.ning.billing.util.svcapi.junction.BlockingInternalApi;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
@@ -64,8 +63,8 @@ public class BusinessOverdueStatusDao {
         this.junctionApi = junctionApi;
     }
 
-    public void overdueStatusChanged(final Blockable.Type objectType, final UUID objectId, final InternalCallContext context) {
-        if (Blockable.Type.SUBSCRIPTION_BUNDLE.equals(objectType)) {
+    public void overdueStatusChanged(final Type objectType, final UUID objectId, final InternalCallContext context) {
+        if (Type.SUBSCRIPTION_BUNDLE.equals(objectType)) {
             overdueStatusChangedForBundle(objectId, context);
         } else {
             log.info("Ignoring overdue status change for object id {} (type {})", objectId.toString(), objectType.toString());
diff --git a/api/src/main/java/com/ning/billing/junction/api/Blockable.java b/api/src/main/java/com/ning/billing/junction/api/Blockable.java
index 212ccfc..07b606a 100644
--- a/api/src/main/java/com/ning/billing/junction/api/Blockable.java
+++ b/api/src/main/java/com/ning/billing/junction/api/Blockable.java
@@ -26,52 +26,6 @@ import com.ning.billing.util.entity.Entity;
 
 public interface Blockable extends Entity {
 
-    public enum Type {
-        ACCOUNT,
-        SUBSCRIPTION_BUNDLE,
-        SUBSCRIPTION;
-
-        public static Type get(final Blockable o) {
-            if (o instanceof Account) {
-                return ACCOUNT;
-            } else if (o instanceof SubscriptionBundle) {
-                return SUBSCRIPTION_BUNDLE;
-            } else if (o instanceof Subscription) {
-                return SUBSCRIPTION;
-            }
-            throw new IllegalStateException("Unsupported type of blockable " + o);
-        }
-
-        public static Type get(final String type) throws BlockingApiException {
-            if (type.equalsIgnoreCase(ACCOUNT.name())) {
-                return ACCOUNT;
-            } else if (type.equalsIgnoreCase(SUBSCRIPTION_BUNDLE.name())) {
-                return SUBSCRIPTION_BUNDLE;
-            } else if (type.equalsIgnoreCase(SUBSCRIPTION.name())) {
-                return SUBSCRIPTION;
-            }
-            throw new IllegalStateException("Unsupported type of blockable " + type);
-        }
-
-        public static ObjectType getObjectType(final Blockable o) {
-            final Type type = get(o);
-            return getObjectType(type);
-        }
-
-        public static ObjectType getObjectType(final Type type) {
-            switch (type) {
-                case ACCOUNT:
-                    return ObjectType.ACCOUNT;
-                case SUBSCRIPTION_BUNDLE:
-                    return ObjectType.BUNDLE;
-                case SUBSCRIPTION:
-                    return ObjectType.SUBSCRIPTION;
-                default:
-                    throw new IllegalStateException("Unsupported type of blockable " + type);
-            }
-        }
-    }
-
     @Override
     public UUID getId();
 
diff --git a/api/src/main/java/com/ning/billing/junction/api/BlockingState.java b/api/src/main/java/com/ning/billing/junction/api/BlockingState.java
index 49610f9..02f0ad9 100644
--- a/api/src/main/java/com/ning/billing/junction/api/BlockingState.java
+++ b/api/src/main/java/com/ning/billing/junction/api/BlockingState.java
@@ -29,7 +29,7 @@ public interface BlockingState extends Entity, Comparable<BlockingState> {
 
     public String getStateName();
 
-    public Blockable.Type getType();
+    public Type getType();
 
     public DateTime getTimestamp();
 
diff --git a/api/src/main/java/com/ning/billing/junction/api/Type.java b/api/src/main/java/com/ning/billing/junction/api/Type.java
new file mode 100644
index 0000000..f49751e
--- /dev/null
+++ b/api/src/main/java/com/ning/billing/junction/api/Type.java
@@ -0,0 +1,52 @@
+package com.ning.billing.junction.api;
+
+import com.ning.billing.ObjectType;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.entitlement.api.user.Subscription;
+import com.ning.billing.entitlement.api.user.SubscriptionBundle;
+
+public enum Type {
+    ACCOUNT,
+    SUBSCRIPTION_BUNDLE,
+    SUBSCRIPTION;
+
+    public static Type get(final Blockable o) {
+        if (o instanceof Account) {
+            return ACCOUNT;
+        } else if (o instanceof SubscriptionBundle) {
+            return SUBSCRIPTION_BUNDLE;
+        } else if (o instanceof Subscription) {
+            return SUBSCRIPTION;
+        }
+        throw new IllegalStateException("Unsupported type of blockable " + o);
+    }
+
+    public static Type get(final String type) throws BlockingApiException {
+        if (type.equalsIgnoreCase(ACCOUNT.name())) {
+            return ACCOUNT;
+        } else if (type.equalsIgnoreCase(SUBSCRIPTION_BUNDLE.name())) {
+            return SUBSCRIPTION_BUNDLE;
+        } else if (type.equalsIgnoreCase(SUBSCRIPTION.name())) {
+            return SUBSCRIPTION;
+        }
+        throw new IllegalStateException("Unsupported type of blockable " + type);
+    }
+
+    public static ObjectType getObjectType(final Blockable o) {
+        final Type type = get(o);
+        return getObjectType(type);
+    }
+
+    public static ObjectType getObjectType(final Type type) {
+        switch (type) {
+            case ACCOUNT:
+                return ObjectType.ACCOUNT;
+            case SUBSCRIPTION_BUNDLE:
+                return ObjectType.BUNDLE;
+            case SUBSCRIPTION:
+                return ObjectType.SUBSCRIPTION;
+            default:
+                throw new IllegalStateException("Unsupported type of blockable " + type);
+        }
+    }
+}
diff --git a/api/src/main/java/com/ning/billing/payment/api/Payment.java b/api/src/main/java/com/ning/billing/payment/api/Payment.java
index 6801101..3e9c3cf 100644
--- a/api/src/main/java/com/ning/billing/payment/api/Payment.java
+++ b/api/src/main/java/com/ning/billing/payment/api/Payment.java
@@ -109,37 +109,5 @@ public interface Payment extends Entity {
      */
     PaymentInfoPlugin getPaymentInfoPlugin();
 
-    
-    public interface PaymentAttempt extends Entity {
-
-        /**
-         *
-         * @return the payment attempt id
-         */
-        UUID getId();
-
-        /**
-         *
-         * @return the date when that attempt was made
-         */
-        DateTime getEffectiveDate();
-
-        /**
-         *
-         * @return the error code from the gateway
-         */
-        String getGatewayErrorCode();
-
-        /**
-         *
-         * @return the error message from the gateway
-         */
-        String getGatewayErrorMsg();
-
-        /**
-         *
-         * @return the status for that attempt
-         */
-        PaymentStatus getPaymentStatus();
-    }
+
 }
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java b/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java
new file mode 100644
index 0000000..fd4936b
--- /dev/null
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java
@@ -0,0 +1,40 @@
+package com.ning.billing.payment.api;
+
+import java.util.UUID;
+
+import org.joda.time.DateTime;
+
+import com.ning.billing.util.entity.Entity;
+
+public interface PaymentAttempt extends Entity {
+
+    /**
+     *
+     * @return the payment attempt id
+     */
+    UUID getId();
+
+    /**
+     *
+     * @return the date when that attempt was made
+     */
+    DateTime getEffectiveDate();
+
+    /**
+     *
+     * @return the error code from the gateway
+     */
+    String getGatewayErrorCode();
+
+    /**
+     *
+     * @return the error message from the gateway
+     */
+    String getGatewayErrorMsg();
+
+    /**
+     *
+     * @return the status for that attempt
+     */
+    PaymentStatus getPaymentStatus();
+}
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentStatus.java b/api/src/main/java/com/ning/billing/payment/api/PaymentStatus.java
index 2b3d5fc..2b89c9d 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentStatus.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentStatus.java
@@ -32,5 +32,5 @@ public enum PaymentStatus {
     /* Exception from plugin, we already retried a maximum of time */
     PLUGIN_FAILURE_ABORTED,
     /* Payment Subsystem is off */
-    PAYMENT_SYSTEM_OFF
+    PAYMENT_SYSTEM_OFF;
 }
diff --git a/junction/src/main/java/com/ning/billing/junction/block/BlockingChecker.java b/junction/src/main/java/com/ning/billing/junction/block/BlockingChecker.java
index 49ecaff..f046590 100644
--- a/junction/src/main/java/com/ning/billing/junction/block/BlockingChecker.java
+++ b/junction/src/main/java/com/ning/billing/junction/block/BlockingChecker.java
@@ -20,6 +20,7 @@ import java.util.UUID;
 
 import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingApiException;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.util.callcontext.InternalTenantContext;
 
 public interface BlockingChecker {
@@ -30,9 +31,9 @@ public interface BlockingChecker {
 
     public void checkBlockedBilling(Blockable blockable, InternalTenantContext context) throws BlockingApiException;
 
-    public void checkBlockedChange(UUID bundleId, Blockable.Type type, InternalTenantContext context) throws BlockingApiException;
+    public void checkBlockedChange(UUID bundleId, Type type, InternalTenantContext context) throws BlockingApiException;
 
-    public void checkBlockedEntitlement(UUID bundleId, Blockable.Type type, InternalTenantContext context) throws BlockingApiException;
+    public void checkBlockedEntitlement(UUID bundleId, Type type, InternalTenantContext context) throws BlockingApiException;
 
-    public void checkBlockedBilling(UUID bundleId, Blockable.Type type, InternalTenantContext context) throws BlockingApiException;
+    public void checkBlockedBilling(UUID bundleId, Type type, InternalTenantContext context) throws BlockingApiException;
 }
diff --git a/junction/src/main/java/com/ning/billing/junction/block/DefaultBlockingChecker.java b/junction/src/main/java/com/ning/billing/junction/block/DefaultBlockingChecker.java
index 202c659..99e1530 100644
--- a/junction/src/main/java/com/ning/billing/junction/block/DefaultBlockingChecker.java
+++ b/junction/src/main/java/com/ning/billing/junction/block/DefaultBlockingChecker.java
@@ -26,6 +26,7 @@ import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingApiException;
 import com.ning.billing.junction.api.BlockingState;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.dao.BlockingStateDao;
 import com.ning.billing.util.callcontext.InternalTenantContext;
 import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
@@ -191,13 +192,13 @@ public class DefaultBlockingChecker implements BlockingChecker {
 
 
     @Override
-    public void checkBlockedChange(final UUID blockableId, final Blockable.Type type, final InternalTenantContext context) throws BlockingApiException {
+    public void checkBlockedChange(final UUID blockableId, final Type type, final InternalTenantContext context) throws BlockingApiException {
         try {
-            if (type == Blockable.Type.SUBSCRIPTION && getBlockedStateSubscriptionId(blockableId, context).isBlockChange()) {
+            if (type == Type.SUBSCRIPTION && getBlockedStateSubscriptionId(blockableId, context).isBlockChange()) {
                 throw new BlockingApiException(ErrorCode.BLOCK_BLOCKED_ACTION, ACTION_CHANGE, TYPE_SUBSCRIPTION, blockableId.toString());
-            } else if (type == Blockable.Type.SUBSCRIPTION_BUNDLE && getBlockedStateBundleId(blockableId, context).isBlockChange()) {
+            } else if (type == Type.SUBSCRIPTION_BUNDLE && getBlockedStateBundleId(blockableId, context).isBlockChange()) {
                 throw new BlockingApiException(ErrorCode.BLOCK_BLOCKED_ACTION, ACTION_CHANGE, TYPE_BUNDLE, blockableId.toString());
-            } else if (type == Blockable.Type.ACCOUNT && getBlockedStateAccountId(blockableId, context).isBlockChange()) {
+            } else if (type == Type.ACCOUNT && getBlockedStateAccountId(blockableId, context).isBlockChange()) {
                 throw new BlockingApiException(ErrorCode.BLOCK_BLOCKED_ACTION, ACTION_CHANGE, TYPE_ACCOUNT, blockableId.toString());
 
             }
@@ -207,13 +208,13 @@ public class DefaultBlockingChecker implements BlockingChecker {
     }
 
     @Override
-    public void checkBlockedEntitlement(final UUID blockableId, final Blockable.Type type, final InternalTenantContext context) throws BlockingApiException {
+    public void checkBlockedEntitlement(final UUID blockableId, final Type type, final InternalTenantContext context) throws BlockingApiException {
         try {
-            if (type == Blockable.Type.SUBSCRIPTION && getBlockedStateSubscriptionId(blockableId, context).isBlockEntitlement()) {
+            if (type == Type.SUBSCRIPTION && getBlockedStateSubscriptionId(blockableId, context).isBlockEntitlement()) {
                 throw new BlockingApiException(ErrorCode.BLOCK_BLOCKED_ACTION, ACTION_ENTITLEMENT, TYPE_SUBSCRIPTION, blockableId.toString());
-            } else if (type == Blockable.Type.SUBSCRIPTION_BUNDLE && getBlockedStateBundleId(blockableId, context).isBlockEntitlement()) {
+            } else if (type == Type.SUBSCRIPTION_BUNDLE && getBlockedStateBundleId(blockableId, context).isBlockEntitlement()) {
                 throw new BlockingApiException(ErrorCode.BLOCK_BLOCKED_ACTION, ACTION_ENTITLEMENT, TYPE_BUNDLE, blockableId.toString());
-            } else if (type == Blockable.Type.ACCOUNT && getBlockedStateAccountId(blockableId, context).isBlockEntitlement()) {
+            } else if (type == Type.ACCOUNT && getBlockedStateAccountId(blockableId, context).isBlockEntitlement()) {
                 throw new BlockingApiException(ErrorCode.BLOCK_BLOCKED_ACTION, ACTION_ENTITLEMENT, TYPE_ACCOUNT, blockableId.toString());
             }
         } catch (EntitlementUserApiException e) {
@@ -222,13 +223,13 @@ public class DefaultBlockingChecker implements BlockingChecker {
     }
 
     @Override
-    public void checkBlockedBilling(final UUID blockableId, final Blockable.Type type, final InternalTenantContext context) throws BlockingApiException {
+    public void checkBlockedBilling(final UUID blockableId, final Type type, final InternalTenantContext context) throws BlockingApiException {
         try {
-            if (type == Blockable.Type.SUBSCRIPTION && getBlockedStateSubscriptionId(blockableId, context).isBlockBilling()) {
+            if (type == Type.SUBSCRIPTION && getBlockedStateSubscriptionId(blockableId, context).isBlockBilling()) {
                 throw new BlockingApiException(ErrorCode.BLOCK_BLOCKED_ACTION, ACTION_BILLING, TYPE_SUBSCRIPTION, blockableId.toString());
-            } else if (type == Blockable.Type.SUBSCRIPTION_BUNDLE && getBlockedStateBundleId(blockableId, context).isBlockBilling()) {
+            } else if (type == Type.SUBSCRIPTION_BUNDLE && getBlockedStateBundleId(blockableId, context).isBlockBilling()) {
                 throw new BlockingApiException(ErrorCode.BLOCK_BLOCKED_ACTION, ACTION_BILLING, TYPE_BUNDLE, blockableId.toString());
-            } else if (type == Blockable.Type.ACCOUNT && getBlockedStateAccountId(blockableId, context).isBlockBilling()) {
+            } else if (type == Type.ACCOUNT && getBlockedStateAccountId(blockableId, context).isBlockBilling()) {
                 throw new BlockingApiException(ErrorCode.BLOCK_BLOCKED_ACTION, ACTION_BILLING, TYPE_ACCOUNT, blockableId.toString());
             }
         } catch (EntitlementUserApiException e) {
diff --git a/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateModelDao.java b/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateModelDao.java
index 2ff5b6b..313035b 100644
--- a/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateModelDao.java
+++ b/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateModelDao.java
@@ -20,8 +20,7 @@ import java.util.UUID;
 
 import org.joda.time.DateTime;
 
-import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.util.callcontext.InternalCallContext;
 import com.ning.billing.util.dao.TableName;
diff --git a/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateSqlDao.java b/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateSqlDao.java
index b7e471c..46a1124 100644
--- a/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateSqlDao.java
+++ b/junction/src/main/java/com/ning/billing/junction/dao/BlockingStateSqlDao.java
@@ -29,7 +29,7 @@ import org.skife.jdbi.v2.sqlobject.SqlQuery;
 import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
 import org.skife.jdbi.v2.tweak.ResultSetMapper;
 
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.api.BlockingApiException;
 import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.util.callcontext.InternalTenantContext;
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingEntitlementUserApi.java b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingEntitlementUserApi.java
index fffda95..0f4b0ac 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingEntitlementUserApi.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingEntitlementUserApi.java
@@ -30,8 +30,8 @@ import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.Subscription;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.entitlement.api.user.SubscriptionStatusDryRun;
-import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingApiException;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.block.BlockingChecker;
 import com.ning.billing.util.callcontext.CallContext;
 import com.ning.billing.util.callcontext.InternalCallContextFactory;
@@ -133,7 +133,7 @@ public class BlockingEntitlementUserApi implements EntitlementUserApi {
             throws EntitlementUserApiException {
         try {
             final InternalTenantContext internalContext = internalCallContextFactory.createInternalTenantContext(context);
-            checker.checkBlockedChange(accountId, Blockable.Type.ACCOUNT, internalContext);
+            checker.checkBlockedChange(accountId, Type.ACCOUNT, internalContext);
             return new BlockingSubscriptionBundle(entitlementUserApi.createBundleForAccount(accountId, bundleKey, context), blockingApi, internalContext);
         } catch (BlockingApiException e) {
             throw new EntitlementUserApiException(e, e.getCode(), e.getMessage());
@@ -145,7 +145,7 @@ public class BlockingEntitlementUserApi implements EntitlementUserApi {
                                            final CallContext context) throws EntitlementUserApiException {
         try {
             final InternalTenantContext internalContext = internalCallContextFactory.createInternalTenantContext(context);
-            checker.checkBlockedChange(bundleId, Blockable.Type.SUBSCRIPTION_BUNDLE, internalContext);
+            checker.checkBlockedChange(bundleId, Type.SUBSCRIPTION_BUNDLE, internalContext);
             return new BlockingSubscription(entitlementUserApi.createSubscription(bundleId, spec, requestedDate, context), blockingApi, checker,  internalContext, internalCallContextFactory);
         } catch (BlockingApiException e) {
             throw new EntitlementUserApiException(e, e.getCode(), e.getMessage());
diff --git a/junction/src/test/java/com/ning/billing/junction/api/blocking/TestBlockingApi.java b/junction/src/test/java/com/ning/billing/junction/api/blocking/TestBlockingApi.java
index 5998311..302351e 100644
--- a/junction/src/test/java/com/ning/billing/junction/api/blocking/TestBlockingApi.java
+++ b/junction/src/test/java/com/ning/billing/junction/api/blocking/TestBlockingApi.java
@@ -26,8 +26,8 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.JunctionTestSuiteWithEmbeddedDB;
-import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingState;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.util.svcapi.junction.DefaultBlockingState;
 
 public class TestBlockingApi extends JunctionTestSuiteWithEmbeddedDB {
@@ -48,12 +48,12 @@ public class TestBlockingApi extends JunctionTestSuiteWithEmbeddedDB {
         final boolean blockEntitlement = false;
         final boolean blockBilling = false;
 
-        final BlockingState state1 = new DefaultBlockingState(uuid, overdueStateName, Blockable.Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
+        final BlockingState state1 = new DefaultBlockingState(uuid, overdueStateName, Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
         blockingInternalApi.setBlockingState(state1, internalCallContext);
         clock.setDeltaFromReality(1000 * 3600 * 24);
 
         final String overdueStateName2 = "NoReallyThisCantGoOn";
-        final BlockingState state2 = new DefaultBlockingState(uuid, overdueStateName2, Blockable.Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
+        final BlockingState state2 = new DefaultBlockingState(uuid, overdueStateName2, Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
         blockingInternalApi.setBlockingState(state2, internalCallContext);
 
         final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
@@ -73,13 +73,13 @@ public class TestBlockingApi extends JunctionTestSuiteWithEmbeddedDB {
         final boolean blockEntitlement = false;
         final boolean blockBilling = false;
 
-        final BlockingState state1 = new DefaultBlockingState(uuid, overdueStateName, Blockable.Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
+        final BlockingState state1 = new DefaultBlockingState(uuid, overdueStateName, Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
         blockingInternalApi.setBlockingState(state1, internalCallContext);
 
         clock.setDeltaFromReality(1000 * 3600 * 24);
 
         final String overdueStateName2 = "NoReallyThisCantGoOn";
-        final BlockingState state2 = new DefaultBlockingState(uuid, overdueStateName2, Blockable.Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
+        final BlockingState state2 = new DefaultBlockingState(uuid, overdueStateName2, Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
         blockingInternalApi.setBlockingState(state2, internalCallContext);
 
         final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
diff --git a/junction/src/test/java/com/ning/billing/junction/api/blocking/TestDefaultBlockingApi.java b/junction/src/test/java/com/ning/billing/junction/api/blocking/TestDefaultBlockingApi.java
index 88eefa0..17a4de2 100644
--- a/junction/src/test/java/com/ning/billing/junction/api/blocking/TestDefaultBlockingApi.java
+++ b/junction/src/test/java/com/ning/billing/junction/api/blocking/TestDefaultBlockingApi.java
@@ -26,7 +26,7 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.ning.billing.junction.JunctionTestSuiteWithEmbeddedDB;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.util.svcapi.junction.DefaultBlockingState;
 
diff --git a/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java b/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java
index 8e4ced1..5af876c 100644
--- a/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java
+++ b/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java
@@ -28,9 +28,9 @@ import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.Subscription;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.JunctionTestSuiteNoDB;
-import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingApiException;
 import com.ning.billing.junction.api.BlockingState;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.dao.MockBlockingStateDao;
 import com.ning.billing.util.callcontext.InternalTenantContext;
 import com.ning.billing.util.callcontext.TenantContext;
@@ -71,18 +71,18 @@ public class TestBlockingChecker extends JunctionTestSuiteNoDB {
     }
 
     private void setStateBundle(final boolean bC, final boolean bE, final boolean bB) {
-        final BlockingState bundleState = new DefaultBlockingState(bundle.getId(), "state", Blockable.Type.SUBSCRIPTION_BUNDLE, "test-service", bC, bE, bB);
+        final BlockingState bundleState = new DefaultBlockingState(bundle.getId(), "state", Type.SUBSCRIPTION_BUNDLE, "test-service", bC, bE, bB);
         Mockito.when(bundle.getBlockingState()).thenReturn(bundleState);
         blockingStateDao.setBlockingState(bundleState, clock, internalCallContext);
     }
 
     private void setStateAccount(final boolean bC, final boolean bE, final boolean bB) {
-        final BlockingState accountState = new DefaultBlockingState(account.getId(), "state", Blockable.Type.SUBSCRIPTION_BUNDLE, "test-service", bC, bE, bB);
+        final BlockingState accountState = new DefaultBlockingState(account.getId(), "state", Type.SUBSCRIPTION_BUNDLE, "test-service", bC, bE, bB);
         blockingStateDao.setBlockingState(accountState, clock, internalCallContext);
     }
 
     private void setStateSubscription(final boolean bC, final boolean bE, final boolean bB) {
-        final BlockingState subscriptionState = new DefaultBlockingState(subscription.getId(), "state", Blockable.Type.SUBSCRIPTION_BUNDLE, "test-service", bC, bE, bB);
+        final BlockingState subscriptionState = new DefaultBlockingState(subscription.getId(), "state", Type.SUBSCRIPTION_BUNDLE, "test-service", bC, bE, bB);
         Mockito.when(subscription.getBlockingState()).thenReturn(subscriptionState);
         blockingStateDao.setBlockingState(subscriptionState, clock, internalCallContext);
     }
diff --git a/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java b/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java
index c9d9bdf..0874057 100644
--- a/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java
+++ b/junction/src/test/java/com/ning/billing/junction/dao/TestBlockingDao.java
@@ -25,8 +25,8 @@ import org.testng.annotations.Test;
 
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.JunctionTestSuiteWithEmbeddedDB;
-import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingState;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.util.svcapi.junction.DefaultBlockingState;
 
 public class TestBlockingDao extends JunctionTestSuiteWithEmbeddedDB {
@@ -41,12 +41,12 @@ public class TestBlockingDao extends JunctionTestSuiteWithEmbeddedDB {
         final boolean blockEntitlement = false;
         final boolean blockBilling = false;
 
-        final BlockingState state1 = new DefaultBlockingState(uuid, overdueStateName, Blockable.Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
+        final BlockingState state1 = new DefaultBlockingState(uuid, overdueStateName, Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
         blockingStateDao.setBlockingState(state1, clock, internalCallContext);
         clock.setDeltaFromReality(1000 * 3600 * 24);
 
         final String overdueStateName2 = "NoReallyThisCantGoOn";
-        final BlockingState state2 = new DefaultBlockingState(uuid, overdueStateName2, Blockable.Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
+        final BlockingState state2 = new DefaultBlockingState(uuid, overdueStateName2, Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
         blockingStateDao.setBlockingState(state2, clock, internalCallContext);
 
         final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
@@ -65,12 +65,12 @@ public class TestBlockingDao extends JunctionTestSuiteWithEmbeddedDB {
         final boolean blockEntitlement = false;
         final boolean blockBilling = false;
 
-        final BlockingState state1 = new DefaultBlockingState(uuid, overdueStateName, Blockable.Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
+        final BlockingState state1 = new DefaultBlockingState(uuid, overdueStateName, Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
         blockingStateDao.setBlockingState(state1, clock, internalCallContext);
         clock.setDeltaFromReality(1000 * 3600 * 24);
 
         final String overdueStateName2 = "NoReallyThisCantGoOn";
-        final BlockingState state2 = new DefaultBlockingState(uuid, overdueStateName2, Blockable.Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
+        final BlockingState state2 = new DefaultBlockingState(uuid, overdueStateName2, Type.SUBSCRIPTION_BUNDLE, service, blockChange, blockEntitlement, blockBilling);
         blockingStateDao.setBlockingState(state2, clock, internalCallContext);
 
         final SubscriptionBundle bundle = Mockito.mock(SubscriptionBundle.class);
diff --git a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java
index 9d339b9..7a6272d 100644
--- a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java
+++ b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java
@@ -43,13 +43,12 @@ import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.catalog.api.PriceList;
 import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.entitlement.api.SubscriptionTransitionType;
-import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.Subscription;
 import com.ning.billing.entitlement.api.user.Subscription.SubscriptionState;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.JunctionTestSuiteNoDB;
-import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingState;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.dao.MockBlockingStateDao;
 import com.ning.billing.mock.MockEffectiveSubscriptionEvent;
 import com.ning.billing.mock.MockSubscription;
@@ -185,8 +184,8 @@ public class TestBillingApi extends JunctionTestSuiteNoDB {
         final Account account = createAccount(32);
 
         final List<BlockingState> blockingStates = new ArrayList<BlockingState>();
-        blockingStates.add(new DefaultBlockingState(UUID.randomUUID(), bunId, DISABLED_BUNDLE, Blockable.Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(1), null));
-        blockingStates.add(new DefaultBlockingState(UUID.randomUUID(), bunId, CLEAR_BUNDLE, Blockable.Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now.plusDays(2), null));
+        blockingStates.add(new DefaultBlockingState(UUID.randomUUID(), bunId, DISABLED_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now.plusDays(1), null));
+        blockingStates.add(new DefaultBlockingState(UUID.randomUUID(), bunId, CLEAR_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now.plusDays(2), null));
 
         ((MockBlockingStateDao) blockingStateDao).setBlockingStates(bunId, blockingStates);
         final SortedSet<BillingEvent> events = billingInternalApi.getBillingEventsForAccountAndUpdateAccountBCD(account.getId(), internalCallContext);
diff --git a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBlockingCalculator.java b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBlockingCalculator.java
index 9b56a46..58c6325 100644
--- a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBlockingCalculator.java
+++ b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBlockingCalculator.java
@@ -42,8 +42,7 @@ import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.entitlement.api.SubscriptionTransitionType;
 import com.ning.billing.entitlement.api.user.Subscription;
 import com.ning.billing.junction.JunctionTestSuiteNoDB;
-import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.junction.dao.MockBlockingStateDao;
 import com.ning.billing.junction.plumbing.billing.BlockingCalculator.DisabledDuration;
@@ -115,8 +114,8 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
         billingEvents.add(D);
 
         final List<BlockingState> blockingStates = new ArrayList<BlockingState>();
-        blockingStates.add(new DefaultBlockingState(UUID.randomUUID(), bundleId1, DISABLED_BUNDLE, Blockable.Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now, null));
-        blockingStates.add(new DefaultBlockingState(UUID.randomUUID(), bundleId1, CLEAR_BUNDLE, Blockable.Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now.plusDays(2), null));
+        blockingStates.add(new DefaultBlockingState(UUID.randomUUID(), bundleId1, DISABLED_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", true, true, true, now, null));
+        blockingStates.add(new DefaultBlockingState(UUID.randomUUID(), bundleId1, CLEAR_BUNDLE, Type.SUBSCRIPTION_BUNDLE, "test", false, false, false, now.plusDays(2), null));
 
         setBlockingStates(bundleId1, blockingStates);
 
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
index 4197299..ba1d218 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
@@ -49,7 +49,7 @@ import com.ning.billing.invoice.api.InvoiceItem;
 import com.ning.billing.invoice.api.InvoiceItemType;
 import com.ning.billing.invoice.api.InvoicePayment;
 import com.ning.billing.invoice.api.InvoicePayment.InvoicePaymentType;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.osgi.bundles.analytics.api.BusinessEntityBase;
 import com.ning.billing.osgi.bundles.analytics.dao.TestCallContext;
@@ -58,7 +58,7 @@ import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBase
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.payment.api.Payment;
-import com.ning.billing.payment.api.Payment.PaymentAttempt;
+import com.ning.billing.payment.api.PaymentAttempt;
 import com.ning.billing.payment.api.PaymentMethod;
 import com.ning.billing.payment.api.PaymentMethodPlugin;
 import com.ning.billing.payment.api.PaymentStatus;
diff --git a/overdue/src/main/java/com/ning/billing/ovedue/notification/DefaultOverdueCheckPoster.java b/overdue/src/main/java/com/ning/billing/ovedue/notification/DefaultOverdueCheckPoster.java
index 946d8b6..dccf5ae 100644
--- a/overdue/src/main/java/com/ning/billing/ovedue/notification/DefaultOverdueCheckPoster.java
+++ b/overdue/src/main/java/com/ning/billing/ovedue/notification/DefaultOverdueCheckPoster.java
@@ -25,7 +25,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.overdue.service.DefaultOverdueService;
 import com.ning.billing.util.cache.CacheControllerDispatcher;
 import com.ning.billing.util.callcontext.InternalCallContext;
diff --git a/overdue/src/main/java/com/ning/billing/ovedue/notification/OverdueCheckNotificationKey.java b/overdue/src/main/java/com/ning/billing/ovedue/notification/OverdueCheckNotificationKey.java
index 72e4f63..d74c813 100644
--- a/overdue/src/main/java/com/ning/billing/ovedue/notification/OverdueCheckNotificationKey.java
+++ b/overdue/src/main/java/com/ning/billing/ovedue/notification/OverdueCheckNotificationKey.java
@@ -18,7 +18,7 @@ package com.ning.billing.ovedue.notification;
 
 import java.util.UUID;
 
-import com.ning.billing.junction.api.Blockable;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.util.notificationq.DefaultUUIDNotificationKey;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
@@ -26,18 +26,18 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 
 public class OverdueCheckNotificationKey extends DefaultUUIDNotificationKey {
 
-    private final Blockable.Type type;
+    private final Type type;
 
     @JsonCreator
     public OverdueCheckNotificationKey(@JsonProperty("uuidKey") final UUID uuidKey,
-                                       @JsonProperty("type") final Blockable.Type type) {
+                                       @JsonProperty("type") final Type type) {
         super(uuidKey);
         this.type = type;
     }
 
     // Hack : We default to SubscriptionBundle which is the only one supported at the time
-    public Blockable.Type getType() {
-        return type == null ? Blockable.Type.SUBSCRIPTION_BUNDLE : type;
+    public Type getType() {
+        return type == null ? Type.SUBSCRIPTION_BUNDLE : type;
     }
 
     @Override
diff --git a/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java b/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java
index a9d69b0..439c2bb 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java
@@ -23,7 +23,7 @@ import com.ning.billing.ErrorCode;
 import com.ning.billing.ObjectType;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.overdue.OverdueApiException;
 import com.ning.billing.overdue.OverdueState;
 import com.ning.billing.overdue.OverdueUserApi;
diff --git a/overdue/src/main/java/com/ning/billing/overdue/applicator/DefaultOverdueChangeEvent.java b/overdue/src/main/java/com/ning/billing/overdue/applicator/DefaultOverdueChangeEvent.java
index 89bd607..b589cae 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/applicator/DefaultOverdueChangeEvent.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/applicator/DefaultOverdueChangeEvent.java
@@ -18,8 +18,7 @@ package com.ning.billing.overdue.applicator;
 
 import java.util.UUID;
 
-import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.util.events.DefaultBusInternalEvent;
 import com.ning.billing.util.events.OverdueChangeInternalEvent;
 
@@ -30,13 +29,13 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 public class DefaultOverdueChangeEvent extends DefaultBusInternalEvent implements OverdueChangeInternalEvent {
 
     private final UUID overdueObjectId;
-    private final Blockable.Type overdueObjectType;
+    private final Type overdueObjectType;
     private final String previousOverdueStateName;
     private final String nextOverdueStateName;
 
     @JsonCreator
     public DefaultOverdueChangeEvent(@JsonProperty("overdueObjectId") final UUID overdueObjectId,
-                                     @JsonProperty("overdueObjectType") final Blockable.Type overdueObjectType,
+                                     @JsonProperty("overdueObjectType") final Type overdueObjectType,
                                      @JsonProperty("previousOverdueStateName") final String previousOverdueStateName,
                                      @JsonProperty("nextOverdueStateName") final String nextOverdueStateName,
                                      @JsonProperty("userToken") final UUID userToken,
diff --git a/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java b/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java
index 8f46d06..c145950 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java
@@ -36,7 +36,7 @@ import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.Subscription;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.api.BlockingApiException;
 import com.ning.billing.ovedue.notification.OverdueCheckPoster;
 import com.ning.billing.overdue.OverdueApiException;
@@ -163,14 +163,14 @@ public class OverdueStateApplicator<T extends Blockable> {
     }
 
     private OverdueChangeInternalEvent createOverdueEvent(final T overdueable, final String previousOverdueStateName, final String nextOverdueStateName, final InternalCallContext context) throws BlockingApiException {
-        return new DefaultOverdueChangeEvent(overdueable.getId(), Blockable.Type.get(overdueable), previousOverdueStateName, nextOverdueStateName, context.getUserToken(), context.getAccountRecordId(), context.getTenantRecordId());
+        return new DefaultOverdueChangeEvent(overdueable.getId(), Type.get(overdueable), previousOverdueStateName, nextOverdueStateName, context.getUserToken(), context.getAccountRecordId(), context.getTenantRecordId());
     }
 
     protected void storeNewState(final T blockable, final OverdueState<T> nextOverdueState, final InternalCallContext context) throws OverdueException {
         try {
             blockingApi.setBlockingState(new DefaultBlockingState(blockable.getId(),
                                                                   nextOverdueState.getName(),
-                                                                  Blockable.Type.get(blockable),
+                                                                  Type.get(blockable),
                                                                   OverdueService.OVERDUE_SERVICE_NAME,
                                                                   blockChanges(nextOverdueState),
                                                                   blockEntitlement(nextOverdueState),
@@ -260,7 +260,7 @@ public class OverdueStateApplicator<T extends Blockable> {
 
         // Retrieve the account
         final Account account;
-        final Type overdueableType = Blockable.Type.get(overdueable);
+        final Type overdueableType = Type.get(overdueable);
         try {
             if (Type.SUBSCRIPTION.equals(overdueableType)) {
                 final UUID bundleId = ((Subscription) overdueable).getBundleId();
diff --git a/overdue/src/main/java/com/ning/billing/overdue/listener/OverdueDispatcher.java b/overdue/src/main/java/com/ning/billing/overdue/listener/OverdueDispatcher.java
index a1a24c8..d1668b9 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/listener/OverdueDispatcher.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/listener/OverdueDispatcher.java
@@ -23,10 +23,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.ning.billing.BillingExceptionBase;
-import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
-import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.overdue.wrapper.OverdueWrapperFactory;
 import com.ning.billing.util.callcontext.InternalCallContext;
 import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
@@ -61,7 +59,7 @@ public class OverdueDispatcher {
         }
     }
 
-    public void processOverdue(final Blockable.Type type, final UUID blockableId, final InternalCallContext context) {
+    public void processOverdue(final Type type, final UUID blockableId, final InternalCallContext context) {
         try {
             factory.createOverdueWrapperFor(type, blockableId, context).refresh(context);
         } catch (BillingExceptionBase e) {
@@ -69,7 +67,7 @@ public class OverdueDispatcher {
         }
     }
 
-    public void clearOverdue(final Blockable.Type type, final UUID blockableId, final InternalCallContext context) {
+    public void clearOverdue(final Type type, final UUID blockableId, final InternalCallContext context) {
         try {
             factory.createOverdueWrapperFor(type, blockableId, context).clear(context);
         } catch (BillingExceptionBase e) {
diff --git a/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapperFactory.java b/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapperFactory.java
index 69d5cb1..ca35909 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapperFactory.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/wrapper/OverdueWrapperFactory.java
@@ -25,6 +25,7 @@ import com.ning.billing.ErrorCode;
 import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.api.Blockable;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.overdue.applicator.OverdueStateApplicator;
 import com.ning.billing.overdue.calculator.BillingStateCalculatorBundle;
 import com.ning.billing.overdue.config.DefaultOverdueState;
@@ -73,7 +74,7 @@ public class OverdueWrapperFactory {
     }
 
     @SuppressWarnings("unchecked")
-    public <T extends Blockable> OverdueWrapper<T> createOverdueWrapperFor(final Blockable.Type type, final UUID id, final InternalTenantContext context) throws OverdueException {
+    public <T extends Blockable> OverdueWrapper<T> createOverdueWrapperFor(final Type type, final UUID id, final InternalTenantContext context) throws OverdueException {
         try {
             switch (type) {
                 case SUBSCRIPTION_BUNDLE: {
diff --git a/overdue/src/test/java/com/ning/billing/ovedue/notification/TestDefaultOverdueCheckPoster.java b/overdue/src/test/java/com/ning/billing/ovedue/notification/TestDefaultOverdueCheckPoster.java
index 6130ddd..dc8ffa6 100644
--- a/overdue/src/test/java/com/ning/billing/ovedue/notification/TestDefaultOverdueCheckPoster.java
+++ b/overdue/src/test/java/com/ning/billing/ovedue/notification/TestDefaultOverdueCheckPoster.java
@@ -29,6 +29,7 @@ import org.testng.annotations.Test;
 import com.ning.billing.entitlement.api.user.Subscription;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.api.Blockable;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.overdue.OverdueTestSuiteWithEmbeddedDB;
 import com.ning.billing.overdue.service.DefaultOverdueService;
 import com.ning.billing.util.entity.dao.EntitySqlDao;
@@ -87,7 +88,7 @@ public class TestDefaultOverdueCheckPoster extends OverdueTestSuiteWithEmbeddedD
         final DateTime futureNotificationTime = testReferenceTime.plusDays(nbDaysInFuture);
         poster.insertOverdueCheckNotification(overdueable, futureNotificationTime, internalCallContext);
 
-        final OverdueCheckNotificationKey notificationKey = new OverdueCheckNotificationKey(overdueable.getId(), Blockable.Type.get(overdueable));
+        final OverdueCheckNotificationKey notificationKey = new OverdueCheckNotificationKey(overdueable.getId(), Type.get(overdueable));
         final List<Notification> notificationsForKey = getNotificationsForOverdueable(overdueable);
         Assert.assertEquals(notificationsForKey.size(), 1);
         Assert.assertEquals(notificationsForKey.get(0).getNotificationKey(), objectMapper.writeValueAsString(notificationKey));
diff --git a/overdue/src/test/java/com/ning/billing/overdue/glue/ApplicatorMockJunctionModule.java b/overdue/src/test/java/com/ning/billing/overdue/glue/ApplicatorMockJunctionModule.java
index b18a9cd..7d010dc 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/glue/ApplicatorMockJunctionModule.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/glue/ApplicatorMockJunctionModule.java
@@ -22,7 +22,7 @@ import java.util.UUID;
 import org.joda.time.DateTime;
 
 import com.ning.billing.junction.api.Blockable;
-import com.ning.billing.junction.api.Blockable.Type;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.mock.glue.MockJunctionModule;
 import com.ning.billing.util.callcontext.InternalCallContext;
diff --git a/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueNotificationKeyJson.java b/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueNotificationKeyJson.java
index 4e15ea0..ff32441 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueNotificationKeyJson.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/notification/TestOverdueNotificationKeyJson.java
@@ -21,7 +21,7 @@ import java.util.UUID;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import com.ning.billing.junction.api.Blockable;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.ovedue.notification.OverdueCheckNotificationKey;
 import com.ning.billing.util.jackson.ObjectMapper;
 
@@ -34,7 +34,7 @@ public class TestOverdueNotificationKeyJson {
     @Test(groups = "fast")
     public void testOverdueNotificationKeyJson() throws Exception {
         final UUID uuid = UUID.randomUUID();
-        final Blockable.Type type = Blockable.Type.SUBSCRIPTION;
+        final Type type = Type.SUBSCRIPTION;
 
         final OverdueCheckNotificationKey e = new OverdueCheckNotificationKey(uuid, type);
 
@@ -53,6 +53,6 @@ public class TestOverdueNotificationKeyJson {
         final Class<?> claz = Class.forName(OverdueCheckNotificationKey.class.getName());
         final OverdueCheckNotificationKey obj = (OverdueCheckNotificationKey) mapper.readValue(json, claz);
         assertEquals(obj.getUuidKey().toString(), uuidString);
-        assertEquals(obj.getType(), Blockable.Type.SUBSCRIPTION_BUNDLE);
+        assertEquals(obj.getType(), Type.SUBSCRIPTION_BUNDLE);
     }
 }
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPayment.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPayment.java
index a036ed0..1020bba 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPayment.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPayment.java
@@ -180,7 +180,7 @@ public class DefaultPayment extends EntityBase implements Payment {
         if (attempts == null || attempts.size() == 0) {
             return Collections.emptyList();
         }
-        return new ArrayList<Payment.PaymentAttempt>(Collections2.transform(attempts, new Function<PaymentAttemptModelDao, PaymentAttempt>() {
+        return new ArrayList<PaymentAttempt>(Collections2.transform(attempts, new Function<PaymentAttemptModelDao, PaymentAttempt>() {
             @Override
             public PaymentAttempt apply(final PaymentAttemptModelDao input) {
                 return new PaymentAttempt() {
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptModelDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptModelDao.java
index 3a8bb6a..b4d5255 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptModelDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptModelDao.java
@@ -23,7 +23,7 @@ import javax.annotation.Nullable;
 
 import org.joda.time.DateTime;
 
-import com.ning.billing.payment.api.Payment.PaymentAttempt;
+import com.ning.billing.payment.api.PaymentAttempt;
 import com.ning.billing.payment.api.PaymentStatus;
 import com.ning.billing.util.dao.TableName;
 import com.ning.billing.util.entity.EntityBase;
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptSqlDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptSqlDao.java
index 3766147..9cec6c4 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptSqlDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentAttemptSqlDao.java
@@ -23,7 +23,7 @@ import org.skife.jdbi.v2.sqlobject.BindBean;
 import org.skife.jdbi.v2.sqlobject.SqlQuery;
 import org.skife.jdbi.v2.sqlobject.SqlUpdate;
 
-import com.ning.billing.payment.api.Payment.PaymentAttempt;
+import com.ning.billing.payment.api.PaymentAttempt;
 import com.ning.billing.util.audit.ChangeType;
 import com.ning.billing.util.callcontext.InternalCallContext;
 import com.ning.billing.util.callcontext.InternalTenantContext;
diff --git a/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java b/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
index 92e578a..7193cb9 100644
--- a/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
+++ b/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
@@ -35,7 +35,6 @@ import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.payment.MockRecurringInvoiceItem;
 import com.ning.billing.payment.PaymentTestSuiteNoDB;
-import com.ning.billing.payment.api.Payment.PaymentAttempt;
 import com.ning.billing.payment.provider.DefaultNoOpPaymentMethodPlugin;
 import com.ning.billing.payment.provider.MockPaymentProviderPlugin;
 
diff --git a/payment/src/test/java/com/ning/billing/payment/TestRetryService.java b/payment/src/test/java/com/ning/billing/payment/TestRetryService.java
index 89e2e38..1624854 100644
--- a/payment/src/test/java/com/ning/billing/payment/TestRetryService.java
+++ b/payment/src/test/java/com/ning/billing/payment/TestRetryService.java
@@ -33,7 +33,7 @@ import com.ning.billing.account.api.Account;
 import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.payment.api.Payment;
-import com.ning.billing.payment.api.Payment.PaymentAttempt;
+import com.ning.billing.payment.api.PaymentAttempt;
 import com.ning.billing.payment.api.PaymentApiException;
 import com.ning.billing.payment.api.PaymentStatus;
 import com.ning.billing.payment.glue.DefaultPaymentService;
diff --git a/util/src/main/java/com/ning/billing/util/events/OverdueChangeInternalEvent.java b/util/src/main/java/com/ning/billing/util/events/OverdueChangeInternalEvent.java
index 04d932f..7dde211 100644
--- a/util/src/main/java/com/ning/billing/util/events/OverdueChangeInternalEvent.java
+++ b/util/src/main/java/com/ning/billing/util/events/OverdueChangeInternalEvent.java
@@ -18,13 +18,13 @@ package com.ning.billing.util.events;
 
 import java.util.UUID;
 
-import com.ning.billing.junction.api.Blockable;
+import com.ning.billing.junction.api.Type;
 
 
 public interface OverdueChangeInternalEvent extends BusInternalEvent {
     UUID getOverdueObjectId();
 
-    Blockable.Type getOverdueObjectType();
+    Type getOverdueObjectType();
 
     String getPreviousOverdueStateName();
 
diff --git a/util/src/main/java/com/ning/billing/util/svcapi/junction/DefaultBlockingState.java b/util/src/main/java/com/ning/billing/util/svcapi/junction/DefaultBlockingState.java
index 21e3150..5ceec9a 100644
--- a/util/src/main/java/com/ning/billing/util/svcapi/junction/DefaultBlockingState.java
+++ b/util/src/main/java/com/ning/billing/util/svcapi/junction/DefaultBlockingState.java
@@ -20,9 +20,8 @@ import java.util.UUID;
 
 import org.joda.time.DateTime;
 
-import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingState;
-import com.ning.billing.util.entity.Entity;
+import com.ning.billing.junction.api.Type;
 import com.ning.billing.util.entity.EntityBase;
 
 
@@ -33,7 +32,7 @@ public class DefaultBlockingState extends EntityBase implements BlockingState {
     private static BlockingState clearState = null;
 
     private final UUID blockingId;
-    private final Blockable.Type type;
+    private final Type type;
     private final String stateName;
     private final String service;
     private final boolean blockChange;
@@ -52,7 +51,7 @@ public class DefaultBlockingState extends EntityBase implements BlockingState {
     public DefaultBlockingState(final UUID id,
                                 final UUID blockingId,
                                 final String stateName,
-                                final Blockable.Type type,
+                                final Type type,
                                 final String service,
                                 final boolean blockChange,
                                 final boolean blockEntitlement,
@@ -72,7 +71,7 @@ public class DefaultBlockingState extends EntityBase implements BlockingState {
 
     public DefaultBlockingState(final UUID blockingId,
                                  final String stateName,
-                                 final Blockable.Type type,
+                                 final Type type,
                                  final String service,
                                  final boolean blockChange,
                                  final boolean blockEntitlement,
@@ -103,7 +102,7 @@ public class DefaultBlockingState extends EntityBase implements BlockingState {
     }
 
     @Override
-    public Blockable.Type getType() {
+    public Type getType() {
         return type;
     }
 
diff --git a/util/src/test/java/com/ning/billing/mock/api/MockAccountUserApi.java b/util/src/test/java/com/ning/billing/mock/api/MockAccountUserApi.java
index 6b0fbd1..e8d7e5e 100644
--- a/util/src/test/java/com/ning/billing/mock/api/MockAccountUserApi.java
+++ b/util/src/test/java/com/ning/billing/mock/api/MockAccountUserApi.java
@@ -38,24 +38,24 @@ public class MockAccountUserApi implements AccountUserApi {
 
     private final CopyOnWriteArrayList<Account> accounts = new CopyOnWriteArrayList<Account>();
 
-    public Account createAccount(final UUID id,
-                                 final String externalKey,
-                                 final String email,
-                                 final String name,
-                                 final int firstNameLength,
-                                 final Currency currency,
-                                 final int billCycleDayLocal,
-                                 final UUID paymentMethodId,
-                                 final DateTimeZone timeZone,
-                                 final String locale,
-                                 final String address1,
-                                 final String address2,
-                                 final String companyName,
-                                 final String city,
-                                 final String stateOrProvince,
-                                 final String country,
-                                 final String postalCode,
-                                 final String phone) {
+    public Account createAccountFromParams(final UUID id,
+                                           final String externalKey,
+                                           final String email,
+                                           final String name,
+                                           final int firstNameLength,
+                                           final Currency currency,
+                                           final int billCycleDayLocal,
+                                           final UUID paymentMethodId,
+                                           final DateTimeZone timeZone,
+                                           final String locale,
+                                           final String address1,
+                                           final String address2,
+                                           final String companyName,
+                                           final String city,
+                                           final String stateOrProvince,
+                                           final String country,
+                                           final String postalCode,
+                                           final String phone) {
         final Account result = new MockAccountBuilder(id)
                 .externalKey(externalKey)
                 .email(email)