diff --git a/core/src/main/java/org/eclipse/gemini/blueprint/context/support/AbstractDelegatedExecutionApplicationContext.java b/core/src/main/java/org/eclipse/gemini/blueprint/context/support/AbstractDelegatedExecutionApplicationContext.java
index 915ca2e..7a9e917 100644
--- a/core/src/main/java/org/eclipse/gemini/blueprint/context/support/AbstractDelegatedExecutionApplicationContext.java
+++ b/core/src/main/java/org/eclipse/gemini/blueprint/context/support/AbstractDelegatedExecutionApplicationContext.java
@@ -470,16 +470,15 @@
 		List<String> orderedPostProcessorNames = new ArrayList<String>();
 		List<String> nonOrderedPostProcessorNames = new ArrayList<String>();
 		for (String ppName : postProcessorNames) {
-			if (processedBeans.contains(ppName)) {
-				// skip - already processed in first phase above
+			if (processedBeans.contains(ppName) || exclude != null && isTypeMatch(ppName, exclude)) {
+				continue;
 			}
-			else if (beanFactory.isTypeMatch(ppName, PriorityOrdered.class)) {
+
+			if (beanFactory.isTypeMatch(ppName, PriorityOrdered.class)) {
 				priorityOrderedPostProcessors.add(beanFactory.getBean(ppName, include));
-			}
-			else if (beanFactory.isTypeMatch(ppName, Ordered.class)) {
+			} else if (beanFactory.isTypeMatch(ppName, Ordered.class)) {
 				orderedPostProcessorNames.add(ppName);
-			}
-			else {
+			} else {
 				nonOrderedPostProcessorNames.add(ppName);
 			}
 		}
@@ -509,7 +508,7 @@
 	}
 
 	private boolean isExcluded(Class<? extends BeanFactoryPostProcessor> include, Class<? extends BeanFactoryPostProcessor> exclude, BeanFactoryPostProcessor postProcessor) {
-		return !include.isInstance(postProcessor) || exclude != null && !exclude.isInstance(postProcessor);
+		return !include.isInstance(postProcessor) || exclude != null && exclude.isInstance(postProcessor);
 	}
 
 	/**
diff --git a/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/compliance/io/FragmentTest.java b/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/compliance/io/FragmentTest.java
index a553381..a6a61c2 100644
--- a/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/compliance/io/FragmentTest.java
+++ b/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/compliance/io/FragmentTest.java
@@ -34,10 +34,6 @@
 	// Folder tests
 	//
 
-	protected boolean isDisabledInThisEnvironment(String testMethodName) {
-		return isFelix();
-	}
-
 	protected String[] getBundleContentPattern() {
 		return new String[] { "**/*" };
 	}
diff --git a/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/extender/configuration/ExtenderConfigurationTest.java b/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/extender/configuration/ExtenderConfigurationTest.java
index 221d9b1..2be4a93 100644
--- a/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/extender/configuration/ExtenderConfigurationTest.java
+++ b/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/extender/configuration/ExtenderConfigurationTest.java
@@ -82,11 +82,6 @@
 		assertTrue("unexpected type", bean instanceof Properties);
 	}
 
-	// felix doesn't support fragments, so disable this test
-	protected boolean isDisabledInThisEnvironment(String testMethodName) {
-		return getPlatformName().indexOf("elix") > -1;
-	}
-
 	protected List getTestPermissions() {
 		List list = super.getTestPermissions();
 		list.add(new AdminPermission("*", AdminPermission.METADATA));
diff --git a/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/io/FragmentIoTests.java b/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/io/FragmentIoTests.java
index f84cb71..d70c63a 100644
--- a/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/io/FragmentIoTests.java
+++ b/integration-tests/tests/src/test/java/org/eclipse/gemini/blueprint/iandt/io/FragmentIoTests.java
@@ -29,10 +29,6 @@
  */
 public class FragmentIoTests extends BaseIoTest {
 
-	protected boolean isDisabledInThisEnvironment(String testMethodName) {
-		return isFelix();
-	}
-
 	public void testFileWithTheSameNameInOwningBundleAndAttachedFragment() throws Exception {
 		Resource[] fragmentResource = patternLoader.getResources("osgibundle:/" + PACKAGE + "duplicate.file");
 		assertTrue("file with the same name available in bundles are ignored", fragmentResource.length > 1);
