killbill-uncached

Removed 'I' prefix for all catalog interfaces and got rid of

12/5/2011 9:57:34 PM

Changes

api/src/main/java/com/ning/billing/catalog/api/IProductTier.java 23(+0 -23)

catalog/src/main/java/com/ning/billing/catalog/IPriceListDefault.java 25(+0 -25)

Details

diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscription.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscription.java
index 122e794..71e3402 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscription.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscription.java
@@ -19,10 +19,10 @@ package com.ning.billing.analytics;
 import com.ning.billing.analytics.utils.Rounder;
 import com.ning.billing.catalog.api.CatalogApiException;
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.api.IDuration;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Duration;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.catalog.api.TimeUnit;
 import com.ning.billing.entitlement.api.user.Subscription;
@@ -94,13 +94,13 @@ public class BusinessSubscription
         this(subscription.getCurrentPriceList(), subscription.getCurrentPlan(), subscription.getCurrentPhase(), currency, subscription.getStartDate(), subscription.getState(), subscription.getId(), subscription.getBundleId());
     }
 
-    public BusinessSubscription(final String priceList, final IPlan currentPlan, final IPlanPhase currentPhase, final Currency currency, final DateTime startDate, final SubscriptionState state, final UUID subscriptionId, final UUID bundleId)
+    public BusinessSubscription(final String priceList, final Plan currentPlan, final PlanPhase currentPhase, final Currency currency, final DateTime startDate, final SubscriptionState state, final UUID subscriptionId, final UUID bundleId)
     {
         this.priceList = priceList;
 
         // Record plan information
         if (currentPlan != null && currentPlan.getProduct() != null) {
-            final IProduct product = currentPlan.getProduct();
+            final Product product = currentPlan.getProduct();
             productName = product.getName();
             productCategory = product.getCategory();
             // TODO - we should keep the product type
@@ -247,7 +247,7 @@ public class BusinessSubscription
         return subscriptionId;
     }
 
-    static BigDecimal getMrrFromISubscription(final IDuration duration, final BigDecimal price)
+    static BigDecimal getMrrFromISubscription(final Duration duration, final BigDecimal price)
     {
         if (duration == null || duration.getUnit() == null || duration.getNumber() == 0) {
             return BigDecimal.ZERO;
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java
index 36669e1..5b6b078 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessSubscriptionEvent.java
@@ -16,8 +16,8 @@
 
 package com.ning.billing.analytics;
 
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.ProductCategory;
 
 import static com.ning.billing.entitlement.api.user.Subscription.SubscriptionState;
@@ -79,32 +79,32 @@ public class BusinessSubscriptionEvent
         return eventType;
     }
 
-    public static BusinessSubscriptionEvent subscriptionCreated(final IPlan plan)
+    public static BusinessSubscriptionEvent subscriptionCreated(final Plan plan)
     {
         return eventFromType(EventType.ADD, plan);
     }
 
-    public static BusinessSubscriptionEvent subscriptionCancelled(final IPlan plan)
+    public static BusinessSubscriptionEvent subscriptionCancelled(final Plan plan)
     {
         return eventFromType(EventType.CANCEL, plan);
     }
 
-    public static BusinessSubscriptionEvent subscriptionChanged(final IPlan plan)
+    public static BusinessSubscriptionEvent subscriptionChanged(final Plan plan)
     {
         return eventFromType(EventType.CHANGE, plan);
     }
 
-    public static BusinessSubscriptionEvent subscriptionPaused(final IPlan plan)
+    public static BusinessSubscriptionEvent subscriptionPaused(final Plan plan)
     {
         return eventFromType(EventType.PAUSE, plan);
     }
 
-    public static BusinessSubscriptionEvent subscriptionResumed(final IPlan plan)
+    public static BusinessSubscriptionEvent subscriptionResumed(final Plan plan)
     {
         return eventFromType(EventType.RESUME, plan);
     }
 
-    public static BusinessSubscriptionEvent subscriptionPhaseChanged(final IPlan plan, final SubscriptionState state)
+    public static BusinessSubscriptionEvent subscriptionPhaseChanged(final Plan plan, final SubscriptionState state)
     {
         if (state != null && state.equals(SubscriptionState.CANCELLED)) {
             return eventFromType(EventType.SYSTEM_CANCEL, plan);
@@ -114,16 +114,16 @@ public class BusinessSubscriptionEvent
         }
     }
 
-    private static BusinessSubscriptionEvent eventFromType(final EventType eventType, final IPlan plan)
+    private static BusinessSubscriptionEvent eventFromType(final EventType eventType, final Plan plan)
     {
         final ProductCategory category = getTypeFromSubscription(plan);
         return new BusinessSubscriptionEvent(eventType, category);
     }
 
-    private static ProductCategory getTypeFromSubscription(final IPlan plan)
+    private static ProductCategory getTypeFromSubscription(final Plan plan)
     {
         if (plan != null && plan.getProduct() != null) {
-            final IProduct product = plan.getProduct();
+            final Product product = plan.getProduct();
             if (product.getCatalogName() != null && product.getCategory() != null) {
                 return product.getCategory();
             }
diff --git a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
index 4da4067..d3563c6 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
@@ -30,9 +30,9 @@ import com.ning.billing.analytics.MockPlan;
 import com.ning.billing.analytics.MockProduct;
 import com.ning.billing.analytics.dao.BusinessSubscriptionTransitionDao;
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.dbi.MysqlTestingHelper;
@@ -108,9 +108,9 @@ public class TestAnalyticsService
         Assert.assertEquals(bundle.getKey(), KEY);
 
         // Create a subscription transition
-        final IProduct product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
-        final IPlan plan = new MockPlan("platinum-monthly", product);
-        final IPlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
+        final Product product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
+        final Plan plan = new MockPlan("platinum-monthly", product);
+        final PlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
         final UUID subscriptionId = UUID.randomUUID();
         final DateTime effectiveTransitionTime = new DateTime(DateTimeZone.UTC);
         final DateTime requestedTransitionTime = new DateTime(DateTimeZone.UTC);
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
index e78518d..267c2bb 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
@@ -26,9 +26,9 @@ import com.ning.billing.analytics.MockPlan;
 import com.ning.billing.analytics.MockProduct;
 import com.ning.billing.analytics.utils.Rounder;
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.dbi.MysqlTestingHelper;
@@ -56,9 +56,9 @@ public class TestAnalyticsDao
     private static final String ACCOUNT_KEY = "pierre-143343-vcc";
 
     private final MysqlTestingHelper helper = new MysqlTestingHelper();
-    private final IProduct product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
-    private final IPlan plan = new MockPlan("platinum-monthly", product);
-    private final IPlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
+    private final Product product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
+    private final Plan plan = new MockPlan("platinum-monthly", product);
+    private final PlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
 
     private BusinessSubscriptionTransitionDao businessSubscriptionTransitionDao;
     private BusinessSubscriptionTransition transition;
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockDuration.java b/analytics/src/test/java/com/ning/billing/analytics/MockDuration.java
index 7eb191e..2012995 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockDuration.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockDuration.java
@@ -16,14 +16,14 @@
 
 package com.ning.billing.analytics;
 
-import com.ning.billing.catalog.api.IDuration;
+import com.ning.billing.catalog.api.Duration;
 import com.ning.billing.catalog.api.TimeUnit;
 
 public class MockDuration
 {
-    public static IDuration MONHTLY()
+    public static Duration MONHTLY()
     {
-        return new IDuration()
+        return new Duration()
         {
             @Override
             public TimeUnit getUnit()
@@ -39,9 +39,9 @@ public class MockDuration
         };
     }
 
-    public static IDuration YEARLY()
+    public static Duration YEARLY()
     {
-        return new IDuration()
+        return new Duration()
         {
             @Override
             public TimeUnit getUnit()
@@ -57,9 +57,9 @@ public class MockDuration
         };
     }
 
-    public static IDuration UNLIMITED()
+    public static Duration UNLIMITED()
     {
-        return new IDuration()
+        return new Duration()
         {
             @Override
             public TimeUnit getUnit()
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockPhase.java b/analytics/src/test/java/com/ning/billing/analytics/MockPhase.java
index bf71b41..af8e993 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockPhase.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockPhase.java
@@ -18,24 +18,24 @@ package com.ning.billing.analytics;
 
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.api.IDuration;
-import com.ning.billing.catalog.api.IInternationalPrice;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IPrice;
+import com.ning.billing.catalog.api.Duration;
+import com.ning.billing.catalog.api.InternationalPrice;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Price;
 import com.ning.billing.catalog.api.PhaseType;
 
 import java.math.BigDecimal;
 import java.util.Date;
 
-public class MockPhase implements IPlanPhase
+public class MockPhase implements PlanPhase
 {
     private final PhaseType cohort;
-    private final IPlan plan;
-    private final IDuration duration;
+    private final Plan plan;
+    private final Duration duration;
     private final double price;
 
-    public MockPhase(final PhaseType cohort, final IPlan plan, final IDuration duration, final double price)
+    public MockPhase(final PhaseType cohort, final Plan plan, final Duration duration, final double price)
     {
         this.cohort = cohort;
         this.plan = plan;
@@ -44,12 +44,12 @@ public class MockPhase implements IPlanPhase
     }
 
     @Override
-    public IInternationalPrice getRecurringPrice()
+    public InternationalPrice getRecurringPrice()
     {
-        return new IInternationalPrice()
+        return new InternationalPrice()
         {
             @Override
-            public IPrice[] getPrices()
+            public Price[] getPrices()
             {
                 throw new UnsupportedOperationException();
             }
@@ -69,12 +69,12 @@ public class MockPhase implements IPlanPhase
     }
 
     @Override
-    public IInternationalPrice getFixedPrice()
+    public InternationalPrice getFixedPrice()
     {
-        return new IInternationalPrice()
+        return new InternationalPrice()
         {
             @Override
-            public IPrice[] getPrices()
+            public Price[] getPrices()
             {
                 throw new UnsupportedOperationException();
             }
@@ -111,13 +111,13 @@ public class MockPhase implements IPlanPhase
     }
 
     @Override
-    public IPlan getPlan()
+    public Plan getPlan()
     {
         return plan;
     }
 
     @Override
-    public IDuration getDuration()
+    public Duration getDuration()
     {
         return duration;
     }
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockPlan.java b/analytics/src/test/java/com/ning/billing/analytics/MockPlan.java
index 6177c6a..73b47ee 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockPlan.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockPlan.java
@@ -18,32 +18,32 @@ package com.ning.billing.analytics;
 
 import com.ning.billing.catalog.api.BillingAlignment;
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.PlanAlignmentChange;
 
 import java.util.Iterator;
 
-public class MockPlan implements IPlan
+public class MockPlan implements Plan
 {
     private final String name;
-    private final IProduct product;
+    private final Product product;
 
-    public MockPlan(final String name, final IProduct product)
+    public MockPlan(final String name, final Product product)
     {
         this.name = name;
         this.product = product;
     }
 
     @Override
-    public IPlanPhase[] getInitialPhases()
+    public PlanPhase[] getInitialPhases()
     {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public IProduct getProduct()
+    public Product getProduct()
     {
         return product;
     }
@@ -55,13 +55,13 @@ public class MockPlan implements IPlan
     }
 
     @Override
-    public Iterator<IPlanPhase> getInitialPhaseIterator()
+    public Iterator<PlanPhase> getInitialPhaseIterator()
     {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public IPlanPhase getFinalPhase()
+    public PlanPhase getFinalPhase()
     {
         throw new UnsupportedOperationException();
     }
@@ -79,7 +79,7 @@ public class MockPlan implements IPlan
     }
 
 	@Override
-	public IPlanPhase[] getAllPhases() {
+	public PlanPhase[] getAllPhases() {
 		 throw new UnsupportedOperationException();
 	}
 }
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockProduct.java b/analytics/src/test/java/com/ning/billing/analytics/MockProduct.java
index 57e0b5b..27ace04 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockProduct.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockProduct.java
@@ -16,10 +16,10 @@
 
 package com.ning.billing.analytics;
 
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.ProductCategory;
 
-public class MockProduct implements IProduct
+public class MockProduct implements Product
 {
     private final String name;
     private final String type;
@@ -51,13 +51,13 @@ public class MockProduct implements IProduct
     }
 
     @Override
-    public IProduct[] getAvailable()
+    public Product[] getAvailable()
     {
         return null;
     }
 
     @Override
-    public IProduct[] getIncluded()
+    public Product[] getIncluded()
     {
         return null;
     }
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java b/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
index 447bad5..0835406 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
@@ -17,8 +17,8 @@
 package com.ning.billing.analytics;
 
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.Subscription;
 import org.joda.time.DateTime;
@@ -33,10 +33,10 @@ public class MockSubscription implements Subscription
     private static final DateTime START_DATE = new DateTime(DateTimeZone.UTC);
 
     private final SubscriptionState state;
-    private final IPlan plan;
-    private final IPlanPhase phase;
+    private final Plan plan;
+    private final PlanPhase phase;
 
-    public MockSubscription(final SubscriptionState state, final IPlan plan, final IPlanPhase phase)
+    public MockSubscription(final SubscriptionState state, final Plan plan, final PlanPhase phase)
     {
         this.state = state;
         this.plan = plan;
@@ -92,13 +92,13 @@ public class MockSubscription implements Subscription
     }
 
     @Override
-    public IPlan getCurrentPlan()
+    public Plan getCurrentPlan()
     {
         return plan;
     }
 
     @Override
-    public IPlanPhase getCurrentPhase()
+    public PlanPhase getCurrentPhase()
     {
         return phase;
     }
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestAnalyticsListener.java b/analytics/src/test/java/com/ning/billing/analytics/TestAnalyticsListener.java
index 48ee5c7..819f46b 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestAnalyticsListener.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestAnalyticsListener.java
@@ -17,9 +17,9 @@
 package com.ning.billing.analytics;
 
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.api.user.Subscription;
@@ -43,9 +43,9 @@ public class TestAnalyticsListener
     private final MockBusinessSubscriptionTransitionDao dao = new MockBusinessSubscriptionTransitionDao();
     private final UUID subscriptionId = UUID.randomUUID();
     private final UUID bundleUUID = UUID.randomUUID();
-    private final IProduct product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
-    private final IPlan plan = new MockPlan("platinum-monthly", product);
-    private final IPlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
+    private final Product product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
+    private final Plan plan = new MockPlan("platinum-monthly", product);
+    private final PlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
     private final String priceList = null;
 
     private AnalyticsListener listener;
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscription.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscription.java
index 64063d3..73e7811 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscription.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscription.java
@@ -16,10 +16,10 @@
 
 package com.ning.billing.analytics;
 
-import com.ning.billing.catalog.api.IDuration;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Duration;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.api.user.Subscription;
@@ -33,8 +33,8 @@ import static com.ning.billing.catalog.api.Currency.USD;
 
 public class TestBusinessSubscription
 {
-    private final IDuration MONTHLY = MockDuration.MONHTLY();
-    private final IDuration YEARLY = MockDuration.YEARLY();
+    private final Duration MONTHLY = MockDuration.MONHTLY();
+    private final Duration YEARLY = MockDuration.YEARLY();
     final Object[][] catalog = {
         {MONTHLY, 229.0000, 229.0000},
         {MONTHLY, 19.9500, 19.9500},
@@ -47,9 +47,9 @@ public class TestBusinessSubscription
         {YEARLY, 18.2900, 1.5242},
         {YEARLY, 49.0000, 4.0833}};
 
-    private IProduct product;
-    private IPlan plan;
-    private IPlanPhase phase;
+    private Product product;
+    private Plan plan;
+    private PlanPhase phase;
     private Subscription isubscription;
     private BusinessSubscription subscription;
 
@@ -68,7 +68,7 @@ public class TestBusinessSubscription
     {
         int i = 0;
         for (final Object[] object : catalog) {
-            final IDuration duration = (IDuration) object[0];
+            final Duration duration = (Duration) object[0];
             final double price = (Double) object[1];
             final double expectedMrr = (Double) object[2];
 
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java
index ba5ab6a..72574dd 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionEvent.java
@@ -16,9 +16,9 @@
 
 package com.ning.billing.analytics;
 
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.api.user.Subscription;
@@ -28,9 +28,9 @@ import org.testng.annotations.Test;
 
 public class TestBusinessSubscriptionEvent
 {
-    private IProduct product;
-    private IPlan plan;
-    private IPlanPhase phase;
+    private Product product;
+    private Plan plan;
+    private PlanPhase phase;
     private Subscription isubscription;
 
     @BeforeMethod(alwaysRun = true)
diff --git a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java
index 322f77b..5b7e3fe 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/TestBusinessSubscriptionTransition.java
@@ -16,9 +16,9 @@
 
 package com.ning.billing.analytics;
 
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.api.user.Subscription;
@@ -43,9 +43,9 @@ public class TestBusinessSubscriptionTransition
     @BeforeMethod(alwaysRun = true)
     public void setUp() throws Exception
     {
-        final IProduct product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
-        final IPlan plan = new MockPlan("platinum-monthly", product);
-        final IPlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
+        final Product product = new MockProduct("platinium", "subscription", ProductCategory.BASE);
+        final Plan plan = new MockPlan("platinum-monthly", product);
+        final PlanPhase phase = new MockPhase(PhaseType.EVERGREEN, plan, MockDuration.UNLIMITED(), 25.95);
         final Subscription prevISubscription = new MockSubscription(Subscription.SubscriptionState.ACTIVE, plan, phase);
         final Subscription nextISubscription = new MockSubscription(Subscription.SubscriptionState.CANCELLED, plan, phase);
 
diff --git a/api/src/main/java/com/ning/billing/catalog/api/PlanChangeResult.java b/api/src/main/java/com/ning/billing/catalog/api/PlanChangeResult.java
index c0be482..3974e87 100644
--- a/api/src/main/java/com/ning/billing/catalog/api/PlanChangeResult.java
+++ b/api/src/main/java/com/ning/billing/catalog/api/PlanChangeResult.java
@@ -18,18 +18,18 @@ package com.ning.billing.catalog.api;
 
 public class PlanChangeResult {
  
-	private final IPriceList newPriceList;
+	private final PriceList newPriceList;
 	private final ActionPolicy policy;
 	private final PlanAlignmentChange alignment;
 	
-	public PlanChangeResult(IPriceList newPriceList, ActionPolicy policy, PlanAlignmentChange alignment) {
+	public PlanChangeResult(PriceList newPriceList, ActionPolicy policy, PlanAlignmentChange alignment) {
 		super();
 		this.newPriceList = newPriceList;
 		this.policy = policy;
 		this.alignment = alignment;
 	}
 
-	public IPriceList getNewPriceList() {
+	public PriceList getNewPriceList() {
 		return newPriceList;
 	}
 
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java b/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
index 32c77e5..e92ee96 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/billing/BillingEvent.java
@@ -18,7 +18,7 @@ package com.ning.billing.entitlement.api.billing;
 
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.api.IInternationalPrice;
+import com.ning.billing.catalog.api.InternationalPrice;
 import org.joda.time.DateTime;
 
 import java.math.BigDecimal;
@@ -64,7 +64,7 @@ public interface BillingEvent extends Comparable<BillingEvent> {
      * @return the international price for the event
      *
      */
-    public IInternationalPrice getPrice();
+    public InternationalPrice getPrice();
 
     /**
      *
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java b/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
index 6361b8b..1f1e612 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
@@ -21,8 +21,8 @@ import java.util.UUID;
 import org.joda.time.DateTime;
 
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
 
 
 public interface Subscription {
@@ -59,10 +59,10 @@ public interface Subscription {
 
     public DateTime getEndDate();
 
-    public IPlan getCurrentPlan();
+    public Plan getCurrentPlan();
 
     public String getCurrentPriceList();
 
-    public IPlanPhase getCurrentPhase();
+    public PlanPhase getCurrentPhase();
 
 }
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransition.java b/api/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransition.java
index 3c607d6..00e478f 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransition.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransition.java
@@ -20,8 +20,8 @@ import java.util.UUID;
 
 import org.joda.time.DateTime;
 
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.entitlement.api.user.Subscription.SubscriptionState;
 import com.ning.billing.util.eventbus.EventBusNotification;
 
@@ -51,15 +51,15 @@ public interface SubscriptionTransition extends EventBusNotification {
 
     SubscriptionState getPreviousState();
 
-    IPlan getPreviousPlan();
+    Plan getPreviousPlan();
 
     String getPreviousPriceList();
 
-    IPlanPhase getPreviousPhase();
+    PlanPhase getPreviousPhase();
 
-    IPlan getNextPlan();
+    Plan getNextPlan();
 
-    IPlanPhase getNextPhase();
+    PlanPhase getNextPhase();
 
     SubscriptionState getNextState();
 
diff --git a/api/src/main/java/com/ning/billing/invoice/api/DefaultBillingEvent.java b/api/src/main/java/com/ning/billing/invoice/api/DefaultBillingEvent.java
index 88d2ecb..a4f6834 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/DefaultBillingEvent.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/DefaultBillingEvent.java
@@ -19,7 +19,7 @@ package com.ning.billing.invoice.api;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.api.IInternationalPrice;
+import com.ning.billing.catalog.api.InternationalPrice;
 import com.ning.billing.entitlement.api.billing.BillingMode;
 import com.ning.billing.entitlement.api.billing.BillingEvent;
 import org.joda.time.DateTime;
@@ -37,13 +37,13 @@ public class DefaultBillingEvent implements BillingEvent {
     private final DateTime startDate;
     private final String planName;
     private final String planPhaseName;
-    private final IInternationalPrice price;
+    private final InternationalPrice price;
     private final BillingPeriod billingPeriod;
     private final int billCycleDay;
     private final BillingMode billingMode;
 
 
-    public DefaultBillingEvent(UUID subscriptionId, DateTime startDate, String planName, String planPhaseName, IInternationalPrice price,
+    public DefaultBillingEvent(UUID subscriptionId, DateTime startDate, String planName, String planPhaseName, InternationalPrice price,
                         BillingPeriod billingPeriod, int billCycleDay, BillingMode billingMode) {
         this.subscriptionId = subscriptionId;
         this.startDate = startDate;
@@ -92,7 +92,7 @@ public class DefaultBillingEvent implements BillingEvent {
     }
 
     @Override
-    public IInternationalPrice getPrice() {
+    public InternationalPrice getPrice() {
         return price;
     }
 
diff --git a/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java b/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java
index 9b09f31..4b182ef 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java
@@ -19,21 +19,21 @@ package com.ning.billing.catalog.glue;
 import org.skife.config.ConfigurationObjectFactory;
 
 import com.google.inject.AbstractModule;
-import com.ning.billing.catalog.CatalogService;
-import com.ning.billing.catalog.api.ICatalogService;
+import com.ning.billing.catalog.DefaultCatalogService;
+import com.ning.billing.catalog.api.CatalogService;
 import com.ning.billing.catalog.io.ICatalogLoader;
 import com.ning.billing.catalog.io.VersionedCatalogLoader;
-import com.ning.billing.config.ICatalogConfig;
+import com.ning.billing.config.CatalogConfig;
 
 public class CatalogModule extends AbstractModule {
 
     protected void installConfig() {
-        final ICatalogConfig config = new ConfigurationObjectFactory(System.getProperties()).build(ICatalogConfig.class);
-        bind(ICatalogConfig.class).toInstance(config);
+        final CatalogConfig config = new ConfigurationObjectFactory(System.getProperties()).build(CatalogConfig.class);
+        bind(CatalogConfig.class).toInstance(config);
     }
 
     protected void installCatalog() {
-        bind(ICatalogService.class).to(CatalogService.class).asEagerSingleton();
+        bind(CatalogService.class).to(DefaultCatalogService.class).asEagerSingleton();
         bind(ICatalogLoader.class).to(VersionedCatalogLoader.class).asEagerSingleton();
     }
 
diff --git a/catalog/src/main/java/com/ning/billing/catalog/io/VersionedCatalogLoader.java b/catalog/src/main/java/com/ning/billing/catalog/io/VersionedCatalogLoader.java
index 485ba80..b383647 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/io/VersionedCatalogLoader.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/io/VersionedCatalogLoader.java
@@ -24,7 +24,7 @@ import java.util.Date;
 import java.util.List;
 
 import com.google.inject.Inject;
-import com.ning.billing.catalog.Catalog;
+import com.ning.billing.catalog.StandaloneCatalog;
 import com.ning.billing.catalog.VersionedCatalog;
 import com.ning.billing.lifecycle.KillbillService.ServiceException;
 import com.ning.billing.util.clock.Clock;
@@ -62,7 +62,7 @@ public class VersionedCatalogLoader implements ICatalogLoader  {
 			
 			VersionedCatalog result = new VersionedCatalog();
 			for(URI u : xmlURIs) {
-				Catalog catalog = XMLLoader.getObjectFromUri(u, Catalog.class);
+				StandaloneCatalog catalog = XMLLoader.getObjectFromUri(u, StandaloneCatalog.class);
 				result.add(catalog);
 			}
 			Date now = clock.getUTCNow().toDate();
diff --git a/catalog/src/main/java/com/ning/billing/catalog/PriceListDefault.java b/catalog/src/main/java/com/ning/billing/catalog/PriceListDefault.java
index 2bd9310..72b6567 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/PriceListDefault.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/PriceListDefault.java
@@ -19,25 +19,25 @@ package com.ning.billing.catalog;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.util.config.ValidationError;
 import com.ning.billing.util.config.ValidationErrors;
 
 @XmlAccessorType(XmlAccessType.NONE)
-public class PriceListDefault extends PriceList {
+public class PriceListDefault extends DefaultPriceList {
 	
 	public PriceListDefault(){}
 	
-	public PriceListDefault(Plan[] defaultPlans) {
-		super(defaultPlans, IPriceListSet.DEFAULT_PRICELIST_NAME);
+	public PriceListDefault(DefaultPlan[] defaultPlans) {
+		super(defaultPlans, PriceListSet.DEFAULT_PRICELIST_NAME);
 	}
 
 	@Override
-	public ValidationErrors validate(Catalog catalog, ValidationErrors errors) {
+	public ValidationErrors validate(StandaloneCatalog catalog, ValidationErrors errors) {
 		super.validate(catalog, errors);
-		if(!getName().equals(IPriceListSet.DEFAULT_PRICELIST_NAME)) {
+		if(!getName().equals(PriceListSet.DEFAULT_PRICELIST_NAME)) {
 			errors.add(new ValidationError("The name of the default pricelist must be 'DEFAULT'", 
-					catalog.getCatalogURI(), PriceList.class, getName()));
+					catalog.getCatalogURI(), DefaultPriceList.class, getName()));
 			
 		}
 		return errors;
@@ -45,7 +45,7 @@ public class PriceListDefault extends PriceList {
 
 	@Override
 	public String getName() {
-		return IPriceListSet.DEFAULT_PRICELIST_NAME;
+		return PriceListSet.DEFAULT_PRICELIST_NAME;
 	}
 
 }
diff --git a/catalog/src/main/java/com/ning/billing/catalog/rules/Case.java b/catalog/src/main/java/com/ning/billing/catalog/rules/Case.java
index 39b267d..8ef2cb2 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/rules/Case.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/rules/Case.java
@@ -16,9 +16,9 @@
 
 package com.ning.billing.catalog.rules;
 
-import com.ning.billing.catalog.Catalog;
-import com.ning.billing.catalog.PriceList;
-import com.ning.billing.catalog.Product;
+import com.ning.billing.catalog.StandaloneCatalog;
+import com.ning.billing.catalog.DefaultPriceList;
+import com.ning.billing.catalog.DefaultProduct;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
 import com.ning.billing.catalog.api.PlanSpecifier;
@@ -26,30 +26,30 @@ import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.util.config.ValidatingConfig;
 import com.ning.billing.util.config.ValidationErrors;
 
-public abstract class Case<T> extends ValidatingConfig<Catalog> {
+public abstract class Case<T> extends ValidatingConfig<StandaloneCatalog> {
 
-	protected Product product;
+	protected DefaultProduct product;
 	protected ProductCategory productCategory;
 	protected BillingPeriod billingPeriod;
-	protected PriceList priceList;
+	protected DefaultPriceList priceList;
 
 	protected abstract T getResult();
 
-	public T getResult(PlanSpecifier planPhase, Catalog c) throws CatalogApiException {
+	public T getResult(PlanSpecifier planPhase, StandaloneCatalog c) throws CatalogApiException {
 		if (satisfiesCase(planPhase, c)	) {
 			return getResult(); 
 		}
 		return null;
 	}
 	
-	protected boolean satisfiesCase(PlanSpecifier planPhase, Catalog c) throws CatalogApiException {
+	protected boolean satisfiesCase(PlanSpecifier planPhase, StandaloneCatalog c) throws CatalogApiException {
 		return (product         == null || product.equals(c.findProduct(planPhase.getProductName()))) &&
 		(productCategory == null || productCategory.equals(planPhase.getProductCategory())) &&
 		(billingPeriod   == null || billingPeriod.equals(planPhase.getBillingPeriod())) &&
 		(priceList       == null || priceList.equals(c.getPriceListFromName(planPhase.getPriceListName())));
 	}
 
-	public static <K> K getResult(Case<K>[] cases, PlanSpecifier planSpec, Catalog catalog) throws CatalogApiException {
+	public static <K> K getResult(Case<K>[] cases, PlanSpecifier planSpec, StandaloneCatalog catalog) throws CatalogApiException {
     	if(cases != null) {
     		for(Case<K> c : cases) {
     			K result = c.getResult(planSpec, catalog);
@@ -63,11 +63,11 @@ public abstract class Case<T> extends ValidatingConfig<Catalog> {
     }
 	
 	@Override
-	public ValidationErrors validate(Catalog catalog, ValidationErrors errors) {
+	public ValidationErrors validate(StandaloneCatalog catalog, ValidationErrors errors) {
 		return errors;
 	}
 
-	protected Case<T> setProduct(Product product) {
+	protected Case<T> setProduct(DefaultProduct product) {
 		this.product = product;
 		return this;
 	}
@@ -82,7 +82,7 @@ public abstract class Case<T> extends ValidatingConfig<Catalog> {
 		return this;
 	}
 
-	protected Case<T> setPriceList(PriceList priceList) {
+	protected Case<T> setPriceList(DefaultPriceList priceList) {
 		this.priceList = priceList;
 		return this;
 	}
diff --git a/catalog/src/main/java/com/ning/billing/catalog/rules/CaseChange.java b/catalog/src/main/java/com/ning/billing/catalog/rules/CaseChange.java
index b5e6f8d..0c22d00 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/rules/CaseChange.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/rules/CaseChange.java
@@ -21,9 +21,9 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlIDREF;
 
-import com.ning.billing.catalog.Catalog;
-import com.ning.billing.catalog.PriceList;
-import com.ning.billing.catalog.Product;
+import com.ning.billing.catalog.StandaloneCatalog;
+import com.ning.billing.catalog.DefaultPriceList;
+import com.ning.billing.catalog.DefaultProduct;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
 import com.ning.billing.catalog.api.PhaseType;
@@ -34,14 +34,14 @@ import com.ning.billing.util.config.ValidatingConfig;
 import com.ning.billing.util.config.ValidationErrors;
 
 @XmlAccessorType(XmlAccessType.NONE)
-public abstract class CaseChange<T>  extends ValidatingConfig<Catalog> {
+public abstract class CaseChange<T>  extends ValidatingConfig<StandaloneCatalog> {
 
 	@XmlElement(required=false)
 	private PhaseType phaseType;
 
 	@XmlElement(required=false)
 	@XmlIDREF
-	private Product fromProduct;
+	private DefaultProduct fromProduct;
 
 	@XmlElement(required=false)
 	private ProductCategory fromProductCategory;
@@ -51,11 +51,11 @@ public abstract class CaseChange<T>  extends ValidatingConfig<Catalog> {
 
 	@XmlElement(required=false)
 	@XmlIDREF
-	private PriceList fromPriceList;
+	private DefaultPriceList fromPriceList;
 
 	@XmlElement(required=false)
 	@XmlIDREF
-	private Product toProduct;
+	private DefaultProduct toProduct;
 
 	@XmlElement(required=false)
 	private ProductCategory toProductCategory;
@@ -65,12 +65,12 @@ public abstract class CaseChange<T>  extends ValidatingConfig<Catalog> {
 
 	@XmlElement(required=false)
 	@XmlIDREF
-	private PriceList toPriceList;
+	private DefaultPriceList toPriceList;
 
 	protected abstract T getResult();
 	
 	public T getResult(PlanPhaseSpecifier from,
-			PlanSpecifier to, Catalog catalog) throws CatalogApiException {
+			PlanSpecifier to, StandaloneCatalog catalog) throws CatalogApiException {
 		if(	
 				(phaseType     	     == null || from.getPhaseType() == phaseType) &&
 				(fromProduct 	     == null || fromProduct.equals(catalog.findProduct(from.getProductName()))) &&
@@ -88,7 +88,7 @@ public abstract class CaseChange<T>  extends ValidatingConfig<Catalog> {
 	}
 	
 	static public <K> K getResult(CaseChange<K>[] cases, PlanPhaseSpecifier from,
-			PlanSpecifier to, Catalog catalog) throws CatalogApiException {
+			PlanSpecifier to, StandaloneCatalog catalog) throws CatalogApiException {
     	if(cases != null) {
     		for(CaseChange<K> cc : cases) {
     			K result = cc.getResult(from, to, catalog);
@@ -102,7 +102,7 @@ public abstract class CaseChange<T>  extends ValidatingConfig<Catalog> {
     }
 	
 	@Override
-	public ValidationErrors validate(Catalog catalog, ValidationErrors errors) {
+	public ValidationErrors validate(StandaloneCatalog catalog, ValidationErrors errors) {
 		return errors;
 	}
 
@@ -111,7 +111,7 @@ public abstract class CaseChange<T>  extends ValidatingConfig<Catalog> {
 		return this;
 	}
 
-	protected CaseChange<T> setFromProduct(Product fromProduct) {
+	protected CaseChange<T> setFromProduct(DefaultProduct fromProduct) {
 		this.fromProduct = fromProduct;
 		return this;
 	}
@@ -126,12 +126,12 @@ public abstract class CaseChange<T>  extends ValidatingConfig<Catalog> {
 		return this;
 	}
 
-	protected CaseChange<T> setFromPriceList(PriceList fromPriceList) {
+	protected CaseChange<T> setFromPriceList(DefaultPriceList fromPriceList) {
 		this.fromPriceList = fromPriceList;
 		return this;
 	}
 
-	protected CaseChange<T> setToProduct(Product toProduct) {
+	protected CaseChange<T> setToProduct(DefaultProduct toProduct) {
 		this.toProduct = toProduct;
 		return this;
 	}
@@ -146,7 +146,7 @@ public abstract class CaseChange<T>  extends ValidatingConfig<Catalog> {
 		return this;
 	}
 
-	protected CaseChange<T> setToPriceList(PriceList toPriceList) {
+	protected CaseChange<T> setToPriceList(DefaultPriceList toPriceList) {
 		this.toPriceList = toPriceList;
 		return this;
 	}
diff --git a/catalog/src/main/java/com/ning/billing/catalog/rules/CasePhase.java b/catalog/src/main/java/com/ning/billing/catalog/rules/CasePhase.java
index a098a77..fe46942 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/rules/CasePhase.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/rules/CasePhase.java
@@ -18,9 +18,9 @@ package com.ning.billing.catalog.rules;
 
 import javax.xml.bind.annotation.XmlElement;
 
-import com.ning.billing.catalog.Catalog;
-import com.ning.billing.catalog.PriceList;
-import com.ning.billing.catalog.Product;
+import com.ning.billing.catalog.StandaloneCatalog;
+import com.ning.billing.catalog.DefaultPriceList;
+import com.ning.billing.catalog.DefaultProduct;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
 import com.ning.billing.catalog.api.PhaseType;
@@ -34,7 +34,7 @@ public abstract class CasePhase<T> extends CaseStandardNaming<T> {
 	@XmlElement(required=false)
 	private PhaseType phaseType;	
 	
-	public T getResult(PlanPhaseSpecifier specifier, Catalog c) throws CatalogApiException {
+	public T getResult(PlanPhaseSpecifier specifier, StandaloneCatalog c) throws CatalogApiException {
 		if (	
 				(phaseType       == null || specifier.getPhaseType() == null || specifier.getPhaseType() == phaseType) &&
 				satisfiesCase(new PlanSpecifier(specifier), c)
@@ -44,7 +44,7 @@ public abstract class CasePhase<T> extends CaseStandardNaming<T> {
 		return null;
 	}
 	
-	public static <K> K getResult(CasePhase<K>[] cases, PlanPhaseSpecifier planSpec, Catalog catalog) throws CatalogApiException {
+	public static <K> K getResult(CasePhase<K>[] cases, PlanPhaseSpecifier planSpec, StandaloneCatalog catalog) throws CatalogApiException {
     	if(cases != null) {
     		for(CasePhase<K> cp : cases) {
     			K result = cp.getResult(planSpec, catalog);
@@ -58,7 +58,7 @@ public abstract class CasePhase<T> extends CaseStandardNaming<T> {
     }
 
 	@Override
-	public ValidationErrors validate(Catalog catalog, ValidationErrors errors) {
+	public ValidationErrors validate(StandaloneCatalog catalog, ValidationErrors errors) {
 		return errors;
 	}
 
diff --git a/catalog/src/main/java/com/ning/billing/catalog/rules/CasePriceList.java b/catalog/src/main/java/com/ning/billing/catalog/rules/CasePriceList.java
index 2e155f8..5508c96 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/rules/CasePriceList.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/rules/CasePriceList.java
@@ -19,18 +19,18 @@ package com.ning.billing.catalog.rules;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlIDREF;
 
-import com.ning.billing.catalog.PriceList;
-import com.ning.billing.catalog.Product;
+import com.ning.billing.catalog.DefaultPriceList;
+import com.ning.billing.catalog.DefaultProduct;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.ProductCategory;
 
-public class CasePriceList extends Case<PriceList> {
+public class CasePriceList extends Case<DefaultPriceList> {
 
-	private PriceList toPriceList;
+	private DefaultPriceList toPriceList;
 
 	@XmlElement(required=false, name="fromProduct")
 	@XmlIDREF
-	public Product getProduct(){
+	public DefaultProduct getProduct(){
 		return product;
 	}
 
@@ -46,18 +46,18 @@ public class CasePriceList extends Case<PriceList> {
 	
 	@XmlElement(required=false, name="fromPriceList")
 	@XmlIDREF
-	public PriceList getPriceList() {
+	public DefaultPriceList getPriceList() {
 		return priceList;
 	}
 
 	@Override
 	@XmlElement(required=true, name="toPriceList")
 	@XmlIDREF
-	protected PriceList getResult() {
+	protected DefaultPriceList getResult() {
 		return toPriceList;
 	}
 
-	protected CasePriceList setToPriceList(PriceList toPriceList) {
+	protected CasePriceList setToPriceList(DefaultPriceList toPriceList) {
 		this.toPriceList = toPriceList;
 		return this;
 	}
diff --git a/catalog/src/main/java/com/ning/billing/catalog/rules/CaseStandardNaming.java b/catalog/src/main/java/com/ning/billing/catalog/rules/CaseStandardNaming.java
index f74a48d..a0235de 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/rules/CaseStandardNaming.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/rules/CaseStandardNaming.java
@@ -19,8 +19,8 @@ package com.ning.billing.catalog.rules;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlIDREF;
 
-import com.ning.billing.catalog.PriceList;
-import com.ning.billing.catalog.Product;
+import com.ning.billing.catalog.DefaultPriceList;
+import com.ning.billing.catalog.DefaultProduct;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.ProductCategory;
 
@@ -28,7 +28,7 @@ public abstract class CaseStandardNaming<T> extends Case<T> {
 
 	@XmlElement(required=false, name="product")
 	@XmlIDREF
-	public Product getProduct(){
+	public DefaultProduct getProduct(){
 		return product;
 	}
 
@@ -44,7 +44,7 @@ public abstract class CaseStandardNaming<T> extends Case<T> {
 	
 	@XmlElement(required=false, name="priceList")
 	@XmlIDREF
-	public PriceList getPriceList() {
+	public DefaultPriceList getPriceList() {
 		return priceList;
 	}
 
diff --git a/catalog/src/main/java/com/ning/billing/catalog/rules/PlanRules.java b/catalog/src/main/java/com/ning/billing/catalog/rules/PlanRules.java
index d688815..40edb6b 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/rules/PlanRules.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/rules/PlanRules.java
@@ -21,8 +21,8 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementWrapper;
 
-import com.ning.billing.catalog.Catalog;
-import com.ning.billing.catalog.PriceList;
+import com.ning.billing.catalog.StandaloneCatalog;
+import com.ning.billing.catalog.DefaultPriceList;
 import com.ning.billing.catalog.api.ActionPolicy;
 import com.ning.billing.catalog.api.BillingAlignment;
 import com.ning.billing.catalog.api.CatalogApiException;
@@ -36,7 +36,7 @@ import com.ning.billing.util.config.ValidatingConfig;
 import com.ning.billing.util.config.ValidationErrors;
 
 @XmlAccessorType(XmlAccessType.NONE)
-public class PlanRules extends ValidatingConfig<Catalog>  {
+public class PlanRules extends ValidatingConfig<StandaloneCatalog>  {
 
 	@XmlElementWrapper(name="changePolicy")
 	@XmlElement(name="changePolicyCase", required=false)
@@ -62,20 +62,20 @@ public class PlanRules extends ValidatingConfig<Catalog>  {
 	@XmlElement(name="priceListCase", required=false)
 	private CasePriceList[] priceListCase;
 
-	public PlanAlignmentCreate getPlanCreateAlignment(PlanSpecifier specifier, Catalog catalog) throws CatalogApiException {
+	public PlanAlignmentCreate getPlanCreateAlignment(PlanSpecifier specifier, StandaloneCatalog catalog) throws CatalogApiException {
 		return Case.getResult(createAlignmentCase, specifier, catalog);      
     }
 	
-	public ActionPolicy getPlanCancelPolicy(PlanPhaseSpecifier planPhase, Catalog catalog) throws CatalogApiException {
+	public ActionPolicy getPlanCancelPolicy(PlanPhaseSpecifier planPhase, StandaloneCatalog catalog) throws CatalogApiException {
 		return CasePhase.getResult(cancelCase, planPhase, catalog);      
 	}
 
-	public BillingAlignment getBillingAlignment(PlanPhaseSpecifier planPhase, Catalog catalog) throws CatalogApiException {
+	public BillingAlignment getBillingAlignment(PlanPhaseSpecifier planPhase, StandaloneCatalog catalog) throws CatalogApiException {
 		return CasePhase.getResult(billingAlignmentCase, planPhase, catalog);      
 	}
 
-	public PlanChangeResult planChange(PlanPhaseSpecifier from, PlanSpecifier to, Catalog catalog) throws CatalogApiException {
-		PriceList priceList = catalog.getPriceListFromName(to.getPriceListName());
+	public PlanChangeResult planChange(PlanPhaseSpecifier from, PlanSpecifier to, StandaloneCatalog catalog) throws CatalogApiException {
+		DefaultPriceList priceList = catalog.getPriceListFromName(to.getPriceListName());
 		if( priceList== null ) {
 			priceList = findPriceList(from.toPlanSpecifier(), catalog);
 			to = new PlanSpecifier(to.getProductName(), to.getProductCategory(), to.getBillingPeriod(), priceList.getName());
@@ -92,12 +92,12 @@ public class PlanRules extends ValidatingConfig<Catalog>  {
 	}
 	
 	public PlanAlignmentChange getPlanChangeAlignment(PlanPhaseSpecifier from,
-			PlanSpecifier to, Catalog catalog) throws CatalogApiException {
+			PlanSpecifier to, StandaloneCatalog catalog) throws CatalogApiException {
 		return CaseChange.getResult(changeAlignmentCase, from, to, catalog);      
     }
 
 	public ActionPolicy getPlanChangePolicy(PlanPhaseSpecifier from,
-			PlanSpecifier to, Catalog catalog) throws CatalogApiException {
+			PlanSpecifier to, StandaloneCatalog catalog) throws CatalogApiException {
 		if(from.getProductName().equals(to.getProductName()) &&
 				from.getBillingPeriod() == to.getBillingPeriod() &&
 				from.getPriceListName().equals(to.getPriceListName())) {
@@ -107,8 +107,8 @@ public class PlanRules extends ValidatingConfig<Catalog>  {
 		return CaseChange.getResult(changeCase, from, to, catalog); 
 	}
 	
-	private PriceList findPriceList(PlanSpecifier specifier, Catalog catalog) throws CatalogApiException {
-		PriceList result = Case.getResult(priceListCase, specifier, catalog);
+	private DefaultPriceList findPriceList(PlanSpecifier specifier, StandaloneCatalog catalog) throws CatalogApiException {
+		DefaultPriceList result = Case.getResult(priceListCase, specifier, catalog);
 		if (result == null) {
 			result = catalog.getPriceListFromName(specifier.getPriceListName());
 		}
@@ -117,7 +117,7 @@ public class PlanRules extends ValidatingConfig<Catalog>  {
 	
 	
 	@Override
-	public ValidationErrors validate(Catalog catalog, ValidationErrors errors) {
+	public ValidationErrors validate(StandaloneCatalog catalog, ValidationErrors errors) {
 	    //TODO: MDW - Validation: check that the plan change special case pairs are unique!
 	    //TODO: MDW - Validation: check that the each product appears in at most one tier.
 		//TODO: MDW - Unit tests for rules
diff --git a/catalog/src/main/java/com/ning/billing/catalog/VersionedCatalog.java b/catalog/src/main/java/com/ning/billing/catalog/VersionedCatalog.java
index 7bf76f5..747e481 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/VersionedCatalog.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/VersionedCatalog.java
@@ -29,10 +29,10 @@ import com.ning.billing.catalog.api.BillingAlignment;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.api.ICatalog;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.Catalog;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.PlanAlignmentChange;
 import com.ning.billing.catalog.api.PlanAlignmentCreate;
 import com.ning.billing.catalog.api.PlanChangeResult;
@@ -41,22 +41,22 @@ import com.ning.billing.catalog.api.PlanSpecifier;
 import com.ning.billing.util.config.ValidatingConfig;
 import com.ning.billing.util.config.ValidationErrors;
 
-public class VersionedCatalog extends ValidatingConfig<Catalog> implements ICatalog {
+public class VersionedCatalog extends ValidatingConfig<StandaloneCatalog> implements Catalog {
 	
-	private Catalog currentCatalog;
+	private StandaloneCatalog currentCatalog;
 	
-	private final List<Catalog> versions = new ArrayList<Catalog>();
+	private final List<StandaloneCatalog> versions = new ArrayList<StandaloneCatalog>();
 	
 	@Inject
 	public VersionedCatalog() {
-		Catalog baseline = new Catalog(new Date(0)); // init with an empty catalog may need to 
+		StandaloneCatalog baseline = new StandaloneCatalog(new Date(0)); // init with an empty catalog may need to 
 													 // populate some empty pieces here to make validation work
 		add(baseline); 
 	}
 	
-	private Catalog versionForDate(Date date) {
-		Catalog previous = versions.get(0);
-		for(Catalog c : versions) {
+	private StandaloneCatalog versionForDate(Date date) {
+		StandaloneCatalog previous = versions.get(0);
+		for(StandaloneCatalog c : versions) {
 			if(c.getEffectiveDate().getTime() > date.getTime()) {
 				return previous;
 			}
@@ -65,20 +65,20 @@ public class VersionedCatalog extends ValidatingConfig<Catalog> implements ICata
 		return versions.get(versions.size() - 1);
 	}
 
-	public void add(Catalog e) {
+	public void add(StandaloneCatalog e) {
 		if(currentCatalog == null) {
 			currentCatalog = e;
 		}
 		versions.add(e);
-		Collections.sort(versions,new Comparator<Catalog>() {
+		Collections.sort(versions,new Comparator<StandaloneCatalog>() {
 			@Override
-			public int compare(Catalog c1, Catalog c2) {
+			public int compare(StandaloneCatalog c1, StandaloneCatalog c2) {
 				return c1.getEffectiveDate().compareTo(c2.getEffectiveDate());
 			}
 		});
 	}
 
-	public Iterator<Catalog> iterator() {
+	public Iterator<StandaloneCatalog> iterator() {
 		return versions.iterator();
 	}
 	
@@ -92,7 +92,7 @@ public class VersionedCatalog extends ValidatingConfig<Catalog> implements ICata
 	}
 
 	@Override
-	public Product[] getProducts() {
+	public DefaultProduct[] getProducts() {
 		return currentCatalog.getProducts();
 	}
 
@@ -102,7 +102,7 @@ public class VersionedCatalog extends ValidatingConfig<Catalog> implements ICata
 	}
 
 	@Override
-	public Plan[] getPlans() {
+	public DefaultPlan[] getPlans() {
 		return currentCatalog.getPlans();
 	}
 
@@ -112,36 +112,36 @@ public class VersionedCatalog extends ValidatingConfig<Catalog> implements ICata
 	}
 
 	@Override
-	public IPlan findPlan(String productName, BillingPeriod term,
+	public Plan findPlan(String productName, BillingPeriod term,
 			String planSetName) throws CatalogApiException {
 		return currentCatalog.findPlan(productName, term, planSetName);
 	}
 
 	@Override
-	public Plan findPlan(String name) throws CatalogApiException {
+	public DefaultPlan findPlan(String name) throws CatalogApiException {
 		return currentCatalog.findPlan(name);
 	}
 
 	@Override
-	public IPlanPhase findPhase(String name) throws CatalogApiException {
+	public PlanPhase findPhase(String name) throws CatalogApiException {
 		return currentCatalog.findPhase(name);
 	}
 
 	@Override
-	public IProduct findProduct(String name) throws CatalogApiException {
+	public Product findProduct(String name) throws CatalogApiException {
 		return currentCatalog.findProduct(name);
 	}
 
 	@Override
-	public void initialize(Catalog catalog, URI sourceURI) {
-		for(Catalog c : versions) {
+	public void initialize(StandaloneCatalog catalog, URI sourceURI) {
+		for(StandaloneCatalog c : versions) {
 			c.initialize(catalog, sourceURI);
 		}
 	}
 
 	@Override
-	public ValidationErrors validate(Catalog catalog, ValidationErrors errors) {
-		for(Catalog c : versions) {
+	public ValidationErrors validate(StandaloneCatalog catalog, ValidationErrors errors) {
+		for(StandaloneCatalog c : versions) {
 			errors.addAll(c.validate(c, errors));
 		}
 		return errors;
diff --git a/catalog/src/test/java/com/ning/billing/catalog/CreateCatalogSchema.java b/catalog/src/test/java/com/ning/billing/catalog/CreateCatalogSchema.java
index 3aae7fb..9094733 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/CreateCatalogSchema.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/CreateCatalogSchema.java
@@ -20,7 +20,7 @@ import java.io.File;
 import java.io.FileWriter;
 import java.io.Writer;
 
-import com.ning.billing.catalog.Catalog;
+import com.ning.billing.catalog.StandaloneCatalog;
 import com.ning.billing.util.config.XMLSchemaGenerator;
 
 public class CreateCatalogSchema {
@@ -36,7 +36,7 @@ public class CreateCatalogSchema {
 		
 		File f = new File(args[0]);
 		Writer w = new FileWriter(f);
-		w.write(XMLSchemaGenerator.xmlSchemaAsString(Catalog.class));
+		w.write(XMLSchemaGenerator.xmlSchemaAsString(StandaloneCatalog.class));
 		w.close();
 
 	}
diff --git a/catalog/src/test/java/com/ning/billing/catalog/io/TestVersionedCatalogLoader.java b/catalog/src/test/java/com/ning/billing/catalog/io/TestVersionedCatalogLoader.java
index 085b005..3860561 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/io/TestVersionedCatalogLoader.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/io/TestVersionedCatalogLoader.java
@@ -33,7 +33,7 @@ import org.testng.annotations.Test;
 import org.xml.sax.SAXException;
 
 import com.google.common.io.Resources;
-import com.ning.billing.catalog.Catalog;
+import com.ning.billing.catalog.StandaloneCatalog;
 import com.ning.billing.catalog.VersionedCatalog;
 import com.ning.billing.catalog.api.InvalidConfigException;
 import com.ning.billing.lifecycle.KillbillService.ServiceException;
@@ -124,7 +124,7 @@ public class TestVersionedCatalogLoader {
 	public void testLoad() throws MalformedURLException, IOException, SAXException, InvalidConfigException, JAXBException, TransformerException, URISyntaxException, ServiceException {
 		VersionedCatalog c = loader.load(Resources.getResource("versionedCatalog").toString());
 		assertEquals(4, c.size());
-		Iterator<Catalog> it = c.iterator();
+		Iterator<StandaloneCatalog> it = c.iterator();
 		it.next(); //discard the baseline
 		DateTime dt = new DateTime("2011-01-01T00:00:00+00:00");
 		assertEquals(dt.toDate(),it.next().getEffectiveDate());
diff --git a/catalog/src/test/java/com/ning/billing/catalog/io/TestXMLReader.java b/catalog/src/test/java/com/ning/billing/catalog/io/TestXMLReader.java
index 01b436e..3ec03d5 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/io/TestXMLReader.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/io/TestXMLReader.java
@@ -19,15 +19,15 @@ package com.ning.billing.catalog.io;
 import org.testng.annotations.Test;
 
 import com.google.common.io.Resources;
-import com.ning.billing.catalog.Catalog;
+import com.ning.billing.catalog.StandaloneCatalog;
 import com.ning.billing.util.config.XMLLoader;
 
 public class TestXMLReader {
 
 	@Test(enabled=true)
 	public void testCatalogLoad() throws Exception {
-		XMLLoader.getObjectFromString(Resources.getResource("WeaponsHire.xml").toExternalForm(), Catalog.class);
-		XMLLoader.getObjectFromString(Resources.getResource("WeaponsHireSmall.xml").toExternalForm(), Catalog.class);
+		XMLLoader.getObjectFromString(Resources.getResource("WeaponsHire.xml").toExternalForm(), StandaloneCatalog.class);
+		XMLLoader.getObjectFromString(Resources.getResource("WeaponsHireSmall.xml").toExternalForm(), StandaloneCatalog.class);
 	}
 	
 }
diff --git a/catalog/src/test/java/com/ning/billing/catalog/MockCatalog.java b/catalog/src/test/java/com/ning/billing/catalog/MockCatalog.java
index 31d9e51..5c4975e 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/MockCatalog.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/MockCatalog.java
@@ -27,7 +27,7 @@ import com.ning.billing.catalog.rules.CaseChangePlanPolicy;
 import com.ning.billing.catalog.rules.CaseCreateAlignment;
 import com.ning.billing.catalog.rules.PlanRules;
 
-public class MockCatalog extends Catalog {
+public class MockCatalog extends StandaloneCatalog {
 	private static final String[] PRODUCT_NAMES = new String[]{ "TestProduct1", "TestProduct2", "TestProduct3"};
 	
 	public MockCatalog() {
@@ -53,32 +53,32 @@ public class MockCatalog extends Catalog {
 
 	public void populateProducts() {
 		String[] names = getProductNames();
-		Product[] products = new Product[names.length];
+		DefaultProduct[] products = new DefaultProduct[names.length];
 		for(int i = 0; i < names.length; i++) {
-			products[i] = new Product(names[i], ProductCategory.BASE);
+			products[i] = new DefaultProduct(names[i], ProductCategory.BASE);
 		}
 		setProducts(products);
 	}
 	
 	public void populatePlans() {
-		Product[] products = getProducts();
-		Plan[] plans = new Plan[products.length];
+		DefaultProduct[] products = getProducts();
+		DefaultPlan[] plans = new DefaultPlan[products.length];
 		for(int i = 0; i < products.length; i++) {
-			PlanPhase phase = new PlanPhase().setPhaseType(PhaseType.EVERGREEN).setBillingPeriod(BillingPeriod.MONTHLY).setReccuringPrice(new InternationalPrice());
+			DefaultPlanPhase phase = new DefaultPlanPhase().setPhaseType(PhaseType.EVERGREEN).setBillingPeriod(BillingPeriod.MONTHLY).setReccuringPrice(new DefaultInternationalPrice());
 			plans[i] = new MockPlan().setName(products[i].getName().toLowerCase() + "-plan").setProduct(products[i]).setFinalPhase(phase);
 		}
 		setPlans(plans);
 	}
 
 	public void populatePriceLists() {
-		Plan[] plans = getPlans();
+		DefaultPlan[] plans = getPlans();
 		
-		PriceList[] priceList = new PriceList[plans.length - 1];
+		DefaultPriceList[] priceList = new DefaultPriceList[plans.length - 1];
 		for(int i = 1; i < plans.length; i++) {
-			priceList[i-1] = new PriceList(new Plan[]{plans[i]},plans[i].getName()+ "-pl");
+			priceList[i-1] = new DefaultPriceList(new DefaultPlan[]{plans[i]},plans[i].getName()+ "-pl");
 		}
 		
-		PriceListSet set = new PriceListSet(new PriceListDefault(new Plan[]{plans[0]}),priceList);
+		DefaultPriceListSet set = new DefaultPriceListSet(new PriceListDefault(new DefaultPlan[]{plans[0]}),priceList);
 		setPriceLists(set);
 	}
 	
diff --git a/catalog/src/test/java/com/ning/billing/catalog/MockInternationalPrice.java b/catalog/src/test/java/com/ning/billing/catalog/MockInternationalPrice.java
index cd9afbe..1a4d8d9 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/MockInternationalPrice.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/MockInternationalPrice.java
@@ -21,21 +21,21 @@ import java.util.Date;
 
 import com.ning.billing.catalog.api.Currency;
 
-public class MockInternationalPrice extends InternationalPrice {
+public class MockInternationalPrice extends DefaultInternationalPrice {
 	
 	MockInternationalPrice() {
 		setEffectiveDateForExistingSubscriptons(new Date());
-		setPrices(new Price[] {
-			new Price().setCurrency(Currency.USD).setValue(new BigDecimal(1))	
+		setPrices(new DefaultPrice[] {
+			new DefaultPrice().setCurrency(Currency.USD).setValue(new BigDecimal(1))	
 		});
 	}
 	
-	MockInternationalPrice(Date effectiveDateForExistingSubscriptions, Price[] price) {
+	MockInternationalPrice(Date effectiveDateForExistingSubscriptions, DefaultPrice[] price) {
 		setEffectiveDateForExistingSubscriptons(effectiveDateForExistingSubscriptions);
 		setPrices(price);
 	}
 
-	MockInternationalPrice(Price... price) {
+	MockInternationalPrice(DefaultPrice... price) {
 		setEffectiveDateForExistingSubscriptons(new Date());
 		setPrices(price);
 	}
diff --git a/catalog/src/test/java/com/ning/billing/catalog/MockPlan.java b/catalog/src/test/java/com/ning/billing/catalog/MockPlan.java
index cf5324d..b9e9afe 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/MockPlan.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/MockPlan.java
@@ -16,9 +16,9 @@
 
 package com.ning.billing.catalog;
 
-public class MockPlan extends Plan {
+public class MockPlan extends DefaultPlan {
 
-	public MockPlan(String name, Product product, PlanPhase[] planPhases, PlanPhase finalPhase, int plansAllowedInBundle) {
+	public MockPlan(String name, DefaultProduct product, DefaultPlanPhase[] planPhases, DefaultPlanPhase finalPhase, int plansAllowedInBundle) {
 		setName(name);
 		setProduct(product);
 		setFinalPhase(finalPhase);
diff --git a/catalog/src/test/java/com/ning/billing/catalog/MockPlanPhase.java b/catalog/src/test/java/com/ning/billing/catalog/MockPlanPhase.java
index ede4319..fb244eb 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/MockPlanPhase.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/MockPlanPhase.java
@@ -20,14 +20,14 @@ import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.TimeUnit;
 
-public class MockPlanPhase extends PlanPhase {
+public class MockPlanPhase extends DefaultPlanPhase {
 
     public MockPlanPhase(
     		BillingPeriod billingPeriod, 
     		PhaseType type, 
-    		Duration duration, 
-    		InternationalPrice recurringPrice, 
-    		InternationalPrice fixedPrice) {
+    		DefaultDuration duration, 
+    		DefaultInternationalPrice recurringPrice, 
+    		DefaultInternationalPrice fixedPrice) {
 		setBillingPeriod(billingPeriod);
 		setPhaseType(type);
 		setDuration(duration);
@@ -38,7 +38,7 @@ public class MockPlanPhase extends PlanPhase {
     public MockPlanPhase() {
 		setBillingPeriod(BillingPeriod.MONTHLY);
 		setPhaseType(PhaseType.EVERGREEN);
-		setDuration(new Duration().setNumber(-1).setUnit(TimeUnit.UNLIMITED));
+		setDuration(new DefaultDuration().setNumber(-1).setUnit(TimeUnit.UNLIMITED));
 		setReccuringPrice(new MockInternationalPrice());
 		setFixedPrice(null);
 		setPlan(new MockPlan(this));
@@ -47,7 +47,7 @@ public class MockPlanPhase extends PlanPhase {
 	public MockPlanPhase(MockPlan mockPlan) {
 		setBillingPeriod(BillingPeriod.MONTHLY);
 		setPhaseType(PhaseType.EVERGREEN);
-		setDuration(new Duration().setNumber(-1).setUnit(TimeUnit.UNLIMITED));
+		setDuration(new DefaultDuration().setNumber(-1).setUnit(TimeUnit.UNLIMITED));
 		setReccuringPrice(new MockInternationalPrice());
 		setFixedPrice(null);
 		setPlan(mockPlan);
diff --git a/catalog/src/test/java/com/ning/billing/catalog/MockProduct.java b/catalog/src/test/java/com/ning/billing/catalog/MockProduct.java
index 11620a0..7587dba 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/MockProduct.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/MockProduct.java
@@ -18,7 +18,7 @@ package com.ning.billing.catalog;
 
 import com.ning.billing.catalog.api.ProductCategory;
 
-public class MockProduct extends Product {
+public class MockProduct extends DefaultProduct {
 
 	public MockProduct() {
 		setName("TestProduct");
diff --git a/catalog/src/test/java/com/ning/billing/catalog/rules/TestCase.java b/catalog/src/test/java/com/ning/billing/catalog/rules/TestCase.java
index 03ae3a3..a9c3ffc 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/rules/TestCase.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/rules/TestCase.java
@@ -23,13 +23,13 @@ import javax.xml.bind.annotation.XmlElement;
 
 import org.testng.annotations.Test;
 
-import com.ning.billing.catalog.Catalog;
+import com.ning.billing.catalog.StandaloneCatalog;
 import com.ning.billing.catalog.MockCatalog;
-import com.ning.billing.catalog.PriceList;
-import com.ning.billing.catalog.Product;
+import com.ning.billing.catalog.DefaultPriceList;
+import com.ning.billing.catalog.DefaultProduct;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.catalog.api.PlanSpecifier;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.catalog.rules.Case;
@@ -41,7 +41,7 @@ public class TestCase {
 		@XmlElement(required=true)
 		private Result policy;
 
-		public CaseResult(Product product, ProductCategory productCategory, BillingPeriod billingPeriod, PriceList priceList,
+		public CaseResult(DefaultProduct product, ProductCategory productCategory, BillingPeriod billingPeriod, DefaultPriceList priceList,
 				 Result policy) {
 			setProduct(product);
 			setProductCategory(productCategory);
@@ -60,8 +60,8 @@ public class TestCase {
 	public void testBasic() throws CatalogApiException{
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
 
 		CaseResult cr = new CaseResult(
@@ -82,8 +82,8 @@ public class TestCase {
 	public void testWildCardProduct() throws CatalogApiException{
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
 
 		CaseResult cr = new CaseResult(
@@ -105,8 +105,8 @@ public class TestCase {
 	public void testWildCardProductCategory() throws CatalogApiException{
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
 
 		CaseResult cr = new CaseResult(
@@ -128,8 +128,8 @@ public class TestCase {
 	public void testWildCardBillingPeriod() throws CatalogApiException{
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
 
 		CaseResult cr = new CaseResult(
@@ -151,8 +151,8 @@ public class TestCase {
 	public void testWildCardPriceList() throws CatalogApiException{
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
 
 		CaseResult cr = new CaseResult(
@@ -174,8 +174,8 @@ public class TestCase {
 	public void testCaseOrder() throws CatalogApiException {
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
 
 		CaseResult cr0 = new CaseResult(
@@ -218,11 +218,11 @@ public class TestCase {
 	
 
 
-	protected void assertionNull(CaseResult cr, String productName, ProductCategory productCategory, BillingPeriod bp, String priceListName, Catalog cat) throws CatalogApiException{
+	protected void assertionNull(CaseResult cr, String productName, ProductCategory productCategory, BillingPeriod bp, String priceListName, StandaloneCatalog cat) throws CatalogApiException{
 		assertNull(cr.getResult(new PlanSpecifier(productName, productCategory, bp, priceListName), cat));
 	}
 
-	protected void assertion(Result result, CaseResult cr, String productName, ProductCategory productCategory, BillingPeriod bp, String priceListName,Catalog cat) throws CatalogApiException{
+	protected void assertion(Result result, CaseResult cr, String productName, ProductCategory productCategory, BillingPeriod bp, String priceListName,StandaloneCatalog cat) throws CatalogApiException{
 		assertEquals(result, cr.getResult(new PlanSpecifier(productName, productCategory, bp, priceListName), cat));
 	}
 
diff --git a/catalog/src/test/java/com/ning/billing/catalog/rules/TestCaseChange.java b/catalog/src/test/java/com/ning/billing/catalog/rules/TestCaseChange.java
index 152480d..bfc3f6d 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/rules/TestCaseChange.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/rules/TestCaseChange.java
@@ -24,13 +24,13 @@ import javax.xml.bind.annotation.XmlElement;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import com.ning.billing.catalog.Catalog;
+import com.ning.billing.catalog.StandaloneCatalog;
 import com.ning.billing.catalog.MockCatalog;
-import com.ning.billing.catalog.PriceList;
-import com.ning.billing.catalog.Product;
+import com.ning.billing.catalog.DefaultPriceList;
+import com.ning.billing.catalog.DefaultProduct;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.PlanPhaseSpecifier;
 import com.ning.billing.catalog.api.PlanSpecifier;
@@ -42,10 +42,10 @@ public class TestCaseChange {
 		@XmlElement(required=true)
 		private Result result;
 
-		public CaseChangeResult(Product from, Product to, 
+		public CaseChangeResult(DefaultProduct from, DefaultProduct to, 
 				ProductCategory fromProductCategory, ProductCategory toProductCategory, 
 				BillingPeriod fromBP, BillingPeriod toBP, 
-				PriceList fromPriceList, PriceList toPriceList,
+				DefaultPriceList fromPriceList, DefaultPriceList toPriceList,
 				PhaseType fromType, 
 				Result result) {
 			setFromProduct(from);
@@ -70,11 +70,11 @@ public class TestCaseChange {
 	public void testBasic(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -160,11 +160,11 @@ public class TestCaseChange {
 	public void testWildcardFromProduct(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -243,11 +243,11 @@ public class TestCaseChange {
 	public void testWildcardToProduct(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -333,11 +333,11 @@ public class TestCaseChange {
 	public void testWildcardFromProductCategory(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -423,11 +423,11 @@ public class TestCaseChange {
 	public void testWildcardToProductCategory(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -513,11 +513,11 @@ public class TestCaseChange {
 	public void testWildcardFromBillingPeriod(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -604,11 +604,11 @@ public class TestCaseChange {
 	public void testWildCardToBillingPeriod(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -694,11 +694,11 @@ public class TestCaseChange {
 	public void testWildCardFromPriceList(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -784,11 +784,11 @@ public class TestCaseChange {
 	public void testWildcardToPriceList(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -874,11 +874,11 @@ public class TestCaseChange {
 	public void testWildcardPlanPhase(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr = new CaseChangeResult(
@@ -965,11 +965,11 @@ public class TestCaseChange {
 	public void testOrder() throws CatalogApiException{
 		MockCatalog cat = new MockCatalog();
 
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 
-		Product product2 = cat.getProducts()[2];
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
+		DefaultProduct product2 = cat.getProducts()[2];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[1];
 
 
 		CaseChangeResult cr0 = new CaseChangeResult(
@@ -1032,7 +1032,7 @@ public class TestCaseChange {
 			ProductCategory fromProductCategory, ProductCategory toProductCategory, 
 			BillingPeriod fromBp, BillingPeriod toBp,
 			String fromPriceListName, String toPriceListName,
-			PhaseType phaseType, Catalog cat){
+			PhaseType phaseType, StandaloneCatalog cat){
 		try {
 			assertNull(cr.getResult(new PlanPhaseSpecifier(fromProductName, fromProductCategory, fromBp, fromPriceListName, phaseType), 
 									new PlanSpecifier(toProductName, toProductCategory, toBp, toPriceListName),cat));
@@ -1046,7 +1046,7 @@ public class TestCaseChange {
 			ProductCategory fromProductCategory, ProductCategory toProductCategory, 
 			BillingPeriod fromBp, BillingPeriod toBp,
 			String fromPriceListName, String toPriceListName,
-			PhaseType phaseType, Catalog cat){
+			PhaseType phaseType, StandaloneCatalog cat){
 		try {
 			assertEquals(result, cr.getResult(new PlanPhaseSpecifier(fromProductName, fromProductCategory,fromBp, fromPriceListName, phaseType), 
 					new PlanSpecifier(toProductName, toProductCategory, toBp, toPriceListName),cat));
diff --git a/catalog/src/test/java/com/ning/billing/catalog/rules/TestCasePhase.java b/catalog/src/test/java/com/ning/billing/catalog/rules/TestCasePhase.java
index 96893c8..c9d2f22 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/rules/TestCasePhase.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/rules/TestCasePhase.java
@@ -21,10 +21,10 @@ import javax.xml.bind.annotation.XmlElement;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import com.ning.billing.catalog.Catalog;
+import com.ning.billing.catalog.StandaloneCatalog;
 import com.ning.billing.catalog.MockCatalog;
-import com.ning.billing.catalog.PriceList;
-import com.ning.billing.catalog.Product;
+import com.ning.billing.catalog.DefaultPriceList;
+import com.ning.billing.catalog.DefaultProduct;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
 import com.ning.billing.catalog.api.PhaseType;
@@ -38,7 +38,7 @@ public class TestCasePhase {
 		@XmlElement(required=true)
 		private Result policy;
 
-		public CaseResult(Product product, ProductCategory productCategory, BillingPeriod billingPeriod, PriceList priceList,
+		public CaseResult(DefaultProduct product, ProductCategory productCategory, BillingPeriod billingPeriod, DefaultPriceList priceList,
 				PhaseType phaseType, Result policy) {
 			setProduct(product);
 			setProductCategory(productCategory);
@@ -59,8 +59,8 @@ public class TestCasePhase {
 	public void testBasic(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceLists().getDefaultPricelist();
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceLists().getDefaultPricelist();
 
 
 		CaseResult cr = new CaseResult(
@@ -83,8 +83,8 @@ public class TestCasePhase {
 	public void testWildCardProduct(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceLists().getDefaultPricelist();
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceLists().getDefaultPricelist();
 
 
 		CaseResult cr = new CaseResult(
@@ -107,8 +107,8 @@ public class TestCasePhase {
 	public void testWildCardProductCategory(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceLists().getDefaultPricelist();
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceLists().getDefaultPricelist();
 
 
 		CaseResult cr = new CaseResult(
@@ -131,8 +131,8 @@ public class TestCasePhase {
 	public void testWildCardBillingPeriod(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceLists().getDefaultPricelist();
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceLists().getDefaultPricelist();
 
 
 		CaseResult cr = new CaseResult(
@@ -155,8 +155,8 @@ public class TestCasePhase {
 	public void testWildCardPriceList(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceLists().getDefaultPricelist();
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceLists().getDefaultPricelist();
 
 
 		CaseResult cr = new CaseResult(
@@ -179,8 +179,8 @@ public class TestCasePhase {
 	public void testWildCardPhaseType(){
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceLists().getDefaultPricelist();
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceLists().getDefaultPricelist();
 
 
 		CaseResult cr = new CaseResult(
@@ -203,8 +203,8 @@ public class TestCasePhase {
 	public void testOrder() throws CatalogApiException{
 		MockCatalog cat = new MockCatalog();
 
-		Product product = cat.getProducts()[0];
-		PriceList priceList = cat.getPriceLists().getDefaultPricelist();
+		DefaultProduct product = cat.getProducts()[0];
+		DefaultPriceList priceList = cat.getPriceLists().getDefaultPricelist();
 
 
 		CaseResult cr0 = new CaseResult(
@@ -260,7 +260,7 @@ public class TestCasePhase {
 	}
 
 
-	protected void assertionNull(CaseResult cr, String productName, ProductCategory productCategory, BillingPeriod bp, String priceListName, PhaseType phaseType, Catalog cat){
+	protected void assertionNull(CaseResult cr, String productName, ProductCategory productCategory, BillingPeriod bp, String priceListName, PhaseType phaseType, StandaloneCatalog cat){
 		try {
 			Assert.assertNull(cr.getResult(new PlanPhaseSpecifier(productName, productCategory, bp, priceListName, phaseType), cat));
 		} catch (CatalogApiException e) {
@@ -268,7 +268,7 @@ public class TestCasePhase {
 		}
 	}
 
-	protected void assertion(Result result, CaseResult cr, String productName, ProductCategory productCategory, BillingPeriod bp, String priceListName, PhaseType phaseType, Catalog cat){
+	protected void assertion(Result result, CaseResult cr, String productName, ProductCategory productCategory, BillingPeriod bp, String priceListName, PhaseType phaseType, StandaloneCatalog cat){
 		try {
 			Assert.assertEquals(result, cr.getResult(new PlanPhaseSpecifier(productName, productCategory, bp, priceListName, phaseType), cat));
 		} catch (CatalogApiException e) {
diff --git a/catalog/src/test/java/com/ning/billing/catalog/rules/TestPlanRules.java b/catalog/src/test/java/com/ning/billing/catalog/rules/TestPlanRules.java
index 38f0f60..1d744e0 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/rules/TestPlanRules.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/rules/TestPlanRules.java
@@ -23,12 +23,12 @@ import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
 import com.ning.billing.catalog.MockCatalog;
-import com.ning.billing.catalog.PriceList;
-import com.ning.billing.catalog.Product;
+import com.ning.billing.catalog.DefaultPriceList;
+import com.ning.billing.catalog.DefaultProduct;
 import com.ning.billing.catalog.api.ActionPolicy;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.catalog.api.IllegalPlanChange;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.PlanAlignmentChange;
@@ -45,7 +45,7 @@ public class TestPlanRules {
 	public void setup() {
 		cat = new MockCatalog();
 
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[0];
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[0];
 
 		CaseChangePlanPolicy casePolicy = new CaseChangePlanPolicy().setPolicy(ActionPolicy.END_OF_TERM);
 		CaseChangePlanAlignment caseAlignment = new CaseChangePlanAlignment().setAlignment(PlanAlignmentChange.START_OF_SUBSCRIPTION);
@@ -59,8 +59,8 @@ public class TestPlanRules {
 
 	@Test
 	public void testCannotChangeToSamePlan() {
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 		
 		PlanPhaseSpecifier from = new PlanPhaseSpecifier(product1.getName(), product1.getCategory(), BillingPeriod.MONTHLY, priceList1.getName(), PhaseType.EVERGREEN);
 		PlanSpecifier to = new PlanSpecifier(product1.getName(), product1.getCategory(), BillingPeriod.MONTHLY, priceList1.getName());
@@ -78,8 +78,8 @@ public class TestPlanRules {
 	
 	@Test
 	public void testExistingPriceListIsKept() {
-		Product product1 = cat.getProducts()[0];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
 		
 		PlanPhaseSpecifier from = new PlanPhaseSpecifier(product1.getName(), product1.getCategory(), BillingPeriod.MONTHLY, priceList1.getName(), PhaseType.EVERGREEN);
 		PlanSpecifier to = new PlanSpecifier(product1.getName(), product1.getCategory(), BillingPeriod.ANNUAL, priceList1.getName());
@@ -103,10 +103,10 @@ public class TestPlanRules {
 	
 	@Test
 	public void testBaseCase() {
-		Product product1 = cat.getProducts()[0];
-		Product product2 = cat.getProducts()[1];
-		PriceList priceList1 = cat.getPriceListFromName(IPriceListSet.DEFAULT_PRICELIST_NAME);
-		PriceList priceList2 = cat.getPriceLists().getChildPriceLists()[0];
+		DefaultProduct product1 = cat.getProducts()[0];
+		DefaultProduct product2 = cat.getProducts()[1];
+		DefaultPriceList priceList1 = cat.getPriceListFromName(PriceListSet.DEFAULT_PRICELIST_NAME);
+		DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[0];
 		
 		PlanPhaseSpecifier from = new PlanPhaseSpecifier(product1.getName(), product1.getCategory(), BillingPeriod.MONTHLY, priceList1.getName(), PhaseType.EVERGREEN);
 		PlanSpecifier to = new PlanSpecifier(product2.getName(), product2.getCategory(), BillingPeriod.MONTHLY, null);
diff --git a/catalog/src/test/java/com/ning/billing/catalog/TestCatlogService.java b/catalog/src/test/java/com/ning/billing/catalog/TestCatlogService.java
index 050ff6c..33a758a 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/TestCatlogService.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/TestCatlogService.java
@@ -19,9 +19,9 @@ package com.ning.billing.catalog;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import com.ning.billing.catalog.api.ICatalog;
+import com.ning.billing.catalog.api.Catalog;
 import com.ning.billing.catalog.io.VersionedCatalogLoader;
-import com.ning.billing.config.ICatalogConfig;
+import com.ning.billing.config.CatalogConfig;
 import com.ning.billing.lifecycle.KillbillService.ServiceException;
 import com.ning.billing.util.clock.DefaultClock;
 
@@ -29,7 +29,7 @@ public class TestCatlogService {
 
 	@Test
 	public void testCatalogServiceDirectory() throws ServiceException {
-		CatalogService service = new CatalogService(new ICatalogConfig() {
+		DefaultCatalogService service = new DefaultCatalogService(new CatalogConfig() {
 			@Override
 			public String getCatalogURI() {
 				return "file:src/test/resources/versionedCatalog";
@@ -43,7 +43,7 @@ public class TestCatlogService {
 	
 	@Test
 	public void testCatalogServiceFile() throws ServiceException {
-		CatalogService service = new CatalogService(new ICatalogConfig() {
+		DefaultCatalogService service = new DefaultCatalogService(new CatalogConfig() {
 			@Override
 			public String getCatalogURI() {
 				return "file:src/test/resources/WeaponsHire.xml";
diff --git a/catalog/src/test/java/com/ning/billing/catalog/TestInternationalPrice.java b/catalog/src/test/java/com/ning/billing/catalog/TestInternationalPrice.java
index 535da6f..93991e1 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/TestInternationalPrice.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/TestInternationalPrice.java
@@ -34,18 +34,18 @@ public class TestInternationalPrice {
 	
   @Test
   public void testZeroValue() throws URISyntaxException, CatalogApiException {
-	  Catalog c = new MockCatalog();
+	  StandaloneCatalog c = new MockCatalog();
 	  c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN});
-	  InternationalPrice p0 =  new MockInternationalPrice();
+	  DefaultInternationalPrice p0 =  new MockInternationalPrice();
 	  p0.setPrices(null);
 	  p0.initialize(c, new URI("foo:bar"));
-	  InternationalPrice p1 =  new MockInternationalPrice();
-	  p1.setPrices(new Price[] {
-			  new Price().setCurrency(Currency.GBP).setValue(new BigDecimal(1)),
-			  new Price().setCurrency(Currency.EUR).setValue(new BigDecimal(1)),
-			  new Price().setCurrency(Currency.USD).setValue(new BigDecimal(1)),
-			  new Price().setCurrency(Currency.BRL).setValue(new BigDecimal(1)),
-			  new Price().setCurrency(Currency.MXN).setValue(new BigDecimal(1)),		  
+	  DefaultInternationalPrice p1 =  new MockInternationalPrice();
+	  p1.setPrices(new DefaultPrice[] {
+			  new DefaultPrice().setCurrency(Currency.GBP).setValue(new BigDecimal(1)),
+			  new DefaultPrice().setCurrency(Currency.EUR).setValue(new BigDecimal(1)),
+			  new DefaultPrice().setCurrency(Currency.USD).setValue(new BigDecimal(1)),
+			  new DefaultPrice().setCurrency(Currency.BRL).setValue(new BigDecimal(1)),
+			  new DefaultPrice().setCurrency(Currency.MXN).setValue(new BigDecimal(1)),		  
 	  });
 	  p1.initialize(c, new URI("foo:bar"));
 
@@ -65,7 +65,7 @@ public class TestInternationalPrice {
   
   @Test
   public void testPriceInitialization() throws URISyntaxException, CatalogApiException  {
-	  Catalog c = new MockCatalog();
+	  StandaloneCatalog c = new MockCatalog();
 	  c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN});
 	  c.initialize(c, new URI("foo://bar"));
 	  Assert.assertEquals(c.getPlans()[0].getFinalPhase().getRecurringPrice().getPrice(Currency.GBP), new BigDecimal(0));
@@ -73,16 +73,16 @@ public class TestInternationalPrice {
   
   @Test
   public void testNegativeValuePrices(){
-	  Catalog c = new MockCatalog();
+	  StandaloneCatalog c = new MockCatalog();
 	  c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN});
 	
-	  InternationalPrice p1 =  new MockInternationalPrice();
-	  p1.setPrices(new Price[] {
-			  new Price().setCurrency(Currency.GBP).setValue(new BigDecimal(-1)),
-			  new Price().setCurrency(Currency.EUR).setValue(new BigDecimal(-1)),
-			  new Price().setCurrency(Currency.USD).setValue(new BigDecimal(-1)),
-			  new Price().setCurrency(Currency.BRL).setValue(new BigDecimal(1)),
-			  new Price().setCurrency(Currency.MXN).setValue(new BigDecimal(1)),		  
+	  DefaultInternationalPrice p1 =  new MockInternationalPrice();
+	  p1.setPrices(new DefaultPrice[] {
+			  new DefaultPrice().setCurrency(Currency.GBP).setValue(new BigDecimal(-1)),
+			  new DefaultPrice().setCurrency(Currency.EUR).setValue(new BigDecimal(-1)),
+			  new DefaultPrice().setCurrency(Currency.USD).setValue(new BigDecimal(-1)),
+			  new DefaultPrice().setCurrency(Currency.BRL).setValue(new BigDecimal(1)),
+			  new DefaultPrice().setCurrency(Currency.MXN).setValue(new BigDecimal(1)),		  
 	  });
 	  
 	 ValidationErrors errors = p1.validate(c, new ValidationErrors());
@@ -91,9 +91,9 @@ public class TestInternationalPrice {
   }
   @Test
   public void testDateValidation(){
-	 Catalog c = new MockCatalog();
+	 StandaloneCatalog c = new MockCatalog();
 	 c.setSupportedCurrencies(new Currency[]{Currency.GBP, Currency.EUR, Currency.USD, Currency.BRL, Currency.MXN});
-	 InternationalPrice p1 =  new MockInternationalPrice();
+	 DefaultInternationalPrice p1 =  new MockInternationalPrice();
 	 p1.setEffectiveDateForExistingSubscriptons(new Date((new Date().getTime()) - (1000 * 60 * 60 * 24)));
 	 ValidationErrors errors = p1.validate(c, new ValidationErrors());
 	 Assert.assertEquals(errors.size(), 1);
diff --git a/catalog/src/test/java/com/ning/billing/catalog/TestPlanPhase.java b/catalog/src/test/java/com/ning/billing/catalog/TestPlanPhase.java
index beb3cb7..4f14b48 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/TestPlanPhase.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/TestPlanPhase.java
@@ -31,7 +31,7 @@ public class TestPlanPhase {
 	public void testValidation() {
 		log.info("Testing Plan Phase Validation");
 		
-		PlanPhase pp = new MockPlanPhase().setBillCycleDuration(BillingPeriod.MONTHLY).setReccuringPrice(null).setFixedPrice(new InternationalPrice());
+		DefaultPlanPhase pp = new MockPlanPhase().setBillCycleDuration(BillingPeriod.MONTHLY).setReccuringPrice(null).setFixedPrice(new DefaultInternationalPrice());
 		ValidationErrors errors = pp.validate(new MockCatalog(), new ValidationErrors());
 		errors.log(log);
 		Assert.assertEquals(errors.size(), 1);
diff --git a/catalog/src/test/java/com/ning/billing/catalog/TestPriceListSet.java b/catalog/src/test/java/com/ning/billing/catalog/TestPriceListSet.java
index 4aedb25..d1f231e 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/TestPriceListSet.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/TestPriceListSet.java
@@ -23,61 +23,61 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 
 public class TestPriceListSet {
 	@Test(enabled=true)
 	public void testOverriding() {
-		Product foo = new Product("Foo", ProductCategory.BASE);
-		Product bar = new Product("Bar", ProductCategory.BASE);
-		Plan[] defaultPlans = new Plan[]{ 
+		DefaultProduct foo = new DefaultProduct("Foo", ProductCategory.BASE);
+		DefaultProduct bar = new DefaultProduct("Bar", ProductCategory.BASE);
+		DefaultPlan[] defaultPlans = new DefaultPlan[]{ 
 				new MockPlan().setName("plan-foo-monthly").setProduct(foo).setFinalPhase(new MockPlanPhase().setBillCycleDuration(MONTHLY).setPhaseType(EVERGREEN)),
 				new MockPlan().setName("plan-bar-monthly").setProduct(bar).setFinalPhase(new MockPlanPhase().setBillCycleDuration(MONTHLY).setPhaseType(EVERGREEN)),
 				new MockPlan().setName("plan-foo-annual").setProduct(foo).setFinalPhase(new MockPlanPhase().setBillCycleDuration(ANNUAL).setPhaseType(EVERGREEN)),
 				new MockPlan().setName("plan-bar-annual").setProduct(bar).setFinalPhase(new MockPlanPhase().setBillCycleDuration(ANNUAL).setPhaseType(EVERGREEN))
 				};
-		Plan[] childPlans = new Plan[]{ 
+		DefaultPlan[] childPlans = new DefaultPlan[]{ 
 				new MockPlan().setName("plan-foo").setProduct(foo).setFinalPhase(new MockPlanPhase().setBillCycleDuration(ANNUAL).setPhaseType(DISCOUNT)),
 				new MockPlan().setName("plan-bar").setProduct(bar).setFinalPhase(new MockPlanPhase().setBillCycleDuration(ANNUAL).setPhaseType(DISCOUNT))
 				};
 		PriceListDefault defaultPriceList = new PriceListDefault(defaultPlans);
-		PriceList[] childPriceLists = new PriceList[] {
-				new PriceList(childPlans, "child")
+		DefaultPriceList[] childPriceLists = new DefaultPriceList[] {
+				new DefaultPriceList(childPlans, "child")
 		};
-		PriceListSet set = new PriceListSet(defaultPriceList, childPriceLists);
+		DefaultPriceListSet set = new DefaultPriceListSet(defaultPriceList, childPriceLists);
 		
-		Assert.assertEquals(set.getPlanListFrom(IPriceListSet.DEFAULT_PRICELIST_NAME, foo, BillingPeriod.ANNUAL).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
-		Assert.assertEquals(set.getPlanListFrom(IPriceListSet.DEFAULT_PRICELIST_NAME, foo, BillingPeriod.MONTHLY).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
+		Assert.assertEquals(set.getPlanListFrom(PriceListSet.DEFAULT_PRICELIST_NAME, foo, BillingPeriod.ANNUAL).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
+		Assert.assertEquals(set.getPlanListFrom(PriceListSet.DEFAULT_PRICELIST_NAME, foo, BillingPeriod.MONTHLY).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
 		Assert.assertEquals(set.getPlanListFrom("child", foo, BillingPeriod.ANNUAL).getFinalPhase().getPhaseType(), PhaseType.DISCOUNT);
 		Assert.assertEquals(set.getPlanListFrom("child", foo, BillingPeriod.MONTHLY).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
 	}
 	
 	public void testForNullBillingPeriod() {
-		Product foo = new Product("Foo", ProductCategory.BASE);
-		Product bar = new Product("Bar", ProductCategory.BASE);
-		Plan[] defaultPlans = new Plan[]{ 
+		DefaultProduct foo = new DefaultProduct("Foo", ProductCategory.BASE);
+		DefaultProduct bar = new DefaultProduct("Bar", ProductCategory.BASE);
+		DefaultPlan[] defaultPlans = new DefaultPlan[]{ 
 				new MockPlan().setName("plan-foo-monthly").setProduct(foo).setFinalPhase(new MockPlanPhase().setBillCycleDuration(MONTHLY).setPhaseType(EVERGREEN)),
 				new MockPlan().setName("plan-bar-monthly").setProduct(bar).setFinalPhase(new MockPlanPhase().setBillCycleDuration(MONTHLY).setPhaseType(EVERGREEN)),
 				new MockPlan().setName("plan-foo-annual").setProduct(foo).setFinalPhase(new MockPlanPhase().setBillCycleDuration(null).setPhaseType(EVERGREEN)),
 				new MockPlan().setName("plan-bar-annual").setProduct(bar).setFinalPhase(new MockPlanPhase().setBillCycleDuration(null).setPhaseType(EVERGREEN))
 				};
-		Plan[] childPlans = new Plan[]{ 
+		DefaultPlan[] childPlans = new DefaultPlan[]{ 
 				new MockPlan().setName("plan-foo").setProduct(foo).setFinalPhase(new MockPlanPhase().setBillCycleDuration(ANNUAL).setPhaseType(DISCOUNT)),
 				new MockPlan().setName("plan-bar").setProduct(bar).setFinalPhase(new MockPlanPhase().setBillCycleDuration(ANNUAL).setPhaseType(DISCOUNT))
 				};
 
 		PriceListDefault defaultPriceList = new PriceListDefault(defaultPlans);
-		PriceList[] childPriceLists = new PriceList[] {
-				new PriceList(childPlans, "child")
+		DefaultPriceList[] childPriceLists = new DefaultPriceList[] {
+				new DefaultPriceList(childPlans, "child")
 		};
-		PriceListSet set = new PriceListSet(defaultPriceList, childPriceLists);
+		DefaultPriceListSet set = new DefaultPriceListSet(defaultPriceList, childPriceLists);
 		
 		Assert.assertEquals(set.getPlanListFrom("child", foo, BillingPeriod.ANNUAL).getFinalPhase().getPhaseType(), PhaseType.DISCOUNT);
 		Assert.assertEquals(set.getPlanListFrom("child", foo, BillingPeriod.MONTHLY).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
-		Assert.assertEquals(set.getPlanListFrom(IPriceListSet.DEFAULT_PRICELIST_NAME, foo, BillingPeriod.ANNUAL).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
-		Assert.assertEquals(set.getPlanListFrom(IPriceListSet.DEFAULT_PRICELIST_NAME, foo, BillingPeriod.MONTHLY).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
+		Assert.assertEquals(set.getPlanListFrom(PriceListSet.DEFAULT_PRICELIST_NAME, foo, BillingPeriod.ANNUAL).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
+		Assert.assertEquals(set.getPlanListFrom(PriceListSet.DEFAULT_PRICELIST_NAME, foo, BillingPeriod.MONTHLY).getFinalPhase().getPhaseType(), PhaseType.EVERGREEN);
 	}
 
 }
diff --git a/catalog/src/test/java/com/ning/billing/catalog/TestVersionedCatalog.java b/catalog/src/test/java/com/ning/billing/catalog/TestVersionedCatalog.java
index e6f9ed2..08f6ebf 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/TestVersionedCatalog.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/TestVersionedCatalog.java
@@ -41,7 +41,7 @@ public class TestVersionedCatalog {
 	@Test(enabled=true)
 	public void testAddCatalog() throws MalformedURLException, IOException, SAXException, InvalidConfigException, JAXBException, TransformerException, URISyntaxException, ServiceException {
 		VersionedCatalog vc = loader.load(Resources.getResource("versionedCatalog").toString());
-		vc.add(new Catalog(new Date()));
+		vc.add(new StandaloneCatalog(new Date()));
 		assertEquals(5, vc.size());
 	}
 	
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/alignment/PlanAligner.java b/entitlement/src/main/java/com/ning/billing/entitlement/alignment/PlanAligner.java
index ce63e12..d9ab5b3 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/alignment/PlanAligner.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/alignment/PlanAligner.java
@@ -25,11 +25,11 @@ import org.joda.time.DateTime;
 import com.google.inject.Inject;
 import com.ning.billing.ErrorCode;
 import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.ICatalog;
-import com.ning.billing.catalog.api.ICatalogService;
-import com.ning.billing.catalog.api.IDuration;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
+import com.ning.billing.catalog.api.Catalog;
+import com.ning.billing.catalog.api.CatalogService;
+import com.ning.billing.catalog.api.Duration;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.PlanAlignmentChange;
 import com.ning.billing.catalog.api.PlanAlignmentCreate;
@@ -48,10 +48,10 @@ import com.ning.billing.util.clock.DefaultClock;
  */
 public class PlanAligner  {
 
-    private final ICatalogService catalogService;
+    private final CatalogService catalogService;
 
     @Inject
-    public PlanAligner(ICatalogService catalogService) {
+    public PlanAligner(CatalogService catalogService) {
         this.catalogService = catalogService;
     }
 
@@ -73,7 +73,7 @@ public class PlanAligner  {
      * @throws EntitlementUserApiException
      */
     public TimedPhase [] getCurrentAndNextTimedPhaseOnCreate(SubscriptionData subscription,
-            IPlan plan, PhaseType initialPhase, String priceList, DateTime effectiveDate)
+            Plan plan, PhaseType initialPhase, String priceList, DateTime effectiveDate)
         throws CatalogApiException, EntitlementUserApiException {
         List<TimedPhase> timedPhases = getTimedPhaseOnCreate(subscription, plan, initialPhase, priceList, effectiveDate);
         TimedPhase [] result = new TimedPhase[2];
@@ -95,7 +95,7 @@ public class PlanAligner  {
      * @throws EntitlementUserApiException
      */
     public TimedPhase getCurrentTimedPhaseOnChange(SubscriptionData subscription,
-            IPlan plan, String priceList, DateTime effectiveDate)
+            Plan plan, String priceList, DateTime effectiveDate)
         throws CatalogApiException, EntitlementUserApiException {
         return getTimedPhaseOnChange(subscription, plan, priceList, effectiveDate, WhichPhase.CURRENT);
     }
@@ -112,7 +112,7 @@ public class PlanAligner  {
      * @throws EntitlementUserApiException
      */
     public TimedPhase getNextTimedPhaseOnChange(SubscriptionData subscription,
-            IPlan plan, String priceList, DateTime effectiveDate)
+            Plan plan, String priceList, DateTime effectiveDate)
         throws CatalogApiException, EntitlementUserApiException {
         return getTimedPhaseOnChange(subscription, plan, priceList, effectiveDate, WhichPhase.NEXT);
     }
@@ -127,7 +127,7 @@ public class PlanAligner  {
      * @return
      * @throws EntitlementError
      */
-    public TimedPhase getNextTimedPhase(IPlan plan, PhaseType initialPhase, DateTime effectiveDate, DateTime initialStartPhase)
+    public TimedPhase getNextTimedPhase(Plan plan, PhaseType initialPhase, DateTime effectiveDate, DateTime initialStartPhase)
         throws EntitlementError {
         try {
             List<TimedPhase> timedPhases = getPhaseAlignments(plan, initialPhase, initialStartPhase);
@@ -138,10 +138,10 @@ public class PlanAligner  {
     }
 
     private List<TimedPhase> getTimedPhaseOnCreate(SubscriptionData subscription,
-            IPlan plan, PhaseType initialPhase, String priceList, DateTime effectiveDate)
+            Plan plan, PhaseType initialPhase, String priceList, DateTime effectiveDate)
         throws CatalogApiException, EntitlementUserApiException  {
 
-        ICatalog catalog = catalogService.getCatalog();
+        Catalog catalog = catalogService.getCatalog();
 
         PlanSpecifier planSpecifier = new PlanSpecifier(plan.getProduct().getName(),
                 plan.getProduct().getCategory(),
@@ -166,13 +166,13 @@ public class PlanAligner  {
     }
 
     private TimedPhase getTimedPhaseOnChange(SubscriptionData subscription,
-            IPlan plan, String priceList, DateTime effectiveDate, WhichPhase which)
+            Plan plan, String priceList, DateTime effectiveDate, WhichPhase which)
         throws CatalogApiException, EntitlementUserApiException {
 
-        ICatalog catalog = catalogService.getCatalog();
+        Catalog catalog = catalogService.getCatalog();
 
-        IPlanPhase currentPhase = subscription.getCurrentPhase();
-        IPlan currentPlan = subscription.getCurrentPlan();
+        PlanPhase currentPhase = subscription.getCurrentPhase();
+        Plan currentPlan = subscription.getCurrentPlan();
         String currentPriceList = subscription.getCurrentPriceList();
 
         PlanPhaseSpecifier fromPlanPhaseSpecifier = new PlanPhaseSpecifier(currentPlan.getProduct().getName(),
@@ -209,7 +209,7 @@ public class PlanAligner  {
     }
 
 
-    private List<TimedPhase> getPhaseAlignments(IPlan plan, PhaseType initialPhase, DateTime initialPhaseStartDate)
+    private List<TimedPhase> getPhaseAlignments(Plan plan, PhaseType initialPhase, DateTime initialPhaseStartDate)
         throws EntitlementUserApiException {
         if (plan == null) {
             return Collections.emptyList();
@@ -218,7 +218,7 @@ public class PlanAligner  {
         List<TimedPhase> result = new LinkedList<TimedPhase>();
         DateTime curPhaseStart = (initialPhase == null) ? initialPhaseStartDate : null;
         DateTime nextPhaseStart = null;
-        for (IPlanPhase cur : plan.getAllPhases()) {
+        for (PlanPhase cur : plan.getAllPhases()) {
             if (curPhaseStart == null) {
                 if (initialPhase != cur.getPhaseType()) {
                     continue;
@@ -229,7 +229,7 @@ public class PlanAligner  {
             result.add(new TimedPhase(cur, curPhaseStart));
 
             if (cur.getPhaseType() != PhaseType.EVERGREEN) {
-                IDuration curPhaseDuration = cur.getDuration();
+                Duration curPhaseDuration = cur.getDuration();
                 nextPhaseStart = DefaultClock.addDuration(curPhaseStart, curPhaseDuration);
                 if (nextPhaseStart == null) {
                     throw new EntitlementError(String.format("Unexpected non ending UNLIMITED phase for plan %s",
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/alignment/TimedPhase.java b/entitlement/src/main/java/com/ning/billing/entitlement/alignment/TimedPhase.java
index 3b113cb..08f1427 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/alignment/TimedPhase.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/alignment/TimedPhase.java
@@ -18,21 +18,21 @@ package com.ning.billing.entitlement.alignment;
 
 import org.joda.time.DateTime;
 
-import com.ning.billing.catalog.api.IPlanPhase;
+import com.ning.billing.catalog.api.PlanPhase;
 
 
 public final class TimedPhase {
 
-    private final IPlanPhase phase;
+    private final PlanPhase phase;
     private final DateTime startPhase;
 
-    public TimedPhase(IPlanPhase phase, DateTime startPhase) {
+    public TimedPhase(PlanPhase phase, DateTime startPhase) {
         super();
         this.phase = phase;
         this.startPhase = startPhase;
     }
 
-    public IPlanPhase getPhase() {
+    public PlanPhase getPhase() {
         return phase;
     }
 
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
index 4d3e115..d79d514 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
@@ -26,10 +26,10 @@ import com.ning.billing.ErrorCode;
 import com.ning.billing.account.api.IAccount;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.ICatalogService;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.CatalogService;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.entitlement.alignment.PlanAligner;
 import com.ning.billing.entitlement.api.user.Subscription;
@@ -45,11 +45,11 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
 
     private final Clock clock;
     private final EntitlementDao dao;
-    private final ICatalogService catalogService;
+    private final CatalogService catalogService;
     private final SubscriptionApiService apiService;
 
     @Inject
-    public DefaultEntitlementUserApi(Clock clock, EntitlementDao dao, ICatalogService catalogService, SubscriptionApiService apiService) {
+    public DefaultEntitlementUserApi(Clock clock, EntitlementDao dao, CatalogService catalogService, SubscriptionApiService apiService) {
         super();
         this.clock = clock;
         this.apiService = apiService;
@@ -95,7 +95,7 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
             BillingPeriod term, String priceList, PhaseType initialPhase, DateTime requestedDate) throws EntitlementUserApiException {
 
         try {
-            String realPriceList = (priceList == null) ? IPriceListSet.DEFAULT_PRICELIST_NAME : priceList;
+            String realPriceList = (priceList == null) ? PriceListSet.DEFAULT_PRICELIST_NAME : priceList;
             DateTime now = clock.getUTCNow();
             requestedDate = (requestedDate != null) ? DefaultClock.truncateMs(requestedDate) : now;
             if (requestedDate != null && requestedDate.isAfter(now)) {
@@ -104,10 +104,10 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
             requestedDate = (requestedDate == null) ? now : requestedDate;
             DateTime effectiveDate = requestedDate;
 
-            IPlan plan = catalogService.getCatalog().findPlan(productName, term, realPriceList);
+            Plan plan = catalogService.getCatalog().findPlan(productName, term, realPriceList);
 
 
-            IPlanPhase phase = (plan.getInitialPhases() != null) ? plan.getInitialPhases()[0] : plan.getFinalPhase();
+            PlanPhase phase = (plan.getInitialPhases() != null) ? plan.getInitialPhases()[0] : plan.getFinalPhase();
             if (phase == null) {
                 throw new EntitlementError(String.format("No initial PlanPhase for Product %s, term %s and set %s does not exist in the catalog",
                         productName, term.toString(), realPriceList));
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionApiService.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionApiService.java
index 4247798..1561aec 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionApiService.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionApiService.java
@@ -27,11 +27,11 @@ import com.ning.billing.ErrorCode;
 import com.ning.billing.catalog.api.ActionPolicy;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.ICatalogService;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IPriceList;
-import com.ning.billing.catalog.api.IProduct;
+import com.ning.billing.catalog.api.CatalogService;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.PriceList;
+import com.ning.billing.catalog.api.Product;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.PlanChangeResult;
 import com.ning.billing.catalog.api.PlanPhaseSpecifier;
@@ -56,11 +56,11 @@ public class SubscriptionApiService {
 
     private final Clock clock;
     private final EntitlementDao dao;
-    private final ICatalogService catalogService;
+    private final CatalogService catalogService;
     private final PlanAligner planAligner;
 
     @Inject
-    public SubscriptionApiService(Clock clock, EntitlementDao dao, ICatalogService catalogService, PlanAligner planAligner) {
+    public SubscriptionApiService(Clock clock, EntitlementDao dao, CatalogService catalogService, PlanAligner planAligner) {
         this.clock = clock;
         this.catalogService = catalogService;
         this.planAligner = planAligner;
@@ -69,7 +69,7 @@ public class SubscriptionApiService {
 
 
 
-    public SubscriptionData createBasePlan(SubscriptionBuilder builder, IPlan plan, PhaseType initialPhase,
+    public SubscriptionData createBasePlan(SubscriptionBuilder builder, Plan plan, PhaseType initialPhase,
             String realPriceList, DateTime requestedDate, DateTime effectiveDate, DateTime processedDate)
         throws EntitlementUserApiException {
 
@@ -117,7 +117,7 @@ public class SubscriptionApiService {
                 throw new EntitlementUserApiException(ErrorCode.ENT_INVALID_REQUESTED_DATE, requestedDate.toString());
             }
 
-            IPlan currentPlan = subscription.getCurrentPlan();
+            Plan currentPlan = subscription.getCurrentPlan();
             PlanPhaseSpecifier planPhase = new PlanPhaseSpecifier(currentPlan.getProduct().getName(),
                     currentPlan.getProduct().getCategory(),
                     subscription.getCurrentPlan().getBillingPeriod(),
@@ -192,8 +192,8 @@ public class SubscriptionApiService {
         PlanChangeResult planChangeResult = null;
         try {
 
-            IProduct destProduct = catalogService.getCatalog().findProduct(productName);
-            IPlan currentPlan = subscription.getCurrentPlan();
+            Product destProduct = catalogService.getCatalog().findProduct(productName);
+            Plan currentPlan = subscription.getCurrentPlan();
             PlanPhaseSpecifier fromPlanPhase = new PlanPhaseSpecifier(currentPlan.getProduct().getName(),
                     currentPlan.getProduct().getCategory(),
                     currentPlan.getBillingPeriod(),
@@ -209,9 +209,9 @@ public class SubscriptionApiService {
         }
 
         ActionPolicy policy = planChangeResult.getPolicy();
-        IPriceList newPriceList = planChangeResult.getNewPriceList();
+        PriceList newPriceList = planChangeResult.getNewPriceList();
 
-        IPlan newPlan = catalogService.getCatalog().findPlan(productName, term, newPriceList.getName());
+        Plan newPlan = catalogService.getCatalog().findPlan(productName, term, newPriceList.getName());
         DateTime effectiveDate = subscription.getPlanChangeEffectiveDate(policy, now);
 
         TimedPhase currentTimedPhase = planAligner.getCurrentTimedPhaseOnChange(subscription, newPlan, newPriceList.getName(), effectiveDate);
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
index 34bf8db..8ff5e40 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
@@ -32,9 +32,9 @@ import com.ning.billing.ErrorCode;
 import com.ning.billing.catalog.api.ActionPolicy;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.ICatalog;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
+import com.ning.billing.catalog.api.Catalog;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.api.user.SubscriptionFactory.SubscriptionBuilder;
 import com.ning.billing.entitlement.events.EntitlementEvent;
@@ -116,13 +116,13 @@ public class SubscriptionData implements Subscription {
     }
 
     @Override
-    public IPlanPhase getCurrentPhase() {
+    public PlanPhase getCurrentPhase() {
         return (transitions == null) ? null : getLatestTranstion().getNextPhase();
     }
 
 
     @Override
-    public IPlan getCurrentPlan() {
+    public Plan getCurrentPlan() {
         return (transitions == null) ? null : getLatestTranstion().getNextPlan();
     }
 
@@ -221,7 +221,7 @@ public class SubscriptionData implements Subscription {
         return getInitialTransitionForCurrentPlan().getEffectiveTransitionTime();
     }
 
-    public IPlanPhase getInitialPhaseOnCurrentPlan() {
+    public PlanPhase getInitialPhaseOnCurrentPlan() {
         return getInitialTransitionForCurrentPlan().getNextPhase();
     }
 
@@ -318,7 +318,7 @@ public class SubscriptionData implements Subscription {
         return transitions.get(0).getEffectiveTransitionTime();
     }
 
-    public void rebuildTransitions(final List<EntitlementEvent> events, final ICatalog catalog) {
+    public void rebuildTransitions(final List<EntitlementEvent> events, final Catalog catalog) {
 
         if (events == null) {
             return;
@@ -389,10 +389,10 @@ public class SubscriptionData implements Subscription {
                         cur.getType()));
             }
 
-            IPlan previousPlan = null;
-            IPlanPhase previousPhase = null;
-            IPlan nextPlan = null;
-            IPlanPhase nextPhase = null;
+            Plan previousPlan = null;
+            PlanPhase previousPhase = null;
+            Plan nextPlan = null;
+            PlanPhase nextPhase = null;
             try {
                 previousPlan = (previousPlanName != null) ? catalog.findPlan(previousPlanName) : null;
                 previousPhase = (previousPhaseName != null) ? catalog.findPhase(previousPhaseName) : null;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionFactory.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionFactory.java
index 10fde13..48008bf 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionFactory.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionFactory.java
@@ -23,7 +23,7 @@ import java.util.UUID;
 import org.joda.time.DateTime;
 
 import com.google.inject.Inject;
-import com.ning.billing.catalog.api.ICatalogService;
+import com.ning.billing.catalog.api.CatalogService;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.events.EntitlementEvent;
 import com.ning.billing.entitlement.exceptions.EntitlementError;
@@ -33,10 +33,10 @@ public class SubscriptionFactory {
 
     private final SubscriptionApiService apiService;
     private final Clock clock;
-    private final ICatalogService catalogService;
+    private final CatalogService catalogService;
 
     @Inject
-    public SubscriptionFactory(SubscriptionApiService apiService, Clock clock, ICatalogService catalogService) {
+    public SubscriptionFactory(SubscriptionApiService apiService, Clock clock, CatalogService catalogService) {
         this.apiService = apiService;
         this.clock = clock;
         this.catalogService = catalogService;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionData.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionData.java
index 34caf70..08cedf7 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionData.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionData.java
@@ -20,8 +20,8 @@ import java.util.UUID;
 
 import org.joda.time.DateTime;
 
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.entitlement.api.user.Subscription.SubscriptionState;
 import com.ning.billing.entitlement.events.EntitlementEvent.EventType;
 import com.ning.billing.entitlement.events.user.ApiEventType;
@@ -39,17 +39,17 @@ public class SubscriptionTransitionData implements SubscriptionTransition {
     private final DateTime effectiveTransitionTime;
     private final SubscriptionState previousState;
     private final String previousPriceList;
-    private final IPlan previousPlan;
-    private final IPlanPhase previousPhase;
+    private final Plan previousPlan;
+    private final PlanPhase previousPhase;
     private final SubscriptionState nextState;
     private final String nextPriceList;
-    private final IPlan nextPlan;
-    private final IPlanPhase nextPhase;
+    private final Plan nextPlan;
+    private final PlanPhase nextPhase;
 
     public SubscriptionTransitionData(UUID eventId, UUID subscriptionId, UUID bundleId, EventType eventType,
             ApiEventType apiEventType, DateTime requestedTransitionTime, DateTime effectiveTransitionTime,
-            SubscriptionState previousState, IPlan previousPlan, IPlanPhase previousPhase, String previousPriceList,
-            SubscriptionState nextState, IPlan nextPlan, IPlanPhase nextPhase, String nextPriceList) {
+            SubscriptionState previousState, Plan previousPlan, PlanPhase previousPhase, String previousPriceList,
+            SubscriptionState nextState, Plan nextPlan, PlanPhase nextPhase, String nextPriceList) {
         super();
         this.eventId = eventId;
         this.subscriptionId = subscriptionId;
@@ -90,22 +90,22 @@ public class SubscriptionTransitionData implements SubscriptionTransition {
     }
 
     @Override
-    public IPlan getPreviousPlan() {
+    public Plan getPreviousPlan() {
         return previousPlan;
     }
 
     @Override
-    public IPlanPhase getPreviousPhase() {
+    public PlanPhase getPreviousPhase() {
         return previousPhase;
     }
 
     @Override
-    public IPlan getNextPlan() {
+    public Plan getNextPlan() {
         return nextPlan;
     }
 
     @Override
-    public IPlanPhase getNextPhase() {
+    public PlanPhase getNextPhase() {
         return nextPhase;
     }
 
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBase.java b/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBase.java
index d2a8f61..d7a578c 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBase.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/events/EventBase.java
@@ -20,7 +20,7 @@ import java.util.UUID;
 
 import org.joda.time.DateTime;
 
-import com.ning.billing.catalog.api.IPlan;
+import com.ning.billing.catalog.api.Plan;
 import com.ning.billing.entitlement.events.EventLifecycle.EventLifecycleState;
 import com.ning.billing.entitlement.events.user.ApiEvent;
 import com.ning.billing.entitlement.exceptions.EntitlementError;
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
index b975b26..644e699 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
@@ -18,7 +18,7 @@ package com.ning.billing.entitlement.api.user;
 
 import com.google.inject.Injector;
 import com.ning.billing.account.api.IAccount;
-import com.ning.billing.catalog.CatalogService;
+import com.ning.billing.catalog.DefaultCatalogService;
 import com.ning.billing.catalog.api.*;
 import com.ning.billing.config.EntitlementConfig;
 import com.ning.billing.entitlement.api.ApiTestListener;
@@ -64,14 +64,14 @@ public abstract class TestUserApiBase {
     protected EntitlementService entitlementService;
     protected EntitlementUserApi entitlementApi;
     protected EntitlementBillingApi billingApi;
-    protected ICatalogService catalogService;
+    protected CatalogService catalogService;
     protected EntitlementConfig config;
     protected EntitlementDao dao;
     protected ClockMock clock;
     protected EventBusService busService;
 
     protected IAccount account;
-    protected ICatalog catalog;
+    protected Catalog catalog;
     protected ApiTestListener testListener;
     protected SubscriptionBundle bundle;
 
@@ -105,14 +105,14 @@ public abstract class TestUserApiBase {
         final Injector g = getInjector();
 
         entitlementService = g.getInstance(EntitlementService.class);
-        catalogService = g.getInstance(ICatalogService.class);
+        catalogService = g.getInstance(CatalogService.class);
         busService = g.getInstance(EventBusService.class);
         config = g.getInstance(EntitlementConfig.class);
         dao = g.getInstance(EntitlementDao.class);
         clock = (ClockMock) g.getInstance(Clock.class);
         try {
 
-            ((CatalogService) catalogService).loadCatalog();
+            ((DefaultCatalogService) catalogService).loadCatalog();
             ((DefaultEventBusService) busService).startBus();
             ((Engine) entitlementService).initialize();
             init();
@@ -231,8 +231,8 @@ public abstract class TestUserApiBase {
         assertTrue(in.isEqual(upper) || in.isBefore(upper));
     }
 
-    protected IDuration getDurationDay(final int days) {
-        IDuration result = new IDuration() {
+    protected Duration getDurationDay(final int days) {
+        Duration result = new Duration() {
             @Override
             public TimeUnit getUnit() {
                 return TimeUnit.DAYS;
@@ -245,8 +245,8 @@ public abstract class TestUserApiBase {
         return result;
     }
 
-    protected IDuration getDurationMonth(final int months) {
-        IDuration result = new IDuration() {
+    protected Duration getDurationMonth(final int months) {
+        Duration result = new Duration() {
             @Override
             public TimeUnit getUnit() {
                 return TimeUnit.MONTHS;
@@ -260,8 +260,8 @@ public abstract class TestUserApiBase {
     }
 
 
-    protected IDuration getDurationYear(final int years) {
-        IDuration result = new IDuration() {
+    protected Duration getDurationYear(final int years) {
+        Duration result = new Duration() {
             @Override
             public TimeUnit getUnit() {
                 return TimeUnit.YEARS;
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
index c1c025d..09a70f2 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
@@ -27,10 +27,10 @@ import org.joda.time.DateTime;
 import org.testng.Assert;
 
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IDuration;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.Duration;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
 import com.ning.billing.util.clock.DefaultClock;
@@ -47,15 +47,15 @@ public abstract class TestUserApiCancel extends TestUserApiBase {
 
             String prod = "Shotgun";
             BillingPeriod term = BillingPeriod.MONTHLY;
-            String planSet = IPriceListSet.DEFAULT_PRICELIST_NAME;
+            String planSet = PriceListSet.DEFAULT_PRICELIST_NAME;
 
             // CREATE
             SubscriptionData subscription = createSubscription(prod, term, planSet);
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertEquals(currentPhase.getPhaseType(), PhaseType.TRIAL);
 
             // ADVANCE TIME still in trial
-            IDuration moveALittleInTime = getDurationDay(3);
+            Duration moveALittleInTime = getDurationDay(3);
             clock.setDeltaFromReality(moveALittleInTime, 0);
 
             DateTime future = clock.getUTCNow();
@@ -86,11 +86,11 @@ public abstract class TestUserApiCancel extends TestUserApiBase {
 
             String prod = "Shotgun";
             BillingPeriod term = BillingPeriod.MONTHLY;
-            String planSet = IPriceListSet.DEFAULT_PRICELIST_NAME;
+            String planSet = PriceListSet.DEFAULT_PRICELIST_NAME;
 
             // CREATE
             SubscriptionData subscription = createSubscription(prod, term, planSet);
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL);
 
             // NEXT PHASE
@@ -105,7 +105,7 @@ public abstract class TestUserApiCancel extends TestUserApiBase {
             assertEquals(trialPhase.getPhaseType(), PhaseType.EVERGREEN);
 
             // SET CTD + RE READ SUBSCRIPTION + CHANGE PLAN
-            IDuration ctd = getDurationMonth(1);
+            Duration ctd = getDurationMonth(1);
             DateTime newChargedThroughDate = DefaultClock.addDuration(expectedPhaseTrialChange, ctd);
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate);
             subscription = (SubscriptionData) entitlementApi.getSubscriptionFromId(subscription.getId());
@@ -121,7 +121,7 @@ public abstract class TestUserApiCancel extends TestUserApiBase {
             DateTime future = clock.getUTCNow();
             assertTrue(testListener.isCompleted(2000));
 
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertNull(currentPhase);
             checkNextPhaseChange(subscription, 0, null);
 
@@ -139,11 +139,11 @@ public abstract class TestUserApiCancel extends TestUserApiBase {
 
             String prod = "Shotgun";
             BillingPeriod term = BillingPeriod.MONTHLY;
-            String planSet = IPriceListSet.DEFAULT_PRICELIST_NAME;
+            String planSet = PriceListSet.DEFAULT_PRICELIST_NAME;
 
             // CREATE
             SubscriptionData subscription = createSubscription(prod, term, planSet);
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL);
 
             // NEXT PHASE
@@ -163,7 +163,7 @@ public abstract class TestUserApiCancel extends TestUserApiBase {
             subscription.cancel(clock.getUTCNow(), false);
             assertTrue(testListener.isCompleted(2000));
 
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertNull(currentPhase);
             checkNextPhaseChange(subscription, 0, null);
 
@@ -183,11 +183,11 @@ public abstract class TestUserApiCancel extends TestUserApiBase {
 
             String prod = "Shotgun";
             BillingPeriod term = BillingPeriod.MONTHLY;
-            String planSet = IPriceListSet.DEFAULT_PRICELIST_NAME;
+            String planSet = PriceListSet.DEFAULT_PRICELIST_NAME;
 
             // CREATE
             SubscriptionData subscription = createSubscription(prod, term, planSet);
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL);
 
             // NEXT PHASE
@@ -198,11 +198,11 @@ public abstract class TestUserApiCancel extends TestUserApiBase {
             testListener.pushExpectedEvent(NextEvent.PHASE);
             clock.setDeltaFromReality(trialPhase.getDuration(), DAY_IN_MS);
             assertTrue(testListener.isCompleted(2000));
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertEquals(currentPhase.getPhaseType(), PhaseType.EVERGREEN);
 
             // SET CTD + RE READ SUBSCRIPTION + CHANGE PLAN
-            IDuration ctd = getDurationMonth(1);
+            Duration ctd = getDurationMonth(1);
             DateTime newChargedThroughDate = DefaultClock.addDuration(expectedPhaseTrialChange, ctd);
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate);
             subscription = (SubscriptionData) entitlementApi.getSubscriptionFromId(subscription.getId());
@@ -220,7 +220,7 @@ public abstract class TestUserApiCancel extends TestUserApiBase {
             DateTime future = clock.getUTCNow();
             assertFalse(testListener.isCompleted(2000));
 
-            IPlan currentPlan = subscription.getCurrentPlan();
+            Plan currentPlan = subscription.getCurrentPlan();
             assertEquals(currentPlan.getProduct().getName(), prod);
             currentPhase = subscription.getCurrentPhase();
             assertEquals(currentPhase.getPhaseType(), PhaseType.EVERGREEN);
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlan.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlan.java
index 4f4d454..14a46aa 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlan.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiChangePlan.java
@@ -28,10 +28,10 @@ import org.joda.time.DateTime;
 import org.testng.Assert;
 
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IDuration;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.Duration;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
@@ -46,13 +46,13 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
     private void checkChangePlan(SubscriptionData subscription, String expProduct, ProductCategory expCategory,
             BillingPeriod expBillingPeriod, PhaseType expPhase) {
 
-        IPlan currentPlan = subscription.getCurrentPlan();
+        Plan currentPlan = subscription.getCurrentPlan();
         assertNotNull(currentPlan);
         assertEquals(currentPlan.getProduct().getName(),expProduct);
         assertEquals(currentPlan.getProduct().getCategory(), expCategory);
         assertEquals(currentPlan.getBillingPeriod(), expBillingPeriod);
 
-        IPlanPhase currentPhase = subscription.getCurrentPhase();
+        PlanPhase currentPhase = subscription.getCurrentPhase();
         assertNotNull(currentPhase);
         assertEquals(currentPhase.getPhaseType(), expPhase);
     }
@@ -60,7 +60,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
 
 
     protected void testChangePlanBundleAlignEOTWithNoChargeThroughDateReal() {
-        tChangePlanBundleAlignEOTWithNoChargeThroughDate("Shotgun", BillingPeriod.MONTHLY, IPriceListSet.DEFAULT_PRICELIST_NAME, "Pistol", BillingPeriod.MONTHLY, IPriceListSet.DEFAULT_PRICELIST_NAME);
+        tChangePlanBundleAlignEOTWithNoChargeThroughDate("Shotgun", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, "Pistol", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME);
     }
 
 
@@ -75,7 +75,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
             SubscriptionData subscription = createSubscription(fromProd, fromTerm, fromPlanSet);
 
             // MOVE TO NEXT PHASE
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             testListener.pushExpectedEvent(NextEvent.PHASE);
             clock.setDeltaFromReality(currentPhase.getDuration(), DAY_IN_MS);
             DateTime futureNow = clock.getUTCNow();
@@ -110,7 +110,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
 
             // CREATE
             SubscriptionData subscription = createSubscription(fromProd, fromTerm, fromPlanSet);
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             DateTime expectedPhaseTrialChange = DefaultClock.addDuration(subscription.getStartDate(), trialPhase.getDuration());
             assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL);
 
@@ -119,12 +119,12 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
             testListener.pushExpectedEvent(NextEvent.PHASE);
             clock.setDeltaFromReality(trialPhase.getDuration(), DAY_IN_MS);
             assertTrue(testListener.isCompleted(2000));
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertEquals(currentPhase.getPhaseType(), PhaseType.DISCOUNT);
 
 
             // SET CTD
-            IDuration ctd = getDurationMonth(1);
+            Duration ctd = getDurationMonth(1);
             DateTime newChargedThroughDate = DefaultClock.addDuration(expectedPhaseTrialChange, ctd);
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate);
 
@@ -164,7 +164,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
 
 
     protected void testChangePlanBundleAlignIMMReal() {
-        tChangePlanBundleAlignIMM("Shotgun", BillingPeriod.MONTHLY, IPriceListSet.DEFAULT_PRICELIST_NAME, "Assault-Rifle", BillingPeriod.MONTHLY, IPriceListSet.DEFAULT_PRICELIST_NAME);
+        tChangePlanBundleAlignIMM("Shotgun", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, "Assault-Rifle", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME);
     }
 
 
@@ -179,7 +179,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
 
             testListener.pushExpectedEvent(NextEvent.CHANGE);
 
-            IDuration moveALittleInTime = getDurationDay(3);
+            Duration moveALittleInTime = getDurationDay(3);
             clock.setDeltaFromReality(moveALittleInTime, 0);
 
             // CHANGE PLAN IMM
@@ -188,7 +188,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
 
             assertTrue(testListener.isCompleted(2000));
 
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             DateTime nextExpectedPhaseChange = DefaultClock.addDuration(subscription.getStartDate(), currentPhase.getDuration());
             checkNextPhaseChange(subscription, 1, nextExpectedPhaseChange);
 
@@ -206,7 +206,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
 
 
     protected void testChangePlanChangePlanAlignEOTWithChargeThroughDateReal() {
-        tChangePlanChangePlanAlignEOTWithChargeThroughDate("Shotgun", BillingPeriod.ANNUAL, IPriceListSet.DEFAULT_PRICELIST_NAME, "Assault-Rifle", BillingPeriod.ANNUAL, "rescue");
+        tChangePlanChangePlanAlignEOTWithChargeThroughDate("Shotgun", BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME, "Assault-Rifle", BillingPeriod.ANNUAL, "rescue");
     }
 
     private void tChangePlanChangePlanAlignEOTWithChargeThroughDate(String fromProd, BillingPeriod fromTerm, String fromPlanSet,
@@ -219,7 +219,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
             DateTime currentTime = clock.getUTCNow();
 
             SubscriptionData subscription = createSubscription(fromProd, fromTerm, fromPlanSet);
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             DateTime expectedPhaseTrialChange = DefaultClock.addDuration(subscription.getStartDate(), trialPhase.getDuration());
             assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL);
 
@@ -231,13 +231,13 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
             assertTrue(testListener.isCompleted(2000));
 
             // SET CTD
-            IDuration ctd = getDurationMonth(1);
+            Duration ctd = getDurationMonth(1);
             DateTime newChargedThroughDate = DefaultClock.addDuration(expectedPhaseTrialChange, ctd);
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate);
 
             // RE READ SUBSCRIPTION + CHECK CURRENT PHASE
             subscription = (SubscriptionData) entitlementApi.getSubscriptionFromId(subscription.getId());
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertNotNull(currentPhase);
             assertEquals(currentPhase.getPhaseType(), PhaseType.EVERGREEN);
 
@@ -290,7 +290,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
 
         try {
             SubscriptionData subscription = createSubscription("Assault-Rifle", BillingPeriod.MONTHLY, "gunclubDiscount");
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL);
 
             // MOVE TO NEXT PHASE
@@ -299,11 +299,11 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
             assertTrue(testListener.isCompleted(2000));
 
             // SET CTD
-            List<IDuration> durationList = new ArrayList<IDuration>();
+            List<Duration> durationList = new ArrayList<Duration>();
             durationList.add(trialPhase.getDuration());
             //durationList.add(subscription.getCurrentPhase().getDuration());
             DateTime startDiscountPhase = DefaultClock.addDuration(subscription.getStartDate(), durationList);
-            IDuration ctd = getDurationMonth(1);
+            Duration ctd = getDurationMonth(1);
             DateTime newChargedThroughDate = DefaultClock.addDuration(startDiscountPhase, ctd);
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate);
             subscription = (SubscriptionData) entitlementApi.getSubscriptionFromId(subscription.getId());
@@ -318,13 +318,13 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
             subscription.changePlan("Assault-Rifle", BillingPeriod.ANNUAL, "gunclubDiscount", clock.getUTCNow());
             assertFalse(testListener.isCompleted(2000));
 
-            IPlan currentPlan = subscription.getCurrentPlan();
+            Plan currentPlan = subscription.getCurrentPlan();
             assertNotNull(currentPlan);
             assertEquals(currentPlan.getProduct().getName(), "Assault-Rifle");
             assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE);
             assertEquals(currentPlan.getBillingPeriod(), BillingPeriod.ANNUAL);
 
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertNotNull(currentPhase);
             assertEquals(currentPhase.getPhaseType(), PhaseType.DISCOUNT);
 
@@ -338,7 +338,7 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
         try {
 
             SubscriptionData subscription = createSubscription("Assault-Rifle", BillingPeriod.ANNUAL, "gunclubDiscount");
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL);
 
             testListener.pushExpectedEvent(NextEvent.PHASE);
@@ -346,10 +346,10 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
             assertTrue(testListener.isCompleted(2000));
 
             // SET CTD
-            List<IDuration> durationList = new ArrayList<IDuration>();
+            List<Duration> durationList = new ArrayList<Duration>();
             durationList.add(trialPhase.getDuration());
             DateTime startDiscountPhase = DefaultClock.addDuration(subscription.getStartDate(), durationList);
-            IDuration ctd = getDurationMonth(1);
+            Duration ctd = getDurationMonth(1);
             DateTime newChargedThroughDate = DefaultClock.addDuration(startDiscountPhase, ctd);
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate);
             subscription = (SubscriptionData) entitlementApi.getSubscriptionFromId(subscription.getId());
@@ -367,13 +367,13 @@ public abstract class TestUserApiChangePlan extends TestUserApiBase {
             testListener.reset();
 
             // CHECK NO CHANGE OCCURED YET
-            IPlan currentPlan = subscription.getCurrentPlan();
+            Plan currentPlan = subscription.getCurrentPlan();
             assertNotNull(currentPlan);
             assertEquals(currentPlan.getProduct().getName(), "Assault-Rifle");
             assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE);
             assertEquals(currentPlan.getBillingPeriod(), BillingPeriod.ANNUAL);
 
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertNotNull(currentPhase);
             assertEquals(currentPhase.getPhaseType(), PhaseType.DISCOUNT);
 
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCreate.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCreate.java
index c216079..7c14390 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCreate.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCreate.java
@@ -26,9 +26,9 @@ import org.joda.time.DateTime;
 import org.testng.Assert;
 
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
@@ -49,7 +49,7 @@ public abstract class TestUserApiCreate extends TestUserApiBase {
 
             String productName = "Shotgun";
             BillingPeriod term = BillingPeriod.MONTHLY;
-            String planSetName = IPriceListSet.DEFAULT_PRICELIST_NAME;
+            String planSetName = PriceListSet.DEFAULT_PRICELIST_NAME;
 
 
             testListener.pushExpectedEvent(NextEvent.PHASE);
@@ -80,7 +80,7 @@ public abstract class TestUserApiCreate extends TestUserApiBase {
 
             String productName = "Shotgun";
             BillingPeriod term = BillingPeriod.MONTHLY;
-            String planSetName = IPriceListSet.DEFAULT_PRICELIST_NAME;
+            String planSetName = PriceListSet.DEFAULT_PRICELIST_NAME;
 
             testListener.pushExpectedEvent(NextEvent.CREATE);
 
@@ -95,13 +95,13 @@ public abstract class TestUserApiCreate extends TestUserApiBase {
 
             printSubscriptionTransitions(subscription.getActiveTransitions());
 
-            IPlan currentPlan = subscription.getCurrentPlan();
+            Plan currentPlan = subscription.getCurrentPlan();
             assertNotNull(currentPlan);
             assertEquals(currentPlan.getProduct().getName(), productName);
             assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE);
             assertEquals(currentPlan.getBillingPeriod(), BillingPeriod.MONTHLY);
 
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertNotNull(currentPhase);
             assertEquals(currentPhase.getPhaseType(), PhaseType.EVERGREEN);
 
@@ -119,7 +119,7 @@ public abstract class TestUserApiCreate extends TestUserApiBase {
 
             String productName = "Shotgun";
             BillingPeriod term = BillingPeriod.MONTHLY;
-            String planSetName = IPriceListSet.DEFAULT_PRICELIST_NAME;
+            String planSetName = PriceListSet.DEFAULT_PRICELIST_NAME;
 
             testListener.pushExpectedEvent(NextEvent.CREATE);
 
@@ -134,13 +134,13 @@ public abstract class TestUserApiCreate extends TestUserApiBase {
 
             printSubscriptionTransitions(subscription.getActiveTransitions());
 
-            IPlan currentPlan = subscription.getCurrentPlan();
+            Plan currentPlan = subscription.getCurrentPlan();
             assertNotNull(currentPlan);
             assertEquals(currentPlan.getProduct().getName(), productName);
             assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE);
             assertEquals(currentPlan.getBillingPeriod(), BillingPeriod.MONTHLY);
 
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertNotNull(currentPhase);
             assertEquals(currentPhase.getPhaseType(), PhaseType.TRIAL);
 
@@ -191,7 +191,7 @@ public abstract class TestUserApiCreate extends TestUserApiBase {
             SubscriptionData subscription = (SubscriptionData) entitlementApi.createSubscription(bundle.getId(), productName, term, planSetName, null, clock.getUTCNow());
             assertNotNull(subscription);
 
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertNotNull(currentPhase);
             assertEquals(currentPhase.getPhaseType(), PhaseType.TRIAL);
             assertTrue(testListener.isCompleted(5000));
@@ -231,7 +231,7 @@ public abstract class TestUserApiCreate extends TestUserApiBase {
 
             String productName = "Shotgun";
             BillingPeriod term = BillingPeriod.ANNUAL;
-            String planSetName = IPriceListSet.DEFAULT_PRICELIST_NAME;
+            String planSetName = PriceListSet.DEFAULT_PRICELIST_NAME;
 
             testListener.pushExpectedEvent(NextEvent.CREATE);
 
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiDemos.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiDemos.java
index cfa72cf..2476629 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiDemos.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiDemos.java
@@ -34,9 +34,9 @@ import com.google.inject.Guice;
 import com.google.inject.Injector;
 import com.google.inject.Stage;
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IDuration;
-import com.ning.billing.catalog.api.IPlan;
-import com.ning.billing.catalog.api.IPlanPhase;
+import com.ning.billing.catalog.api.Duration;
+import com.ning.billing.catalog.api.Plan;
+import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
@@ -73,7 +73,7 @@ public class TestUserApiDemos extends TestUserApiBase {
 
             /* STEP 1. CREATE SUBSCRIPTION */
             SubscriptionData subscription = createSubscription("Assault-Rifle", BillingPeriod.MONTHLY, "gunclubDiscount");
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL);
 
             displayState(subscription.getId(), "STEP 1. CREATED SUBSCRIPTION");
@@ -93,11 +93,11 @@ public class TestUserApiDemos extends TestUserApiBase {
             displayState(subscription.getId(), "STEP 3. MOVE TO DISCOUNT PHASE");
 
             /* STEP 4. SET CTD AND CHANGE PLAN EOT */
-            List<IDuration> durationList = new ArrayList<IDuration>();
+            List<Duration> durationList = new ArrayList<Duration>();
             durationList.add(trialPhase.getDuration());
             DateTime startDiscountPhase = DefaultClock.addDuration(subscription.getStartDate(), durationList);
 
-            IDuration ctd = getDurationMonth(1);
+            Duration ctd = getDurationMonth(1);
             DateTime newChargedThroughDate = DefaultClock.addDuration(startDiscountPhase, ctd);
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate);
             subscription = (SubscriptionData) entitlementApi.getSubscriptionFromId(subscription.getId());
@@ -122,13 +122,13 @@ public class TestUserApiDemos extends TestUserApiBase {
             clock.addDeltaFromReality(ctd);
             assertTrue(testListener.isCompleted(2000));
 
-            IPlan currentPlan = subscription.getCurrentPlan();
+            Plan currentPlan = subscription.getCurrentPlan();
             assertNotNull(currentPlan);
             assertEquals(currentPlan.getProduct().getName(), "Pistol");
             assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE);
             assertEquals(currentPlan.getBillingPeriod(), BillingPeriod.ANNUAL);
 
-            IPlanPhase currentPhase = subscription.getCurrentPhase();
+            PlanPhase currentPhase = subscription.getCurrentPhase();
             assertNotNull(currentPhase);
             assertEquals(currentPhase.getPhaseType(), PhaseType.DISCOUNT);
 
@@ -173,8 +173,8 @@ public class TestUserApiDemos extends TestUserApiBase {
         SubscriptionData subscription = (SubscriptionData) entitlementApi.getSubscriptionFromId(subscriptionId);
 
 
-        IPlan currentPlan = subscription.getCurrentPlan();
-        IPlanPhase currentPhase = subscription.getCurrentPhase();
+        Plan currentPlan = subscription.getCurrentPlan();
+        PlanPhase currentPhase = subscription.getCurrentPhase();
         String priceList = subscription.getCurrentPriceList();
         System.out.println("");
         System.out.println("\t CURRENT TIME = " + clock.getUTCNow());
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiError.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiError.java
index 63e6300..bf7b717 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiError.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiError.java
@@ -29,11 +29,11 @@ import com.google.inject.Guice;
 import com.google.inject.Injector;
 import com.google.inject.Stage;
 import com.ning.billing.ErrorCode;
-import com.ning.billing.catalog.PriceListSet;
+import com.ning.billing.catalog.DefaultPriceListSet;
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IDuration;
-import com.ning.billing.catalog.api.IPlanPhase;
-import com.ning.billing.catalog.api.IPriceListSet;
+import com.ning.billing.catalog.api.Duration;
+import com.ning.billing.catalog.api.PlanPhase;
+import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
 import com.ning.billing.entitlement.glue.MockEngineModuleMemory;
 import com.ning.billing.util.clock.DefaultClock;
@@ -50,8 +50,8 @@ public class TestUserApiError extends TestUserApiBase {
     @Test(enabled=true)
     public void testCreateSubscriptionBadCatalog() {
         // WRONG PRODUTCS
-        tCreateSubscriptionInternal(bundle.getId(), null, BillingPeriod.ANNUAL, IPriceListSet.DEFAULT_PRICELIST_NAME, ErrorCode.CAT_NO_SUCH_PRODUCT);
-        tCreateSubscriptionInternal(bundle.getId(), "Whatever", BillingPeriod.ANNUAL, IPriceListSet.DEFAULT_PRICELIST_NAME, ErrorCode.CAT_NO_SUCH_PRODUCT);
+        tCreateSubscriptionInternal(bundle.getId(), null, BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME, ErrorCode.CAT_NO_SUCH_PRODUCT);
+        tCreateSubscriptionInternal(bundle.getId(), "Whatever", BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME, ErrorCode.CAT_NO_SUCH_PRODUCT);
 
 
         // TODO: MARTIN TO FIX WITH CORRECT ERROR CODE. RIGHT NOW NPE
@@ -66,7 +66,7 @@ public class TestUserApiError extends TestUserApiBase {
 
     @Test(enabled=true)
     public void testCreateSubscriptionNoBundle() {
-        tCreateSubscriptionInternal(null, "Shotgun", BillingPeriod.ANNUAL, IPriceListSet.DEFAULT_PRICELIST_NAME, ErrorCode.ENT_CREATE_NO_BUNDLE);
+        tCreateSubscriptionInternal(null, "Shotgun", BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME, ErrorCode.ENT_CREATE_NO_BUNDLE);
     }
 
     @Test(enabled=false)
@@ -77,8 +77,8 @@ public class TestUserApiError extends TestUserApiBase {
     @Test(enabled=true)
     public void testCreateSubscriptionBPExists() {
         try {
-            createSubscription("Shotgun", BillingPeriod.ANNUAL, IPriceListSet.DEFAULT_PRICELIST_NAME);
-            tCreateSubscriptionInternal(bundle.getId(), "Shotgun", BillingPeriod.ANNUAL, IPriceListSet.DEFAULT_PRICELIST_NAME, ErrorCode.ENT_CREATE_BP_EXISTS);
+            createSubscription("Shotgun", BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME);
+            tCreateSubscriptionInternal(bundle.getId(), "Shotgun", BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME, ErrorCode.ENT_CREATE_BP_EXISTS);
         } catch (Exception e) {
             e.printStackTrace();
             Assert.assertFalse(true);
@@ -104,12 +104,12 @@ public class TestUserApiError extends TestUserApiBase {
     @Test(enabled=true)
     public void testChangeSubscriptionNonActive() {
         try {
-            Subscription subscription = createSubscription("Shotgun", BillingPeriod.ANNUAL, IPriceListSet.DEFAULT_PRICELIST_NAME);
+            Subscription subscription = createSubscription("Shotgun", BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME);
 
             testListener.pushExpectedEvent(NextEvent.CANCEL);
             subscription.cancel(clock.getUTCNow(), false);
             try {
-                subscription.changePlan("Pistol", BillingPeriod.MONTHLY, IPriceListSet.DEFAULT_PRICELIST_NAME, clock.getUTCNow());
+                subscription.changePlan("Pistol", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, clock.getUTCNow());
             } catch (EntitlementUserApiException e) {
                 assertEquals(e.getCode(), ErrorCode.ENT_CHANGE_NON_ACTIVE.getCode());
                 try {
@@ -128,19 +128,19 @@ public class TestUserApiError extends TestUserApiBase {
     @Test(enabled=true)
     public void testChangeSubscriptionFutureCancelled() {
         try {
-            Subscription subscription = createSubscription("Shotgun", BillingPeriod.MONTHLY, IPriceListSet.DEFAULT_PRICELIST_NAME);
+            Subscription subscription = createSubscription("Shotgun", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME);
 
             // SET CTD TO CANCEL IN FUTURE
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             DateTime expectedPhaseTrialChange = DefaultClock.addDuration(subscription.getStartDate(), trialPhase.getDuration());
-            IDuration ctd = getDurationMonth(1);
+            Duration ctd = getDurationMonth(1);
             DateTime newChargedThroughDate = DefaultClock.addDuration(expectedPhaseTrialChange, ctd);
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate);
             subscription = entitlementApi.getSubscriptionFromId(subscription.getId());
 
             subscription.cancel(clock.getUTCNow(), false);
             try {
-                subscription.changePlan("Pistol", BillingPeriod.MONTHLY, IPriceListSet.DEFAULT_PRICELIST_NAME, clock.getUTCNow());
+                subscription.changePlan("Pistol", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, clock.getUTCNow());
             } catch (EntitlementUserApiException e) {
                 assertEquals(e.getCode(), ErrorCode.ENT_CHANGE_FUTURE_CANCELLED.getCode());
                 try {
@@ -163,7 +163,7 @@ public class TestUserApiError extends TestUserApiBase {
     @Test(enabled=true)
     public void testUncancelBadState() {
         try {
-            Subscription subscription = createSubscription("Shotgun", BillingPeriod.MONTHLY, IPriceListSet.DEFAULT_PRICELIST_NAME);
+            Subscription subscription = createSubscription("Shotgun", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME);
 
             try {
                 subscription.uncancel();
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiScenarios.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiScenarios.java
index c991f7d..69fcd08 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiScenarios.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiScenarios.java
@@ -28,8 +28,8 @@ import com.google.inject.Guice;
 import com.google.inject.Injector;
 import com.google.inject.Stage;
 import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.IDuration;
-import com.ning.billing.catalog.api.IPlanPhase;
+import com.ning.billing.catalog.api.Duration;
+import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.entitlement.api.ApiTestListener.NextEvent;
 import com.ning.billing.entitlement.glue.MockEngineModuleSql;
@@ -49,7 +49,7 @@ public class TestUserApiScenarios extends TestUserApiBase {
 
         try {
             SubscriptionData subscription = createSubscription("Assault-Rifle", BillingPeriod.MONTHLY, "gunclubDiscount");
-            IPlanPhase trialPhase = subscription.getCurrentPhase();
+            PlanPhase trialPhase = subscription.getCurrentPhase();
             assertEquals(trialPhase.getPhaseType(), PhaseType.TRIAL);
 
             testListener.pushExpectedEvent(NextEvent.CHANGE);
@@ -62,7 +62,7 @@ public class TestUserApiScenarios extends TestUserApiBase {
             assertTrue(testListener.isCompleted(2000));
 
             // SET CTD
-            IDuration ctd = getDurationMonth(1);
+            Duration ctd = getDurationMonth(1);
             DateTime expectedPhaseTrialChange = DefaultClock.addDuration(subscription.getStartDate(), trialPhase.getDuration());
             DateTime newChargedThroughDate = DefaultClock.addDuration(expectedPhaseTrialChange, ctd);
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate);
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java
index d378dcb..f3f42f6 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java
@@ -30,8 +30,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.inject.Inject;
-import com.ning.billing.catalog.api.ICatalog;
-import com.ning.billing.catalog.api.ICatalogService;
+import com.ning.billing.catalog.api.Catalog;
+import com.ning.billing.catalog.api.CatalogService;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.catalog.api.TimeUnit;
 import com.ning.billing.config.EntitlementConfig;
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoSql.java b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoSql.java
index 253ef45..6f6d50d 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoSql.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoSql.java
@@ -24,8 +24,8 @@ import org.skife.jdbi.v2.sqlobject.mixins.CloseMe;
 import org.skife.jdbi.v2.sqlobject.mixins.Transactional;
 
 import com.google.inject.Inject;
-import com.ning.billing.catalog.api.ICatalog;
-import com.ning.billing.catalog.api.ICatalogService;
+import com.ning.billing.catalog.api.Catalog;
+import com.ning.billing.catalog.api.CatalogService;
 import com.ning.billing.config.EntitlementConfig;
 import com.ning.billing.entitlement.api.user.SubscriptionApiService;
 import com.ning.billing.entitlement.api.user.SubscriptionFactory;
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/InternationalPriceMock.java b/invoice/src/test/java/com/ning/billing/invoice/tests/InternationalPriceMock.java
index 2217b6c..9198ba0 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/InternationalPriceMock.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/InternationalPriceMock.java
@@ -17,15 +17,15 @@
 package com.ning.billing.invoice.tests;
 
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.catalog.api.IInternationalPrice;
-import com.ning.billing.catalog.api.IPrice;
+import com.ning.billing.catalog.api.InternationalPrice;
+import com.ning.billing.catalog.api.Price;
 
 import java.math.BigDecimal;
 import java.util.Date;
 
 import static org.testng.Assert.fail;
 
-public class InternationalPriceMock implements IInternationalPrice {
+public class InternationalPriceMock implements InternationalPrice {
     private final BigDecimal rate;
 
     public InternationalPriceMock(BigDecimal rate) {
@@ -33,7 +33,7 @@ public class InternationalPriceMock implements IInternationalPrice {
     }
 
     @Override
-    public IPrice[] getPrices() {
+    public Price[] getPrices() {
         fail();
 
         return null;
diff --git a/util/src/main/java/com/ning/billing/util/clock/DefaultClock.java b/util/src/main/java/com/ning/billing/util/clock/DefaultClock.java
index 1397d41..8d61ba5 100644
--- a/util/src/main/java/com/ning/billing/util/clock/DefaultClock.java
+++ b/util/src/main/java/com/ning/billing/util/clock/DefaultClock.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
 
-import com.ning.billing.catalog.api.IDuration;
+import com.ning.billing.catalog.api.Duration;
 
 public class DefaultClock implements Clock {
 
@@ -42,10 +42,10 @@ public class DefaultClock implements Clock {
         return input.minus(input.getMillisOfSecond());
     }
 
-    public static DateTime addDuration(DateTime input, List<IDuration> durations) {
+    public static DateTime addDuration(DateTime input, List<Duration> durations) {
 
         DateTime result = input;
-        for (IDuration cur : durations) {
+        for (Duration cur : durations) {
             switch (cur.getUnit()) {
             case DAYS:
                 result = result.plusDays(cur.getNumber());
@@ -66,8 +66,8 @@ public class DefaultClock implements Clock {
         return result;
     }
 
-    public static DateTime addDuration(DateTime input, IDuration duration) {
-        List<IDuration> list = new ArrayList<IDuration>();
+    public static DateTime addDuration(DateTime input, Duration duration) {
+        List<Duration> list = new ArrayList<Duration>();
         list.add(duration);
         return addDuration(input, list);
     }
diff --git a/util/src/test/java/com/ning/billing/util/clock/ClockMock.java b/util/src/test/java/com/ning/billing/util/clock/ClockMock.java
index c6ee715..127f0b6 100644
--- a/util/src/test/java/com/ning/billing/util/clock/ClockMock.java
+++ b/util/src/test/java/com/ning/billing/util/clock/ClockMock.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
 
-import com.ning.billing.catalog.api.IDuration;
+import com.ning.billing.catalog.api.Duration;
 
 // STEPH should really be in tests but not accessible from other sub modules
 public class ClockMock extends DefaultClock {
@@ -34,7 +34,7 @@ public class ClockMock extends DefaultClock {
     }
 
     private long deltaFromRealityMs;
-    private List<IDuration> deltaFromRealityDuration;
+    private List<Duration> deltaFromRealityDuration;
     private long deltaFromRealitDurationEpsilon;
     private DeltaType deltaType;
 
@@ -55,15 +55,15 @@ public class ClockMock extends DefaultClock {
         return getNow(DateTimeZone.UTC);
     }
 
-    public synchronized void setDeltaFromReality(IDuration delta, long epsilon) {
+    public synchronized void setDeltaFromReality(Duration delta, long epsilon) {
         deltaType = DeltaType.DELTA_DURATION;
-        deltaFromRealityDuration = new ArrayList<IDuration>();
+        deltaFromRealityDuration = new ArrayList<Duration>();
         deltaFromRealityDuration.add(delta);
         deltaFromRealitDurationEpsilon = epsilon;
         deltaFromRealityMs = 0;
     }
 
-    public synchronized void addDeltaFromReality(IDuration delta) {
+    public synchronized void addDeltaFromReality(Duration delta) {
         if (deltaType != DeltaType.DELTA_DURATION) {
             throw new RuntimeException("ClockMock should be set with type DELTA_DURATION");
         }
@@ -100,7 +100,7 @@ public class ClockMock extends DefaultClock {
     private DateTime adjustFromDuration(DateTime input) {
 
         DateTime result = input;
-        for (IDuration cur : deltaFromRealityDuration) {
+        for (Duration cur : deltaFromRealityDuration) {
 
             int length = cur.getNumber();
             switch (cur.getUnit()) {