diff --git a/plugins/org.eclipse.wst.common.project.facet.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.project.facet.core/META-INF/MANIFEST.MF
index a4950a0..d916e6a 100644
--- a/plugins/org.eclipse.wst.common.project.facet.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.project.facet.core/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Vendor: %providerName
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.common.project.facet.core; singleton:=true
-Bundle-Version: 1.1.1.qualifier
+Bundle-Version: 1.1.2.qualifier
 Bundle-ClassPath: .
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.common.project.facet.core,
diff --git a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java
index edc3da5..b616305 100644
--- a/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java
+++ b/plugins/org.eclipse.wst.common.project.facet.core/src/org/eclipse/wst/common/project/facet/core/internal/FacetedProject.java
@@ -287,26 +287,20 @@
             final List copy = new ArrayList( actions );
             ProjectFacetsManager.sort( this.facets, copy );
             
-            // Update and check the action configs.
+            // Execute the actions.
             
-            for( int i = 0, n = copy.size(); i < n; i++ )
+            for( Iterator itr = copy.iterator(); itr.hasNext(); )
             {
-                Action action = (Action) copy.get( i );
-                final IProjectFacetVersion fv = action.getProjectFacetVersion();
+                final Action action = (Action) itr.next();
+                final Action.Type type = action.getType();
+                final ProjectFacetVersion fv = (ProjectFacetVersion) action.getProjectFacetVersion();
+                final IActionDefinition def = fv.getActionDefinition( this.facets, type );
+                
                 Object config = action.getConfig();
                 
                 if( config == null )
                 {
-                    final IActionDefinition def 
-                        = fv.getActionDefinition( this.facets, action.getType() );
-                    
                     config = def.createConfigObject( fv, this.project.getName() );
-                    
-                    if( config != null )
-                    {
-                        action = new Action( action.getType(), fv, config );
-                        copy.set( i, action );
-                    }
                 }
                 
                 if( config != null )
@@ -336,23 +330,9 @@
                         }
                     }
                 }
-            }
-            
-            // Execute the actions.
-            
-            for( Iterator itr = copy.iterator(); itr.hasNext(); )
-            {
-                final Action action = (Action) itr.next();
-                final Action.Type type = action.getType();
                 
-                final ProjectFacetVersion fv 
-                    = (ProjectFacetVersion) action.getProjectFacetVersion();
-                
-                final IActionDefinition def 
-                    = fv.getActionDefinition( this.facets, type );
-                
-                callEventHandlers( fv, getPreEventHandlerType( type ), 
-                                   action.getConfig(), submon( monitor, 10 ) );
+                callEventHandlers( fv, getPreEventHandlerType( type ), config, 
+                                   submon( monitor, 10 ) );
                 
                 final IDelegate delegate 
                     = ( (ActionDefinition) def ).getDelegate();
@@ -366,8 +346,7 @@
                 }
                 else
                 {
-                    callDelegate( fv, delegate, action.getConfig(), type,
-                                  submon( monitor, 80 ) );
+                    callDelegate( fv, delegate, config, type, submon( monitor, 80 ) );
                 }
         
                 synchronized( this.lock )
@@ -377,8 +356,8 @@
                 
                 save();
 
-                callEventHandlers( fv, getPostEventHandlerType( type ), 
-                                   action.getConfig(), submon( monitor, 10 ) );
+                callEventHandlers( fv, getPostEventHandlerType( type ), config, 
+                                   submon( monitor, 10 ) );
             }
         }
         finally
