diff --git a/src/main/java/com/constantcontact/pagination/PaginationHelperService.java b/src/main/java/com/constantcontact/pagination/PaginationHelperService.java
index 83ed41af..5f9f4c2e 100644
--- a/src/main/java/com/constantcontact/pagination/PaginationHelperService.java
+++ b/src/main/java/com/constantcontact/pagination/PaginationHelperService.java
@@ -35,7 +35,7 @@ public <T> ResultSet<T> getPage(String accessToken, Pagination pagination, Class
 			return null;
 		}
 		try {			
-			String url = paginateUrl(Config.Endpoints.BASE_URL_HOST, pagination.getNextLink(), null);
+			String url = paginateUrl(Config.instance().getBaseUrl(), pagination.getNextLink(), null);
 			if(pagination.getNextLink() == null) {
 				return null;
 			}
diff --git a/src/main/java/com/constantcontact/services/accounts/AccountService.java b/src/main/java/com/constantcontact/services/accounts/AccountService.java
index 17438e20..f30b9f41 100644
--- a/src/main/java/com/constantcontact/services/accounts/AccountService.java
+++ b/src/main/java/com/constantcontact/services/accounts/AccountService.java
@@ -35,7 +35,7 @@ public List<VerifiedEmailAddress> getVerifiedEmailAddresses(String accessToken,
 		List<VerifiedEmailAddress> addresses = new ArrayList<VerifiedEmailAddress>();
 		try {
 
-			String url = appendParam(Config.Endpoints.BASE_URL + String.format(Config.Endpoints.VERIFIEDEMAILADDRESSES), "status", status);
+			String url = appendParam(Config.instance().getBaseUrl() + String.format(Config.Endpoints.VERIFIEDEMAILADDRESSES), "status", status);
 			// Get REST response
 			CUrlResponse response = getRestClient().get(url, accessToken);
 			if (response.hasData()) {
@@ -65,7 +65,7 @@ public List<VerifiedEmailAddress> getVerifiedEmailAddresses(String accessToken,
     public AccountInfo getAccountInfo(String accessToken) throws ConstantContactServiceException {
         AccountInfo accountInfo = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.ACCOUNT_INFO);
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.ACCOUNT_INFO);
 
             CUrlResponse response = getRestClient().get(url, accessToken);
 
@@ -96,7 +96,7 @@ public AccountInfo getAccountInfo(String accessToken) throws ConstantContactServ
     public AccountInfo updateAccountInfo(String accessToken, AccountInfo accountInfo) throws ConstantContactServiceException {
         AccountInfo updatedAccountInfo = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.ACCOUNT_INFO);
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.ACCOUNT_INFO);
             String json = accountInfo.toJSON();
 
             CUrlResponse response = getRestClient().put(url, accessToken, json);
diff --git a/src/main/java/com/constantcontact/services/activities/BulkActivitiesService.java b/src/main/java/com/constantcontact/services/activities/BulkActivitiesService.java
index 4e2c10df..a7619dde 100644
--- a/src/main/java/com/constantcontact/services/activities/BulkActivitiesService.java
+++ b/src/main/java/com/constantcontact/services/activities/BulkActivitiesService.java
@@ -42,7 +42,7 @@ public ContactsResponse addContacts(String accessToken, AddContactsRequest reque
 
 		ContactsResponse contactsResponse = null;
 		try {
-			String url = Config.Endpoints.BASE_URL + Config.Endpoints.ACTIVITIES_ADD_CONTACTS;
+			String url = Config.instance().getBaseUrl() + Config.Endpoints.ACTIVITIES_ADD_CONTACTS;
 			String json = request.toJSON();
 			CUrlResponse response = getRestClient().post(url, accessToken, json);
 			if (response.hasData()) {
@@ -65,7 +65,7 @@ public ContactsResponse addContacts(String accessToken, MultipartBody multipartR
 	    
 	    ContactsResponse contactsResponse = null;
         try {
-            String url = Config.Endpoints.BASE_URL + Config.Endpoints.ACTIVITIES_ADD_CONTACTS;
+            String url = Config.instance().getBaseUrl() + Config.Endpoints.ACTIVITIES_ADD_CONTACTS;
             CUrlResponse response = getRestClient().postMultipart(url, accessToken, multipartRequest);
             if (response.hasData()) {
                 contactsResponse = Component.fromJSON(response.getBody(), ContactsResponse.class);
@@ -94,7 +94,7 @@ public ContactsResponse addContacts(String accessToken, MultipartBody multipartR
 	public ContactsResponse removeContactsFromLists(String accessToken, RemoveContactsRequest request) throws ConstantContactServiceException {
 		ContactsResponse contactsResponse = null;
 		try {
-			String url = Config.Endpoints.BASE_URL + Config.Endpoints.ACTIVITIES_REMOVE_FROM_LISTS;
+			String url = Config.instance().getBaseUrl() + Config.Endpoints.ACTIVITIES_REMOVE_FROM_LISTS;
 			String json = request.toJSON();
 			CUrlResponse response = getRestClient().post(url, accessToken, json);
 			if (response.hasData()) {
@@ -116,7 +116,7 @@ public ContactsResponse removeContactsFromLists(String accessToken, MultipartBod
 
         ContactsResponse contactsResponse = null;
         try {
-            String url = Config.Endpoints.BASE_URL + Config.Endpoints.ACTIVITIES_REMOVE_FROM_LISTS;
+            String url = Config.instance().getBaseUrl() + Config.Endpoints.ACTIVITIES_REMOVE_FROM_LISTS;
             CUrlResponse response = getRestClient().postMultipart(url, accessToken, multipartRequest);
             if (response.hasData()) {
                 contactsResponse = Component.fromJSON(response.getBody(), ContactsResponse.class);
@@ -147,7 +147,7 @@ public ContactsResponse removeContactsFromLists(String accessToken, MultipartBod
 	public ContactsResponse clearLists(String accessToken, ClearListsRequest request) throws ConstantContactServiceException {
 		ContactsResponse contactsResponse = null;
 		try {
-			String url = Config.Endpoints.BASE_URL + Config.Endpoints.ACTIVITIES_CLEAR_LISTS;
+			String url = Config.instance().getBaseUrl() + Config.Endpoints.ACTIVITIES_CLEAR_LISTS;
 			String json = request.toJSON();
 			CUrlResponse response = getRestClient().post(url, accessToken, json);
 			if (response.hasData()) {
@@ -177,7 +177,7 @@ public ContactsResponse clearLists(String accessToken, ClearListsRequest request
 	public ContactsResponse exportContacts(String accessToken, ExportContactsRequest request) throws ConstantContactServiceException {
 		ContactsResponse contactsResponse = null;
 		try {
-			String url = Config.Endpoints.BASE_URL + Config.Endpoints.ACTIVITIES_EXPORT_CONTACTS;
+			String url = Config.instance().getBaseUrl() + Config.Endpoints.ACTIVITIES_EXPORT_CONTACTS;
 			String json = request.toJSON();
 			CUrlResponse response = getRestClient().post(url, accessToken, json);
 			if (response.hasData()) {
@@ -206,7 +206,7 @@ public ContactsResponse exportContacts(String accessToken, ExportContactsRequest
 	public List<SummaryReport> getSummaryReport(String accessToken) throws ConstantContactServiceException {
 		List<SummaryReport> activitiesResponse = null;
 		try {
-			String url = Config.Endpoints.BASE_URL + Config.Endpoints.ACTIVITIES;
+			String url = Config.instance().getBaseUrl() + Config.Endpoints.ACTIVITIES;
 
 			CUrlResponse response = getRestClient().get(url, accessToken);
 			if (response.hasData()) {
@@ -239,7 +239,7 @@ public List<DetailedStatusReport> getDetailedStatusReport(String accessToken, St
 
 		List<DetailedStatusReport> detailedStatusReports = null;
 
-		String url = Config.Endpoints.BASE_URL + Config.Endpoints.ACTIVITIES;
+		String url = Config.instance().getBaseUrl() + Config.Endpoints.ACTIVITIES;
 		try {
 			if (status != null && status.length() > 0) {
 				url = appendParam(url, "status", status);
diff --git a/src/main/java/com/constantcontact/services/contactlists/ContactListService.java b/src/main/java/com/constantcontact/services/contactlists/ContactListService.java
index 9395f43a..fa95d108 100644
--- a/src/main/java/com/constantcontact/services/contactlists/ContactListService.java
+++ b/src/main/java/com/constantcontact/services/contactlists/ContactListService.java
@@ -35,7 +35,7 @@ public class ContactListService extends BaseService implements IContactListServi
 	public List<ContactList> getLists(String accessToken, String modifiedSinceTimestamp) throws ConstantContactServiceException {
 		List<ContactList> lists = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.LISTS);
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.LISTS);
 						
 			if(modifiedSinceTimestamp != null)
 				url = appendParam(url, "modified_since", modifiedSinceTimestamp);
@@ -68,7 +68,7 @@ public List<ContactList> getLists(String accessToken, String modifiedSinceTimest
 	public ContactList addList(String accessToken, ContactList list) throws ConstantContactServiceException {
 		ContactList newList = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.LISTS);
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.LISTS);
 			
 			String json = list.toJSON();
 			CUrlResponse response = getRestClient().post(url, accessToken, json);
@@ -99,7 +99,7 @@ public ContactList addList(String accessToken, ContactList list) throws Constant
 	public ContactList getList(String accessToken, String listId) throws ConstantContactServiceException {
 		ContactList list = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.LIST, listId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.LIST, listId));
 			
 			CUrlResponse response = getRestClient().get(url, accessToken);
 			if (response.hasData()) {
@@ -130,7 +130,7 @@ public ContactList updateList(String accessToken, ContactList list) throws Const
 
         ContactList resultingList = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.LIST, list.getId()));
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.LIST, list.getId()));
 
             String json = list.toJSON();
             
@@ -167,7 +167,7 @@ public ContactList updateList(String accessToken, ContactList list) throws Const
 	public ResultSet<Contact> getContactsFromList(String accessToken, String listId, Integer limit, String modifiedSinceTimestamp) throws ConstantContactServiceException {
 		ResultSet<Contact> contacts = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.LIST_CONTACTS, listId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.LIST_CONTACTS, listId));
 			url = paginateUrl(url, limit);
 			
 			if (modifiedSinceTimestamp != null) {
@@ -201,7 +201,7 @@ public ResultSet<Contact> getContactsFromList(String accessToken, String listId,
 
 	public boolean deleteList(String accessToken, String listId) throws ConstantContactServiceException {
 		try {
-			String url = String.format("%1$s%2$s",Config.Endpoints.BASE_URL, String.format(Config.Endpoints.LIST, listId));
+			String url = String.format("%1$s%2$s",Config.instance().getBaseUrl(), String.format(Config.Endpoints.LIST, listId));
 			
 			CUrlResponse response = getRestClient().delete(url, accessToken);
 			if (response.isError()) {
diff --git a/src/main/java/com/constantcontact/services/contacts/ContactService.java b/src/main/java/com/constantcontact/services/contacts/ContactService.java
index 2d17a39c..f5df5858 100644
--- a/src/main/java/com/constantcontact/services/contacts/ContactService.java
+++ b/src/main/java/com/constantcontact/services/contacts/ContactService.java
@@ -40,7 +40,7 @@ public ResultSet<Contact> getContacts(String accessToken, Integer limit, String
     
     try {
       // Construct access URL
-      String url = paginateUrl(String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.CONTACTS), limit);
+      String url = paginateUrl(String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.CONTACTS), limit);
 
       if(modifiedSinceTimestamp != null) {
         url = appendParam(url, "modified_since", modifiedSinceTimestamp);
@@ -79,7 +79,7 @@ public ResultSet<Contact> getContacts(String accessToken, Integer limit, String
   public Contact getContact(String accessToken, String contactId) throws ConstantContactServiceException {
     Contact contact = null;
     try {
-      String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.CONTACT, contactId));
+      String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.CONTACT, contactId));
 
       CUrlResponse response = getRestClient().get(url, accessToken);
       if (response.hasData()) {
@@ -110,7 +110,7 @@ public Contact getContact(String accessToken, String contactId) throws ConstantC
   public ResultSet<Contact> getContactByEmail(String accessToken, String email) throws ConstantContactServiceException {
     ResultSet<Contact> contacts = null;
     try {
-      String url = String.format("%1$s%2$s?email=%3$s", Config.Endpoints.BASE_URL, Config.Endpoints.CONTACTS, email);
+      String url = String.format("%1$s%2$s?email=%3$s", Config.instance().getBaseUrl(), Config.Endpoints.CONTACTS, email);
 
       CUrlResponse response = getRestClient().get(url, accessToken);
 
@@ -141,7 +141,7 @@ public ResultSet<Contact> getContactByEmail(String accessToken, String email) th
   public Contact addContact(String accessToken, Contact contact, Boolean actionByVisitor) throws ConstantContactServiceException {
     Contact newContact = null;
     try {
-      String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.CONTACTS);
+      String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.CONTACTS);
       String json = contact.toJSON();
 
       if(actionByVisitor == true) {
@@ -176,7 +176,7 @@ public Contact addContact(String accessToken, Contact contact, Boolean actionByV
 
   public boolean deleteContact(String accessToken, String contactId) throws ConstantContactServiceException {
     try {
-      String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.CONTACT, contactId));
+      String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.CONTACT, contactId));
 
       CUrlResponse response = getRestClient().delete(url, accessToken);
       if (response.isError()) {
@@ -204,7 +204,7 @@ public boolean deleteContact(String accessToken, String contactId) throws Consta
 
   public boolean deleteContactFromLists(String accessToken, String contactId) throws ConstantContactServiceException {
     try {
-      String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.CONTACT_LISTS, contactId));
+      String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.CONTACT_LISTS, contactId));
       CUrlResponse response = getRestClient().delete(url, accessToken);
       if (response.isError()) {
           throw ConstantContactExceptionFactory.createServiceException(response, url);
@@ -232,7 +232,7 @@ public boolean deleteContactFromLists(String accessToken, String contactId) thro
 
   public boolean deleteContactFromList(String accessToken, String contactId, String listId) throws ConstantContactServiceException {
     try {
-      String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.CONTACT_LIST, contactId, listId));
+      String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.CONTACT_LIST, contactId, listId));
 
       CUrlResponse response = getRestClient().delete(url, accessToken);
       if (response.isError()) {
@@ -260,7 +260,7 @@ public boolean deleteContactFromList(String accessToken, String contactId, Strin
   public Contact updateContact(String accessToken, Contact contact, Boolean actionByVisitor) throws ConstantContactServiceException {
     Contact updateContact = null;
     try {
-      String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.CONTACT, contact.getId()));
+      String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.CONTACT, contact.getId()));
       String json = contact.toJSON();
 
       if(actionByVisitor == true) {
diff --git a/src/main/java/com/constantcontact/services/contacts/tracking/ContactTrackingService.java b/src/main/java/com/constantcontact/services/contacts/tracking/ContactTrackingService.java
index bdba4b8c..c5c58d76 100644
--- a/src/main/java/com/constantcontact/services/contacts/tracking/ContactTrackingService.java
+++ b/src/main/java/com/constantcontact/services/contacts/tracking/ContactTrackingService.java
@@ -43,7 +43,7 @@ public class ContactTrackingService extends BaseService implements IContactTrack
 	public ContactTrackingSummaryReport getSummary(String accessToken, String contactId, String createdSinceTimestamp) throws ConstantContactServiceException {
 		ContactTrackingSummaryReport summary = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.CONTACTS_TRACKING_REPORTS_SUMMARY, contactId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.CONTACTS_TRACKING_REPORTS_SUMMARY, contactId));
 			
 			if (createdSinceTimestamp != null) {
 				url = appendParam(url,"created_since", createdSinceTimestamp);
@@ -78,7 +78,7 @@ public List<ContactTrackingSummaryByCampaignReport> getSummaryByCampaign(String
         
         try {
             StringBuilder sb = new StringBuilder();
-            sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.CONTACTS_TRACKING_REPORTS_BY_CAMPAIGN_SUMMARY, contactId));
+            sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.CONTACTS_TRACKING_REPORTS_BY_CAMPAIGN_SUMMARY, contactId));
             
             String url = sb.toString();
 
@@ -114,7 +114,7 @@ public ResultSet<? extends TrackingContactsBase> getActivities(String accessToke
         
         try {
             StringBuilder sb = new StringBuilder();
-            sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.CONTACTS_TRACKING_ALL, contactId));
+            sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.CONTACTS_TRACKING_ALL, contactId));
             
             if (limit != null) {
                 sb.append("?limit=").append(limit);
@@ -157,7 +157,7 @@ public ResultSet<ContactTrackingBounce> getBounces(String accessToken, String co
 		ResultSet<ContactTrackingBounce> bounces = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.CONTACTS_TRACKING_BOUNCES, contactId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.CONTACTS_TRACKING_BOUNCES, contactId));
 			
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
@@ -197,7 +197,7 @@ public ResultSet<ContactTrackingClick> getClicks(String accessToken, String cont
 		ResultSet<ContactTrackingClick> clicks = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.CONTACTS_TRACKING_CLICKS, contactId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.CONTACTS_TRACKING_CLICKS, contactId));
 			
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
@@ -241,7 +241,7 @@ public ResultSet<ContactTrackingForward> getForwards(String accessToken, String
 		ResultSet<ContactTrackingForward> forwards = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.CONTACTS_TRACKING_FORWARDS, contactId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.CONTACTS_TRACKING_FORWARDS, contactId));
 			
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
@@ -286,7 +286,7 @@ public ResultSet<ContactTrackingOpen> getOpens(String accessToken, String contac
 		ResultSet<ContactTrackingOpen> opens = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.CONTACTS_TRACKING_OPENS, contactId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.CONTACTS_TRACKING_OPENS, contactId));
 			
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
@@ -331,7 +331,7 @@ public ResultSet<ContactTrackingSend> getSends(String accessToken, String contac
 		ResultSet<ContactTrackingSend> sends = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.CONTACTS_TRACKING_SENDS, contactId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.CONTACTS_TRACKING_SENDS, contactId));
 			
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
@@ -377,7 +377,7 @@ public ResultSet<ContactTrackingUnsubscribe> getUnsubscribes(String accessToken,
 		ResultSet<ContactTrackingUnsubscribe> unsubscribes = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.CONTACTS_TRACKING_UNSUBSCRIBES, contactId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.CONTACTS_TRACKING_UNSUBSCRIBES, contactId));
 			
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
diff --git a/src/main/java/com/constantcontact/services/emailcampaigns/EmailCampaignService.java b/src/main/java/com/constantcontact/services/emailcampaigns/EmailCampaignService.java
index 7f2ba02a..961bfe84 100644
--- a/src/main/java/com/constantcontact/services/emailcampaigns/EmailCampaignService.java
+++ b/src/main/java/com/constantcontact/services/emailcampaigns/EmailCampaignService.java
@@ -37,7 +37,7 @@ public class EmailCampaignService extends BaseService implements IEmailCampaignS
 	public ResultSet<EmailCampaignResponse> getCampaigns(String accessToken, Integer limit, String modifiedSinceTimestamp) throws ConstantContactServiceException {
 		ResultSet<EmailCampaignResponse> campaigns = null;
 		try {
-			String url = paginateUrl(String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.EMAILCAMPAIGNS), limit);
+			String url = paginateUrl(String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.EMAILCAMPAIGNS), limit);
 			
 			if(modifiedSinceTimestamp != null)
 				url = appendParam(url, "modified_since", modifiedSinceTimestamp);
@@ -71,7 +71,7 @@ public ResultSet<EmailCampaignResponse> getCampaigns(String accessToken, Integer
 	public EmailCampaignResponse getCampaign(String accessToken, String campaignId) throws ConstantContactServiceException {
 		EmailCampaignResponse campaign = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EMAILCAMPAIGNS_ID, campaignId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EMAILCAMPAIGNS_ID, campaignId));
 			
 			CUrlResponse response = getRestClient().get(url, accessToken);
 
@@ -103,7 +103,7 @@ public EmailCampaignResponse getCampaign(String accessToken, String campaignId)
 	public EmailCampaignResponse addCampaign(String accessToken, EmailCampaignRequest emailCampaign) throws ConstantContactServiceException {
 		EmailCampaignResponse newEmailCampaign = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.EMAILCAMPAIGNS);
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.EMAILCAMPAIGNS);
 			String json = emailCampaign.toJSON();
 			
 			CUrlResponse response = getRestClient().post(url, accessToken, json);
@@ -135,7 +135,7 @@ public EmailCampaignResponse addCampaign(String accessToken, EmailCampaignReques
 	public EmailCampaignResponse updateCampaign(String accessToken, EmailCampaignRequest emailCampaign) throws ConstantContactServiceException {
 		EmailCampaignResponse updateEmailCampaign = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EMAILCAMPAIGNS_ID, emailCampaign.getId()));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EMAILCAMPAIGNS_ID, emailCampaign.getId()));
 			String json = emailCampaign.toJSON();
 
 			CUrlResponse response = getRestClient().put(url, accessToken, json);
@@ -166,7 +166,7 @@ public EmailCampaignResponse updateCampaign(String accessToken, EmailCampaignReq
 
 	public boolean deleteCampaign(String accessToken, String emailCampaignId) throws ConstantContactServiceException {
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EMAILCAMPAIGNS_ID, emailCampaignId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EMAILCAMPAIGNS_ID, emailCampaignId));
 			
 			CUrlResponse response = getRestClient().delete(url, accessToken);
 			
diff --git a/src/main/java/com/constantcontact/services/emailcampaigns/schedule/EmailCampaignScheduleService.java b/src/main/java/com/constantcontact/services/emailcampaigns/schedule/EmailCampaignScheduleService.java
index 36fdf918..50bb9e0d 100644
--- a/src/main/java/com/constantcontact/services/emailcampaigns/schedule/EmailCampaignScheduleService.java
+++ b/src/main/java/com/constantcontact/services/emailcampaigns/schedule/EmailCampaignScheduleService.java
@@ -34,7 +34,7 @@ public class EmailCampaignScheduleService extends BaseService implements IEmailC
 	public EmailCampaignSchedule getSchedule(String accessToken, String campaignId, String scheduleId) throws ConstantContactServiceException {
 		EmailCampaignSchedule schedule = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID, campaignId, scheduleId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID, campaignId, scheduleId));
 			CUrlResponse response = getRestClient().get(url, accessToken);
 
 			if (response.hasData()) {
@@ -69,7 +69,7 @@ public EmailCampaignSchedule updateSchedule(String accessToken, String campaignI
 
 		EmailCampaignSchedule updatedEmailCampaignSchedule = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID, campaignId, scheduleId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID, campaignId, scheduleId));
 			String json = emailCampaignSchedule.toJSON();
 			CUrlResponse response = getRestClient().put(url, accessToken, json);
 			if (response.hasData()) {
@@ -99,7 +99,7 @@ public EmailCampaignSchedule updateSchedule(String accessToken, String campaignI
 
 	public boolean deleteSchedule(String accessToken, String campaignId, String scheduleId) throws ConstantContactServiceException {
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID, campaignId, scheduleId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID, campaignId, scheduleId));
 			CUrlResponse response = getRestClient().delete(url, accessToken);
 			if (response.isError()) {
                 throw ConstantContactExceptionFactory.createServiceException(response, url);
@@ -127,7 +127,7 @@ public boolean deleteSchedule(String accessToken, String campaignId, String sche
 	public List<EmailCampaignSchedule> getSchedules(String accessToken, String campaignId) throws ConstantContactServiceException {
 		List<EmailCampaignSchedule> schedules = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID_ALL, campaignId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID_ALL, campaignId));
 			CUrlResponse response = getRestClient().get(url, accessToken);
 
 			if (response.hasData()) {
@@ -160,7 +160,7 @@ public EmailCampaignSchedule addSchedule(String accessToken, String campaignId,
 			throws ConstantContactServiceException {
 		EmailCampaignSchedule newSchedule = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID_ALL, campaignId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EMAILCAMPAIGNS_SCHEDULES_ID_ALL, campaignId));
 			String json = emailCampaignSchedule.toJSON();
 			CUrlResponse response = getRestClient().post(url, accessToken, json);
 			if (response.hasData()) {
diff --git a/src/main/java/com/constantcontact/services/emailcampaigns/tracking/EmailCampaignTrackingService.java b/src/main/java/com/constantcontact/services/emailcampaigns/tracking/EmailCampaignTrackingService.java
index ff7f2103..206f5116 100644
--- a/src/main/java/com/constantcontact/services/emailcampaigns/tracking/EmailCampaignTrackingService.java
+++ b/src/main/java/com/constantcontact/services/emailcampaigns/tracking/EmailCampaignTrackingService.java
@@ -40,7 +40,7 @@ public EmailCampaignTrackingSummary getSummary(String accessToken, String emailC
 
 		EmailCampaignTrackingSummary summary = null;
 		try {
-			String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_REPORTS_SUMMARY, emailCampaignId));
+			String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_REPORTS_SUMMARY, emailCampaignId));
 			
 			if (createdSinceTimestamp != null) {
 				url = appendParam(url,"created_since", createdSinceTimestamp);
@@ -77,7 +77,7 @@ public ResultSet<EmailCampaignTrackingBounce> getBounces(String accessToken, Str
 		ResultSet<EmailCampaignTrackingBounce> bounces = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_BOUNCES, emailCampaignId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_BOUNCES, emailCampaignId));
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
 			}
@@ -118,7 +118,7 @@ public ResultSet<EmailCampaignTrackingClick> getClicks(String accessToken, Strin
 		ResultSet<EmailCampaignTrackingClick> clicks = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_CLICKS, emailCampaignId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_CLICKS, emailCampaignId));
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
 			}
@@ -165,7 +165,7 @@ public ResultSet<EmailCampaignTrackingForward> getForwards(String accessToken, S
 		ResultSet<EmailCampaignTrackingForward> forwards = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_FORWARDS, emailCampaignId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_FORWARDS, emailCampaignId));
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
 			}
@@ -211,7 +211,7 @@ public ResultSet<EmailCampaignTrackingOpen> getOpens(String accessToken, String
 		ResultSet<EmailCampaignTrackingOpen> opens = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_OPENS, emailCampaignId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_OPENS, emailCampaignId));
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
 			}
@@ -257,7 +257,7 @@ public ResultSet<EmailCampaignTrackingSend> getSends(String accessToken, String
 		ResultSet<EmailCampaignTrackingSend> sends = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_SENDS, emailCampaignId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_SENDS, emailCampaignId));
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
 			}
@@ -304,7 +304,7 @@ public ResultSet<EmailCampaignTrackingUnsubscribe> getUnsubscribes(String access
 		ResultSet<EmailCampaignTrackingUnsubscribe> unsubscribes = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_UNSUBSCRIBES, emailCampaignId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_UNSUBSCRIBES, emailCampaignId));
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
 			}
@@ -353,7 +353,7 @@ public ResultSet<EmailCampaignTrackingClick> getClicksByLinkId(String accessToke
 		ResultSet<EmailCampaignTrackingClick> clicks = null;
 		try {
 			StringBuilder sb = new StringBuilder();
-			sb.append(Config.Endpoints.BASE_URL).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_CLICKS_BY_LINK, emailCampaignId, linkId));
+			sb.append(Config.instance().getBaseUrl()).append(String.format(Config.Endpoints.EMAILCAMPAIGNS_TRACKING_CLICKS_BY_LINK, emailCampaignId, linkId));
 
 			if (limit != null) {
 				sb.append("?limit=").append(limit);
diff --git a/src/main/java/com/constantcontact/services/eventspot/EventSpotService.java b/src/main/java/com/constantcontact/services/eventspot/EventSpotService.java
index d366a5bb..f7ff1bce 100644
--- a/src/main/java/com/constantcontact/services/eventspot/EventSpotService.java
+++ b/src/main/java/com/constantcontact/services/eventspot/EventSpotService.java
@@ -37,7 +37,7 @@ public ResultSet<Event> getEvents(String accessToken, Integer limit) throws Cons
         ResultSet<Event> events = null;
         try {
             String url = paginateUrl(
-                    String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.EVENTS), limit);
+                    String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.EVENTS), limit);
 
             CUrlResponse response = getRestClient().get(url, accessToken);
 
@@ -69,7 +69,7 @@ public Event getEvent(String accessToken, String eventId) throws
             ConstantContactServiceException {
         Event event = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ID, eventId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -100,7 +100,7 @@ public Event getEvent(String accessToken, String eventId) throws
     public Event addEvent(String accessToken, Event event) throws ConstantContactServiceException {
         Event newEvent = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.EVENTS);
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.EVENTS);
             String json = event.toJSON();
 
             CUrlResponse response = getRestClient().post(url, accessToken, json);
@@ -131,7 +131,7 @@ public Event addEvent(String accessToken, Event event) throws ConstantContactSer
     public Event updateEvent(String accessToken, Event event) throws ConstantContactServiceException {
         Event updatedEvent = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ID, event.getId()));
             String json = event.toJSON();
 
@@ -163,7 +163,7 @@ public Event updateEvent(String accessToken, Event event) throws ConstantContact
 	 */
     public boolean updateEventStatus(String accessToken, String eventId, String status) throws ConstantContactServiceException {
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ID, eventId));
 
             EventUpdateStatus eventUpdateStatus = new EventUpdateStatus(status);
@@ -197,7 +197,7 @@ public boolean updateEventStatus(String accessToken, String eventId, String stat
     public List<EventFee> getEventFees(String accessToken, String eventId) throws ConstantContactServiceException {
         List<EventFee> eventFees = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_FEES, eventId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -231,7 +231,7 @@ public List<EventFee> getEventFees(String accessToken, String eventId) throws Co
     public EventFee getEventFee(String accessToken, String eventId, String feeId) throws ConstantContactServiceException {
         EventFee eventFee = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_FEE_ID, eventId, feeId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -265,7 +265,7 @@ public EventFee getEventFee(String accessToken, String eventId, String feeId) th
     public EventFee addEventFee(String accessToken, String eventId, EventFee eventFee) throws ConstantContactServiceException {
         EventFee newEventFee = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_FEES, eventId));
             String json = eventFee.toJSON();
 
@@ -299,7 +299,7 @@ public EventFee addEventFee(String accessToken, String eventId, EventFee eventFe
     public EventFee updateEventFee(String accessToken, String eventId, EventFee eventFee) throws ConstantContactServiceException {
         EventFee newEventFee = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_FEE_ID, eventId, eventFee.getId()));
             String json = eventFee.toJSON();
 
@@ -332,7 +332,7 @@ public EventFee updateEventFee(String accessToken, String eventId, EventFee even
     
     public boolean deleteEventFee(String accessToken, String eventId, String eventFeeId) throws ConstantContactServiceException {
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_FEE_ID, eventId, eventFeeId));
 
             CUrlResponse response = getRestClient().delete(url, accessToken);
@@ -361,7 +361,7 @@ public boolean deleteEventFee(String accessToken, String eventId, String eventFe
     public List<Promocode> getEventPromocodes(String accessToken, String eventId) throws ConstantContactServiceException {
         List<Promocode> promocodes = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_PROMOCODES, eventId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -395,7 +395,7 @@ public List<Promocode> getEventPromocodes(String accessToken, String eventId) th
     public Promocode getEventPromocode(String accessToken, String eventId, String promocodeId) throws ConstantContactServiceException {
         Promocode promocode = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_PROMOCODE_ID, eventId, promocodeId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -429,7 +429,7 @@ public Promocode getEventPromocode(String accessToken, String eventId, String pr
     public Promocode addEventPromocode(String accessToken, String eventId, Promocode promocode) throws ConstantContactServiceException {
         Promocode newPromocode = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_PROMOCODES, eventId));
             String json = promocode.toJSON();
 
@@ -463,7 +463,7 @@ public Promocode addEventPromocode(String accessToken, String eventId, Promocode
     public Promocode updateEventPromocode(String accessToken, String eventId, Promocode promocode) throws ConstantContactServiceException {
         Promocode newPromocode = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_PROMOCODE_ID, eventId, promocode.getId()));
             String json = promocode.toJSON();
 
@@ -496,7 +496,7 @@ public Promocode updateEventPromocode(String accessToken, String eventId, Promoc
     
     public boolean deleteEventPromocode(String accessToken, String eventId, String promocodeId) throws ConstantContactServiceException {
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_PROMOCODE_ID, eventId, promocodeId));
 
             CUrlResponse response = getRestClient().delete(url, accessToken);
@@ -527,7 +527,7 @@ public ResultSet<Registrant> getEventRegistrants(String accessToken, String even
         ResultSet<Registrant> eventRegistrants = null;
         try {
             String url = paginateUrl(
-                    String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.EVENT_REGISTRANTS, eventId)), limit);
+                    String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.EVENT_REGISTRANTS, eventId)), limit);
 
             CUrlResponse response = getRestClient().get(url, accessToken);
 
@@ -560,7 +560,7 @@ public ResultSet<Registrant> getEventRegistrants(String accessToken, String even
     public RegistrantDetails getEventRegistrant(String accessToken,String eventId, String registrantId) throws ConstantContactServiceException {
         RegistrantDetails registrant = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_REGISTRANT_ID, eventId, registrantId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -593,7 +593,7 @@ public RegistrantDetails getEventRegistrant(String accessToken,String eventId, S
     public List<EventItem> getEventItems(String accessToken, String eventId) throws ConstantContactServiceException {
         List<EventItem> eventItems = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEMS, eventId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -627,7 +627,7 @@ public List<EventItem> getEventItems(String accessToken, String eventId) throws
     public EventItem getEventItem(String accessToken, String eventId, String itemId) throws ConstantContactServiceException {
         EventItem eventItem = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEM_ID, eventId, itemId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -661,7 +661,7 @@ public EventItem getEventItem(String accessToken, String eventId, String itemId)
     public EventItem addEventItem(String accessToken, String eventId, EventItem eventItem) throws ConstantContactServiceException {
         EventItem newEventItem = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEMS, eventId));
             String json = eventItem.toJSON();
 
@@ -695,7 +695,7 @@ public EventItem addEventItem(String accessToken, String eventId, EventItem even
     public EventItem updateEventItem(String accessToken, String eventId, EventItem item) throws ConstantContactServiceException {
         EventItem eventItem = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEM_ID, eventId, item.getId()));
             String json = item.toJSON();
 
@@ -728,7 +728,7 @@ public EventItem updateEventItem(String accessToken, String eventId, EventItem i
     
     public boolean deleteEventItem(String accessToken, String eventId, String itemId) throws ConstantContactServiceException {
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEM_ID, eventId, itemId));
 
             CUrlResponse response = getRestClient().delete(url, accessToken);
@@ -758,7 +758,7 @@ public boolean deleteEventItem(String accessToken, String eventId, String itemId
     public List<EventItemAttribute> getEventItemAttributes(String accessToken, String eventId, String itemId) throws ConstantContactServiceException {
         List<EventItemAttribute> eventItemAttributes = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEM_ATTRIBUTES, eventId, itemId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -794,7 +794,7 @@ public EventItemAttribute getEventItemAttribute(String accessToken, String event
             ConstantContactServiceException {
         EventItemAttribute eventItemAttribute = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEM_ATTRIBUTE_ID, eventId, itemId, itemAttributeId));
 
             CUrlResponse response = getRestClient().get(url, accessToken);
@@ -830,7 +830,7 @@ public EventItemAttribute addEventItemAttribute(String accessToken, String event
             ConstantContactServiceException {
         EventItemAttribute eventItemAttribute = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEM_ATTRIBUTES, eventId, itemId));
             String json = itemAttribute.toJSON();
 
@@ -866,7 +866,7 @@ public EventItemAttribute updateEventItemAttribute(String accessToken, String ev
             ConstantContactServiceException {
         EventItemAttribute eventItemAttribute = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEM_ATTRIBUTE_ID, eventId, itemId, itemAttribute.getId()));
             String json = itemAttribute.toJSON();
 
@@ -901,7 +901,7 @@ public EventItemAttribute updateEventItemAttribute(String accessToken, String ev
     public boolean deleteEventItemAttribute(String accessToken, String eventId, String itemId, String itemAttributeId) throws
             ConstantContactServiceException {
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                     String.format(Config.Endpoints.EVENT_ITEM_ATTRIBUTE_ID, eventId, itemId, itemAttributeId));
 
             CUrlResponse response = getRestClient().delete(url, accessToken);
diff --git a/src/main/java/com/constantcontact/services/library/MyLibraryService.java b/src/main/java/com/constantcontact/services/library/MyLibraryService.java
index 445b90db..cfb1cf0b 100644
--- a/src/main/java/com/constantcontact/services/library/MyLibraryService.java
+++ b/src/main/java/com/constantcontact/services/library/MyLibraryService.java
@@ -37,7 +37,7 @@ public MyLibrarySummary getLibraryInfo(String accessToken) throws ConstantContac
 
         MyLibrarySummary summary = null;
 
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.LIBRARY_INFO);
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.LIBRARY_INFO);
         CUrlResponse response = getRestClient().get(url, accessToken);
 
         if (response.hasData()) {
@@ -74,7 +74,7 @@ public ResultSet<MyLibraryFolder> getLibraryFolders(String accessToken, MyLibrar
 
         // Construct access URL
         String url = paginateUrl(
-                String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.LIBRARY_FOLDERS), limit);
+                String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.LIBRARY_FOLDERS), limit);
 
         if (sortBy != null) {
             try {
@@ -123,7 +123,7 @@ public ResultSet<MyLibraryFolder> getLibraryFolders(String accessToken, MyLibrar
     public MyLibraryFolder addLibraryFolder(String accessToken, MyLibraryFolder folder) throws ConstantContactServiceException {
         MyLibraryFolder newFolder = null;
         try {
-            String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.LIBRARY_FOLDERS);
+            String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.LIBRARY_FOLDERS);
             String json = folder.toJSON();
 
             CUrlResponse response = getRestClient().post(url, accessToken, json);
@@ -164,7 +164,7 @@ public MyLibraryFolder addLibraryFolder(String accessToken, MyLibraryFolder fold
     public MyLibraryFolder getLibraryFolder(String accessToken, String folderId) throws ConstantContactServiceException {
         MyLibraryFolder folder = null;
 
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                 String.format(Config.Endpoints.LIBRARY_FOLDER, folderId));
 
         // Get REST response
@@ -210,7 +210,7 @@ public MyLibraryFolder updateLibraryFolder(String accessToken, MyLibraryFolder f
 
         MyLibraryFolder updateFolder = null;
 
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                 String.format(Config.Endpoints.LIBRARY_FOLDER, folder.getId()));
         String json;
         try {
@@ -260,7 +260,7 @@ public MyLibraryFolder updateLibraryFolder(String accessToken, MyLibraryFolder f
      *             {@link ConstantContactException#getErrorInfo()}
      */
     public void deleteLibraryFolder(String accessToken, String folderId) throws ConstantContactServiceException {
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                 String.format(Config.Endpoints.LIBRARY_FOLDER, folderId));
 
         // Get REST response
@@ -291,7 +291,7 @@ public ResultSet<MyLibraryFile> getLibraryTrash(String accessToken, MyLibraryFil
         ResultSet<MyLibraryFile> files = null;
         
           // Construct access URL
-          String url = paginateUrl(String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.LIBRARY_FOLDER_TRASH), limit);
+          String url = paginateUrl(String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.LIBRARY_FOLDER_TRASH), limit);
 
           try {
               if (type != null) {
@@ -335,7 +335,7 @@ public ResultSet<MyLibraryFile> getLibraryTrash(String accessToken, MyLibraryFil
      *             Detailed error message (if present) can be seen by calling {@link ConstantContactException#getErrorInfo()}
      */
     public void deleteLibraryTrash(String accessToken) throws ConstantContactServiceException{
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.LIBRARY_FOLDER_TRASH);
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.LIBRARY_FOLDER_TRASH);
 
         // Get REST response
         CUrlResponse response = getRestClient().delete(url, accessToken);
@@ -366,7 +366,7 @@ public ResultSet<MyLibraryFile> getLibraryFiles(String accessToken, MyLibraryFil
         ResultSet<MyLibraryFile> files = null;
         
         // Construct access URL
-        String url = paginateUrl(String.format("%1$s%2$s", Config.Endpoints.BASE_URL, Config.Endpoints.LIBRARY_FILES), limit);
+        String url = paginateUrl(String.format("%1$s%2$s", Config.instance().getBaseUrl(), Config.Endpoints.LIBRARY_FILES), limit);
 
         try {
             if (type != null) {
@@ -418,7 +418,7 @@ public ResultSet<MyLibraryFile> getLibraryFilesByFolder(String accessToken, Stri
         ResultSet<MyLibraryFile> files = null;
         
         // Construct access URL
-        String url = paginateUrl(String.format("%1$s%2$s", Config.Endpoints.BASE_URL, String.format(Config.Endpoints.LIBRARY_FILES_BY_FOLDER, folderId)), limit);
+        String url = paginateUrl(String.format("%1$s%2$s", Config.instance().getBaseUrl(), String.format(Config.Endpoints.LIBRARY_FILES_BY_FOLDER, folderId)), limit);
 
         // Get REST response
         CUrlResponse response = getRestClient().get(url, accessToken);
@@ -453,7 +453,7 @@ public ResultSet<MyLibraryFile> getLibraryFilesByFolder(String accessToken, Stri
     public MyLibraryFile getLibraryFile(String accessToken, String fileId) throws ConstantContactServiceException{
         MyLibraryFile file = null;
 
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                 String.format(Config.Endpoints.LIBRARY_FILE, fileId));
 
         // Get REST response
@@ -490,7 +490,7 @@ public MyLibraryFile getLibraryFile(String accessToken, String fileId) throws Co
     public MyLibraryFile updateLibraryFile(String accessToken, MyLibraryFile file, Boolean includePayload) throws ConstantContactServiceException {
         MyLibraryFile updateFile = null;
 
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                 String.format(Config.Endpoints.LIBRARY_FILE, file.getId()));
         String json;
         try {
@@ -535,7 +535,7 @@ public MyLibraryFile updateLibraryFile(String accessToken, MyLibraryFile file, B
      *             Detailed error message (if present) can be seen by calling {@link ConstantContactException#getErrorInfo()}
      */
     public void deleteLibraryFile(String accessToken, String fileId) throws ConstantContactServiceException {
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                 String.format(Config.Endpoints.LIBRARY_FILE, fileId));
 
         // Get REST response
@@ -566,7 +566,7 @@ public List<UploadStatus> getLibraryFilesUploadStatus(String accessToken, String
             filesToGet.append(fileId[i]);
         }
      
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                 String.format(Config.Endpoints.LIBRARY_FILE_UPLOAD_STATUS, filesToGet));
         
         // Get REST response
@@ -602,7 +602,7 @@ public List<MoveResults> moveLibraryFiles(String accessToken, String folderId, S
 
         List<MoveResults> movedResults = null;
      
-        String url = String.format("%1$s%2$s", Config.Endpoints.BASE_URL,
+        String url = String.format("%1$s%2$s", Config.instance().getBaseUrl(),
                 String.format(Config.Endpoints.LIBRARY_FILE_MOVE, folderId));
         
         // Get REST response
@@ -632,7 +632,7 @@ public List<MoveResults> moveLibraryFiles(String accessToken, String folderId, S
      */
     public String addLibraryFile(String accessToken, MultipartBody request) throws ConstantContactServiceException {
 
-        String url = Config.Endpoints.BASE_URL + Config.Endpoints.LIBRARY_FILES;
+        String url = Config.instance().getBaseUrl() + Config.Endpoints.LIBRARY_FILES;
         CUrlResponse response = getRestClient().postMultipart(url, accessToken, request);
 
         checkForResponseError(response, url);
diff --git a/src/main/java/com/constantcontact/util/Config.java b/src/main/java/com/constantcontact/util/Config.java
index 8e6281c7..6be7e33e 100644
--- a/src/main/java/com/constantcontact/util/Config.java
+++ b/src/main/java/com/constantcontact/util/Config.java
@@ -2,12 +2,6 @@
 
 import com.constantcontact.ConstantContact;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
 /**
  * Main Configuration structure in Constant Contact.
  *
@@ -15,16 +9,50 @@
  */
 public final class Config {
 
-    public static final String CTCT_SDK_VERSION;
+    private static Config instance;
+    
+    /**
+     * SDK Version
+     */
+    private String ctctSdkVersion;
+    
+    /**
+     * API access URL Host.
+     */
+    private String baseUrl = "https://api.constantcontact.com";
+
+    public String getCtctSdkVersion() {
+        return ctctSdkVersion;
+    }
+
+    public void setCtctSdkVersion(String ctctSdkVersion) {
+        this.ctctSdkVersion = ctctSdkVersion;
+    }
+
+    public String getBaseUrl() {
+        return baseUrl;
+    }
+
+    public void setBaseUrl(String baseUrl) {
+        this.baseUrl = baseUrl;
+    }
 
-    static {
-        /*
-	     * Configures CTCT_SDK_VERSION
-	     */
+    private Config() {
         Package aPackage = ConstantContact.class.getPackage();
-        CTCT_SDK_VERSION = aPackage.getImplementationVersion();
+        ctctSdkVersion = aPackage.getImplementationVersion();
     }
 
+    /**
+     * Singleton
+     * @return
+     */
+    public static Config instance() {
+        if (instance == null){
+            instance = new Config();
+        }
+        return instance;
+    }
+    
     /**
      * Contains a list with all REST endpoints.
      *
@@ -32,228 +60,185 @@ public final class Config {
      */
     public static final class Endpoints {
 
-        /**
-         * API access URL Host.
-         */
-        public static final String BASE_URL_HOST;
-
-		static {
-			/**
-			 * Configures BASE_URL.  Value can be loaded from property "constantcontact.api.dest.baseurl"
-			 * in properties file "dest.properties".  Method will defer to default value if file or property is not present.
-			 * Throws an IOException if the file is not readable.
-			 */
-			try {
-				Properties prop = new Properties();
-				InputStream in;
-				String baseUrl = "https://api.constantcontact.com";
-		
-				in = Config.class.getClassLoader().getResourceAsStream("ctct_api.properties");
-	
-				if (in != null) {
-					prop.load(in);
-					try {
-						in.close();
-					} catch (IOException ignoreMe) {
-					}
-				}
-
-				String baseUrlConfiguration = prop.getProperty("constantcontact.api.dest.baseurl");
-				if (baseUrlConfiguration != null) {
-					baseUrl = baseUrlConfiguration;
-				}
-		
-				BASE_URL_HOST = baseUrl;
-			} catch (IOException e) {
-				throw new IllegalStateException("Cannot configure connection to Constant Contact", e);
-			}
-		}
-
-
-        /**
-         * API access URL.
-         */
-        public static final String BASE_URL = BASE_URL_HOST + "/" + "v2/";
-
         /**
          * Access a contact.
          */
-        public static final String CONTACT = "contacts/%1$s";
+        public static final String CONTACT = "/v2/contacts/%1$s";
 
         /**
          * Get all contacts.
          */
-        public static final String CONTACTS = "contacts";
+        public static final String CONTACTS = "/v2/contacts";
 
         /**
          * Get all lists.
          */
-        public static final String LISTS = "lists";
+        public static final String LISTS = "/v2/lists";
 
         /**
          * Access a specified list.
          */
-        public static final String LIST = "lists/%1$s";
+        public static final String LIST = "/v2/lists/%1$s";
 
         /**
          * Get the list of contacts from a list.
          */
-        public static final String LIST_CONTACTS = "lists/%1$s/contacts";
+        public static final String LIST_CONTACTS = "/v2/lists/%1$s/contacts";
 
         /**
          * Get contact lists.
          */
-        public static final String CONTACT_LISTS = "contacts/%1$s/lists";
+        public static final String CONTACT_LISTS = "/v2/contacts/%1$s/lists";
 
         /**
          * Get a list from contact lists.
          */
-        public static final String CONTACT_LIST = "contacts/%1$s/lists/%2$s";
+        public static final String CONTACT_LIST = "/v2/contacts/%1$s/lists/%2$s";
 
         /**
          * Get campaigns.
          */
-        public static final String EMAILCAMPAIGNS = "emailmarketing/campaigns";
+        public static final String EMAILCAMPAIGNS = "/v2/emailmarketing/campaigns";
 
         /**
          * Access a campaign.
          */
-        public static final String EMAILCAMPAIGN_ID = "emailmarketing/campaigns/%1$s";
+        public static final String EMAILCAMPAIGN_ID = "/v2/emailmarketing/campaigns/%1$s";
 
         /**
          * Access a campaign. This is for PUT operations.
          */
-        public static final String EMAILCAMPAIGNS_ID = "emailmarketing/campaigns/%1$s";
+        public static final String EMAILCAMPAIGNS_ID = "/v2/emailmarketing/campaigns/%1$s";
 
         /**
          * Get verified email addresses.
          */
-        public static final String VERIFIEDEMAILADDRESSES = "account/verifiedemailaddresses";
+        public static final String VERIFIEDEMAILADDRESSES = "/v2/account/verifiedemailaddresses";
 
         /**
          * Access a campaign schedule.
          */
-        public static final String EMAILCAMPAIGNS_SCHEDULES_ID = "emailmarketing/campaigns/%1$s/schedules/%2$s";
+        public static final String EMAILCAMPAIGNS_SCHEDULES_ID = "/v2/emailmarketing/campaigns/%1$s/schedules/%2$s";
 
         /**
          * Access all campaign schedules.
          */
-        public static final String EMAILCAMPAIGNS_SCHEDULES_ID_ALL = "emailmarketing/campaigns/%1$s/schedules";
+        public static final String EMAILCAMPAIGNS_SCHEDULES_ID_ALL = "/v2/emailmarketing/campaigns/%1$s/schedules";
 
         /**
          * Access email campaign tracking reports summary for a given email campaign.
          */
-        public static final String EMAILCAMPAIGNS_TRACKING_REPORTS_SUMMARY = "emailmarketing/campaigns/%1$s/tracking/reports/summary";
+        public static final String EMAILCAMPAIGNS_TRACKING_REPORTS_SUMMARY = "/v2/emailmarketing/campaigns/%1$s/tracking/reports/summary";
 
         /**
          * Access email campaign tracking bounces for a given email campaign.
          */
-        public static final String EMAILCAMPAIGNS_TRACKING_BOUNCES = "emailmarketing/campaigns/%1$s/tracking/bounces";
+        public static final String EMAILCAMPAIGNS_TRACKING_BOUNCES = "/v2/emailmarketing/campaigns/%1$s/tracking/bounces";
 
         /**
          * Access email campaign tracking clicks for a given email campaign.
          */
-        public static final String EMAILCAMPAIGNS_TRACKING_CLICKS = "emailmarketing/campaigns/%1$s/tracking/clicks";
+        public static final String EMAILCAMPAIGNS_TRACKING_CLICKS = "/v2/emailmarketing/campaigns/%1$s/tracking/clicks";
 
         /**
          * Access email campaign tracking forwards for a given email campaign.
          */
-        public static final String EMAILCAMPAIGNS_TRACKING_FORWARDS = "emailmarketing/campaigns/%1$s/tracking/forwards";
+        public static final String EMAILCAMPAIGNS_TRACKING_FORWARDS = "/v2/emailmarketing/campaigns/%1$s/tracking/forwards";
 
         /**
          * Access email campaign tracking opens for a given email campaign.
          */
-        public static final String EMAILCAMPAIGNS_TRACKING_OPENS = "emailmarketing/campaigns/%1$s/tracking/opens";
+        public static final String EMAILCAMPAIGNS_TRACKING_OPENS = "/v2/emailmarketing/campaigns/%1$s/tracking/opens";
 
         /**
          * Access email campaign tracking sends for a given email campaign.
          */
-        public static final String EMAILCAMPAIGNS_TRACKING_SENDS = "emailmarketing/campaigns/%1$s/tracking/sends";
+        public static final String EMAILCAMPAIGNS_TRACKING_SENDS = "/v2/emailmarketing/campaigns/%1$s/tracking/sends";
 
         /**
          * Access email campaign tracking unsubscribes for a given email campaign.
          */
-        public static final String EMAILCAMPAIGNS_TRACKING_UNSUBSCRIBES = "emailmarketing/campaigns/%1$s/tracking/unsubscribes";
+        public static final String EMAILCAMPAIGNS_TRACKING_UNSUBSCRIBES = "/v2/emailmarketing/campaigns/%1$s/tracking/unsubscribes";
 
         /**
          * Access email campaign tracking clicks by link for a given email campaign.
          */
-        public static final String EMAILCAMPAIGNS_TRACKING_CLICKS_BY_LINK = "emailmarketing/campaigns/%1$s/tracking/clicks/%2$s";
+        public static final String EMAILCAMPAIGNS_TRACKING_CLICKS_BY_LINK = "/v2/emailmarketing/campaigns/%1$s/tracking/clicks/%2$s";
 
         /**
          * Access contact tracking reports summary for a given contact.
          */
-        public static final String CONTACTS_TRACKING_REPORTS_SUMMARY = "contacts/%1$s/tracking/reports/summary";
+        public static final String CONTACTS_TRACKING_REPORTS_SUMMARY = "/v2/contacts/%1$s/tracking/reports/summary";
 
         /**
          * Access contact tracking reports summary for a given contact.
          */
-        public static final String CONTACTS_TRACKING_REPORTS_BY_CAMPAIGN_SUMMARY = "contacts/%1$s/tracking/reports/summaryByCampaign";
+        public static final String CONTACTS_TRACKING_REPORTS_BY_CAMPAIGN_SUMMARY = "/v2/contacts/%1$s/tracking/reports/summaryByCampaign";
 
         /**
          * Access contact tracking activities for a given contact.
          */
-        public static final String CONTACTS_TRACKING_ALL = "contacts/%1$s/tracking/";
+        public static final String CONTACTS_TRACKING_ALL = "/v2/contacts/%1$s/tracking/";
 
         /**
          * Access contact tracking bounces for a given contact.
          */
-        public static final String CONTACTS_TRACKING_BOUNCES = "contacts/%1$s/tracking/bounces";
+        public static final String CONTACTS_TRACKING_BOUNCES = "/v2/contacts/%1$s/tracking/bounces";
 
         /**
          * Access contact tracking clicks for a given contact.
          */
-        public static final String CONTACTS_TRACKING_CLICKS = "contacts/%1$s/tracking/clicks";
+        public static final String CONTACTS_TRACKING_CLICKS = "/v2/contacts/%1$s/tracking/clicks";
 
         /**
          * Access contact tracking forwards for a given contact.
          */
-        public static final String CONTACTS_TRACKING_FORWARDS = "contacts/%1$s/tracking/forwards";
+        public static final String CONTACTS_TRACKING_FORWARDS = "/v2/contacts/%1$s/tracking/forwards";
 
         /**
          * Access contact tracking opens for a given contact.
          */
-        public static final String CONTACTS_TRACKING_OPENS = "contacts/%1$s/tracking/opens";
+        public static final String CONTACTS_TRACKING_OPENS = "/v2/contacts/%1$s/tracking/opens";
 
         /**
          * Access contact tracking sends for a given contact.
          */
-        public static final String CONTACTS_TRACKING_SENDS = "contacts/%1$s/tracking/sends";
+        public static final String CONTACTS_TRACKING_SENDS = "/v2/contacts/%1$s/tracking/sends";
 
         /**
          * Access contact tracking unsubscribes for a given contact.
          */
-        public static final String CONTACTS_TRACKING_UNSUBSCRIBES = "contacts/%1$s/tracking/unsubscribes";
+        public static final String CONTACTS_TRACKING_UNSUBSCRIBES = "/v2/contacts/%1$s/tracking/unsubscribes";
 
         /**
          * Endpoint for the bulk contacts upload.
          */
-        public static final String ACTIVITIES_ADD_CONTACTS = "activities/addcontacts";
+        public static final String ACTIVITIES_ADD_CONTACTS = "/v2/activities/addcontacts";
 
         /**
          * Endpoint for the bulk contacts remove from lists.
          */
-        public static final String ACTIVITIES_REMOVE_FROM_LISTS = "activities/removefromlists";
+        public static final String ACTIVITIES_REMOVE_FROM_LISTS = "/v2/activities/removefromlists";
 
         /**
          * Endpoint for the bulk clear lists.
          */
-        public static final String ACTIVITIES_CLEAR_LISTS = "activities/clearlists";
+        public static final String ACTIVITIES_CLEAR_LISTS = "/v2/activities/clearlists";
 
         /**
          * Endpoint for the bulk export contacts.
          */
-        public static final String ACTIVITIES_EXPORT_CONTACTS = "activities/exportcontacts";
+        public static final String ACTIVITIES_EXPORT_CONTACTS = "/v2/activities/exportcontacts";
 
         /**
          * Endpoint for the bulk activities retrieve.
          */
-        public static final String ACTIVITIES = "activities";
+        public static final String ACTIVITIES = "/v2/activities";
 
-        public static final String LIBRARY_INFO = "library/info";
-        public static final String LIBRARY_FILES = "library/files";
-        public static final String LIBRARY_FILES_BY_FOLDER = "library/folders/%1$s/files";
-        public static final String LIBRARY_FOLDERS = "library/folders";
+        public static final String LIBRARY_INFO = "/v2/library/info";
+        public static final String LIBRARY_FILES = "/v2/library/files";
+        public static final String LIBRARY_FILES_BY_FOLDER = "/v2/library/folders/%1$s/files";
+        public static final String LIBRARY_FOLDERS = "/v2/library/folders";
 
         public static final String LIBRARY_FOLDER = LIBRARY_FOLDERS + "/%1$s";
         public static final String LIBRARY_FOLDER_TRASH = LIBRARY_FOLDERS + "/trash/files";
@@ -261,12 +246,12 @@ public static final class Endpoints {
         public static final String LIBRARY_FILE = LIBRARY_FILES + "/%1$s";
         public static final String LIBRARY_FILE_UPLOAD_STATUS = LIBRARY_FILES + "/uploadstatus/%1$s";
 
-        public static final String LIBRARY_FILE_MOVE = "library/folders/%1$s/files";
+        public static final String LIBRARY_FILE_MOVE = "/v2/library/folders/%1$s/files";
 
         /**
          * Endpoint for the list of events.
          */
-        public static final String EVENTS = "eventspot/events/";
+        public static final String EVENTS = "/v2/eventspot/events/";
 
         /**
          * Endpoint for accessing a single event.
@@ -326,70 +311,8 @@ public static final class Endpoints {
         /**
          * Endpoint for accessing the account info.
          */
-        public static final String ACCOUNT_INFO = "account/info";
-
-        /**
-         * Default constructor.<br/>
-         * Made private to prevent instantiation.<br/>
-         * This is unreachable from the outside, since current class is used only as a repository for constants.
-         */
-        private Endpoints() {
-        }
-    }
-
-    /**
-     * OAuth2 Authorization related configuration options. <br/>
-     * These are used for the authorize part of the authentication flow.
-     *
-     * @author ConstantContact
-     */
-    public static final class Auth {
-
-        /**
-         * Authentication base URL.
-         */
-        public static final String BASE_URL = "https://oauth2.constantcontact.com/oauth2/";
-
-        /**
-         * Query code. <br/>
-         * This should be used in server-type authentication handshake.
-         */
-        public static final String RESPONSE_TYPE_CODE = "code";
-
-        /**
-         * Query token. <br/>
-         * This should be used in client-type authentication handshake.<br/>
-         * This is what we use.
-         */
-        public static final String RESPONSE_TYPE_TOKEN = "token";
-
-        /**
-         * Query authorization code grant type.
-         */
-        public static final String AUTHORIZATION_CODE_GRANT_TYPE = "authorization_code";
-
-        /**
-         * The authorization endpoint.
-         */
-        public static final String AUTHORIZATION_ENDPOINT = "oauth/siteowner/authorize";
-
-        /**
-         * The token fetch endpoint.
-         */
-        public static final String TOKEN_ENDPOINT = "oauth/token";
-
-        /**
-         * Request host.
-         */
-        public static final String HOST = "oauth2.constantcontact.com";
+        public static final String ACCOUNT_INFO = "/v2/account/info";
 
-        /**
-         * Default constructor.<br/>
-         * Made private to prevent instantiation.<br/>
-         * This is unreachable from the outside, since current class is used only as a repository for constants.
-         */
-        private Auth() {
-        }
     }
 
     /**
@@ -624,138 +547,4 @@ private HTTP_CODES() {
      */
     public static final String UTF_8 = "UTF-8";
 
-    /**
-     * Collumn names in Constant Contact Activities flow.<br/>
-     * <p/>
-     * These are used for {@link com.constantcontact.components.activities.contacts.request.ExportContactsRequest} and {@link com.constantcontact
-     * .components.activities.contacts.request.AddContactsRequest} requests in {@link com.constantcontact.services.activities.BulkActivitiesService}.
-     *
-     * @author ConstantContact
-     */
-
-    public static final class COLUMN_NAMES {
-
-        public static final String EMAIL = "EMAIL";
-
-        public static final String FIRST_NAME = "FIRST NAME";
-
-        public static final String MIDDLE_NAME = "MIDDLE NAME";
-
-        public static final String LAST_NAME = "LAST NAME";
-
-        public static final String JOB_TITLE = "JOB TITLE";
-
-        public static final String COMPANY_NAME = "COMPANY NAME";
-
-        public static final String WORK_PHONE = "WORK PHONE";
-
-        public static final String HOME_PHONE = "HOME PHONE";
-
-        public static final String ADDRESS1 = "ADDRESS LINE 1";
-
-        public static final String ADDRESS2 = "ADDRESS LINE 2";
-
-        public static final String ADDRESS3 = "ADDRESS LINE 3";
-
-        public static final String CITY = "CITY";
-
-        public static final String STATE = "STATE";
-
-        public static final String STATE_PROVINCE = "US STATE/CA PROVINCE";
-
-        public static final String COUNTRY = "COUNTRY";
-
-        public static final String POSTAL_CODE = "ZIP/POSTAL CODE";
-
-        public static final String SUB_POSTAL_CODE = "SUB ZIP/POSTAL CODE";
-
-        public static final String CUSTOM_FIELD_1 = "CUSTOM FIELD 1";
-
-        public static final String CUSTOM_FIELD_2 = "CUSTOM FIELD 2";
-
-        public static final String CUSTOM_FIELD_3 = "CUSTOM FIELD 3";
-
-        public static final String CUSTOM_FIELD_4 = "CUSTOM FIELD 4";
-
-        public static final String CUSTOM_FIELD_5 = "CUSTOM FIELD 5";
-
-        public static final String CUSTOM_FIELD_6 = "CUSTOM FIELD 6";
-
-        public static final String CUSTOM_FIELD_7 = "CUSTOM FIELD 7";
-
-        public static final String CUSTOM_FIELD_8 = "CUSTOM FIELD 8";
-
-        public static final String CUSTOM_FIELD_9 = "CUSTOM FIELD 9";
-
-        public static final String CUSTOM_FIELD_10 = "CUSTOM FIELD 10";
-
-        public static final String CUSTOM_FIELD_11 = "CUSTOM FIELD 11";
-
-        public static final String CUSTOM_FIELD_12 = "CUSTOM FIELD 12";
-
-        public static final String CUSTOM_FIELD_13 = "CUSTOM FIELD 13";
-
-        public static final String CUSTOM_FIELD_14 = "CUSTOM FIELD 14";
-
-        public static final String CUSTOM_FIELD_15 = "CUSTOM FIELD 15";
-
-        /**
-         * Default constructor.<br/>
-         * Made private to prevent instantiation.<br/>
-         * This is unreachable from the outside, since current class is used only as a repository for constants.
-         */
-        private COLUMN_NAMES() {
-
-        }
-
-        /**
-         * Gets all defined collumn names.
-         *
-         * @return A List of String representing the list of all collumn names.
-         */
-        public static final List<String> getAllCollums() {
-            List<String> columnList = new ArrayList<String>();
-            columnList.add(EMAIL);
-            columnList.add(FIRST_NAME);
-            columnList.add(MIDDLE_NAME);
-            columnList.add(LAST_NAME);
-            columnList.add(JOB_TITLE);
-            columnList.add(COMPANY_NAME);
-            columnList.add(WORK_PHONE);
-            columnList.add(HOME_PHONE);
-            columnList.add(ADDRESS1);
-            columnList.add(ADDRESS2);
-            columnList.add(ADDRESS3);
-            columnList.add(CITY);
-            columnList.add(STATE);
-            columnList.add(STATE_PROVINCE);
-            columnList.add(COUNTRY);
-            columnList.add(POSTAL_CODE);
-            columnList.add(SUB_POSTAL_CODE);
-            columnList.add(CUSTOM_FIELD_1);
-            columnList.add(CUSTOM_FIELD_2);
-            columnList.add(CUSTOM_FIELD_3);
-            columnList.add(CUSTOM_FIELD_4);
-            columnList.add(CUSTOM_FIELD_5);
-            columnList.add(CUSTOM_FIELD_6);
-            columnList.add(CUSTOM_FIELD_7);
-            columnList.add(CUSTOM_FIELD_8);
-            columnList.add(CUSTOM_FIELD_9);
-            columnList.add(CUSTOM_FIELD_10);
-            columnList.add(CUSTOM_FIELD_11);
-            columnList.add(CUSTOM_FIELD_12);
-            columnList.add(CUSTOM_FIELD_13);
-            columnList.add(CUSTOM_FIELD_14);
-            columnList.add(CUSTOM_FIELD_15);
-            return columnList;
-        }
-    }
-
-    /**
-     * Default constructor.<br/>
-     * Made private to prevent instantiation.<br/>
-     * This is unreachable from the outside, since current class is used only as a repository for constants.
-     */
-    private Config() {
-    }
 }
diff --git a/src/main/java/com/constantcontact/util/http/HttpProcessor.java b/src/main/java/com/constantcontact/util/http/HttpProcessor.java
index 0b0edb45..8f5e3de4 100644
--- a/src/main/java/com/constantcontact/util/http/HttpProcessor.java
+++ b/src/main/java/com/constantcontact/util/http/HttpProcessor.java
@@ -178,7 +178,7 @@ private HttpURLConnection clientConnection(String urlParam, HttpMethod httpMetho
 		connection.setRequestProperty(CONTENT_TYPE_HEADER, contentType);
 		connection.addRequestProperty(ACCEPT_HEADER, JSON_CONTENT_TYPE);
 		connection.addRequestProperty(AUTHORIZATION_HEADER, "Bearer " + accessToken);
-        connection.addRequestProperty(X_CTCT_REQUEST_SOURCE_HEADER, String.format("sdk.java.%1s", Config.CTCT_SDK_VERSION));
+        connection.addRequestProperty(X_CTCT_REQUEST_SOURCE_HEADER, String.format("sdk.java.%1s", Config.instance().getCtctSdkVersion()));
 		connection.addRequestProperty("Connection", "Keep-Alive");
 		connection.addRequestProperty("Keep-Alive", "header");
 
diff --git a/src/test/java/com/constantcontact/mockup/BulkActivitiesServiceMock.java b/src/test/java/com/constantcontact/mockup/BulkActivitiesServiceMock.java
index a8f1c08b..6888071e 100644
--- a/src/test/java/com/constantcontact/mockup/BulkActivitiesServiceMock.java
+++ b/src/test/java/com/constantcontact/mockup/BulkActivitiesServiceMock.java
@@ -175,7 +175,7 @@ public List<DetailedStatusReport> getDetailedStatusReport(String accessToken, St
 
 		List<DetailedStatusReport> detailedStatusReports = null;
 
-		String url = Config.Endpoints.BASE_URL + Config.Endpoints.ACTIVITIES;
+		String url = Config.instance().getBaseUrl() + Config.Endpoints.ACTIVITIES;
 		try {
 				detailedStatusReports = Component.listFromJSON(MockedServerResponses.getDetailedStatusReportBulkActivitiesData, DetailedStatusReport.class);
 		} catch (Exception e) {