diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java
index 0e31f42..dc1d912 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java
@@ -219,6 +219,9 @@
 					|| bundleName.equals("org.objectweb.asm"))
 				return;
 
+			if (isEclipseLoggingClass(bundleName, className))
+				return;
+
 			if (BCELPatcher.BCEL_PLUGIN_ID.equals(bundleName)) {
 				BCELPatcher.fixBCEL(wovenClass);
 				return;
@@ -265,6 +268,22 @@
 		}
 	}
 
+	private boolean isEclipseLoggingClass(String bundleName, String className) {
+		if (bundleName.equals("org.eclipse.ui.workbench")) {
+			if (className.equals("org.eclipse.ui.statushandlers.StatusAdapter"))
+				return true;
+			else if (className.equals("org.eclipse.ui.internal.misc.StatusUtil"))
+				return true;
+		} else if (bundleName.equals("org.eclipse.ui.views.log")) {
+			if (className.startsWith("org.eclipse.ui.internal.views.log.LogView$"))
+				return true;
+		} else if (bundleName.equals("org.eclipse.equinox.common")) {
+			if (className.equals("org.eclipse.core.runtime.ILogListener"))
+				return true;
+		}
+		return false;
+	}
+
 	WeavingReason requiresWeaving(BundleWiring bundleWiring, String className, byte[] bytes) {
 		
 		// 1. consult the aspect binding registry (for per-bundle info):
@@ -386,7 +405,7 @@
 			String teamName = record.team.teamName;
 			log(IStatus.INFO, "Consider for instantiation/activation: team "+teamName);
 			try {
-				TeamLoader loader = new TeamLoader(deferredTeams, beingDefined, this.useDynamicWeaver);
+				TeamLoader loader = new TeamLoader(deferredTeams, beingDefined, USE_DYNAMIC_WEAVER);
 				// Instantiate (we only get here if activationKind != NONE)
 				loader.instantiateAndActivate(record.aspectBinding, record.team, record.activationKind); // may re-insert to deferredTeams
 			} catch (Exception e) {
