Index: src/main/webapp/application/engageConfig.json
===================================================================
--- src/main/webapp/application/engageConfig.json	(revision 9578)
+++ src/main/webapp/application/engageConfig.json	(working copy)
@@ -30,7 +30,27 @@
     "fluid.codeEntry.initCodeEntryService",
     "fluid.myCollection.initMyCollectionService",
     "fluid.collectOperations.initAcceptor",
-    "fluid.engage.myCollection.initSendCollectionFeed"
+    "fluid.engage.myCollection.initSendCollectionFeed",
+    "fluid.engage.condenserInitialiser"
+],
+condenserRewriterKey: "",
+bundledResources: [
+    "$infusion/lib/jquery/core/js/jquery.js",
+    "$infusion/lib/json/js/json2.js",
+    "$infusion/framework/core/js/Fluid.js",
+    "$infusion/framework/core/js/FluidDOMUtilities.js",
+    "$infusion/framework/core/js/DataBinding.js",
+    "$infusion/framework/renderer/js/fluidParser.js",
+    "$infusion/framework/renderer/js/fluidRenderer.js",
+    "$infusion/lib/fastXmlPull/js/fastXmlPull.js",
+    "$engage/lib/jquery/plugins/cookie/js/jquery.cookie.js",
+    "$engage/framework/js/user.js",
+    "$engage/framework/js/kettleCore.js",
+    "$engage/framework/js/URLUtilities.js",
+    "$engage/framework/js/engageRenderUtils.js",
+    "$engage/components/navigationBar/js/NavigationBar.js",
+    "$engage/components/navigationList/js/NavigationList.js",  
+    "$engage/components/cabinet/js/Cabinet.js"
 ],
 views: {
     all: "all",
Index: src/main/webapp/application/js/EngageApp.js
===================================================================
--- src/main/webapp/application/js/EngageApp.js	(revision 9578)
+++ src/main/webapp/application/js/EngageApp.js	(working copy)
@@ -120,13 +120,16 @@
         var serviceInits = fluid.makeArray(config.initServices);        
         // Initialize each of the Engage app services registered in the config file.
         fluid.setLogging(true);
-        for (var i = 0; i < serviceInits.length; i++) {
-            var initFn = serviceInits[i];
-            fluid.log("Initializing service " + initFn);
-            fluid.invokeGlobalFunction(initFn, [config, app, appStorage]);
-        }
-        fluid.kettle.dequeueInvocations("fluid.engage.initEngageApp", {
-          config: config, app: app, appStorage: appStorage});  
+        var envObj = {config: config, app: app, appStorage: appStorage}; 
+        fluid.kettle.withEnvironment(envObj,
+            function() {
+                for (var i = 0; i < serviceInits.length; i++) {
+                    var initFn = serviceInits[i];
+                    fluid.log("Initializing service " + initFn);
+                    fluid.invokeGlobalFunction(initFn, [config, app, appStorage]);
+                }
+        });
+        fluid.kettle.dequeueInvocations("fluid.engage.initEngageApp", envObj);  
         
         // Mount shared directory points.
         fluid.engage.applyMountConfig(app, mounts, baseDir);
Index: src/main/webapp/kettle/js/kettle.js
===================================================================
--- src/main/webapp/kettle/js/kettle.js	(revision 9578)
+++ src/main/webapp/kettle/js/kettle.js	(working copy)
@@ -17,9 +17,10 @@
     fluid.kettle = fluid.kettle || {};
 
     fluid.kettle.computeAbsMounts = function(mounts, baseDir) {
-        fluid.transform(mounts, function(mount) {
+        fluid.transform(mounts, function(mount, key) {
             var absMount = baseDir + mount.source;
             mount.absSource = fluid.kettle.makeCanon(absMount);
+            mount.key = key;
         });
     };
     
Index: src/main/webapp/services/condenser/js/condenserSpouts.js
===================================================================
--- src/main/webapp/services/condenser/js/condenserSpouts.js	(revision 9578)
+++ src/main/webapp/services/condenser/js/condenserSpouts.js	(working copy)
@@ -66,12 +66,21 @@
         return "<div" + body.substring(5, body.length - 6) + "</div>";
     }
     
+    fluid.engage.condenser.DESTRUCTIBLE_STRING = "/:/&/?/*/";
+    
+    function filterDestructible(list) {
+        return $.grep(list, function(string) {
+            return string.indexOf(fluid.engage.condenser.DESTRUCTIBLE_STRING) === -1;
+        });
+    }
+    
     fluid.engage.condenser.parseMarkup = function(markup) {
         var rootState = {string: markup, start: 0, end: markup.length};
         var headState = fluid.engage.trundle(rootState, "<head", "</head", ">");
         var bodyState = fluid.engage.trundle({string: markup, start: headState.end}, "<body", "</body");
         var linkTags = fluid.engage.multiTrundle(headState, "<link", "</link>");
         var scriptTags = fluid.engage.multiTrundle(headState, "<script", "</script>");
+        scriptTags = filterDestructible(scriptTags);
         var body = bodyToDiv(bodyState.get());
 
         return {
@@ -108,9 +117,9 @@
     fluid.engage.condenser.dataSource = {
         get: function(directModel) {
             var app = fluid.kettle.resolveEnvironment("{appStorage}.appHolder");
-            var targetUrl = fluid.kettle.addParamsToUrl(directModel.targetUrl, {urlRewriter: "condenser"});
-            //var params = fluid.kettle.resolveEnvironment("{params}");
-            var response = fluid.kettle.makeRequest(app.app, "GET", directModel.targetUrl);
+            var key = fluid.kettle.resolveEnvironment("{config}.condenserRewriterKey");
+            var targetUrl = key? fluid.kettle.addParamsToUrl(directModel.targetUrl, {urlRewriter: key}) : directModel.targetUrl;
+            var response = fluid.kettle.makeRequest(app.app, "GET", targetUrl);
             var markup = response[2]; // TODO: JSGI upgrade // TODO: deal with error return
             return {data: fluid.engage.condenser.parseMarkup(markup)};
         }
@@ -125,9 +134,21 @@
     });
         
     fluid.engage.condenserInitialiser = function(config, app, appStorage) {
-        var urlRewriter = fluid.kettle.makeUrlRewriter(config.mount, fluid.engage.mobileHome.renderHandlerConfig);
-        appStorage.condenser = {
-            urlRewriter: urlRewriter
-        };
+        var bundles = config.bundledResources;
+        var key = config.condenserRewriterKey;
+        if (key) {
+            var expanded = {};
+            fluid.transform(bundles, function(relative) {
+                expanded[relative] = true;
+            });
+            var urlRewriter = function(urlPackage) {
+                var real = "$"+urlPackage.mount.key + "/"+urlPackage.extent;
+                return expanded[real]? fluid.engage.condenser.DESTRUCTIBLE_STRING : urlPackage.first;
+            };
+            appStorage[key] = {
+                urlRewriter: urlRewriter,
+                bundledResources: expanded
+            };
+        }
     };
 })(jQuery);
\ No newline at end of file
