diff --git a/knative-build/runtimes/javascript/app.js b/knative-build/runtimes/javascript/app.js
index b4714d3..7658fe5 100644
--- a/knative-build/runtimes/javascript/app.js
+++ b/knative-build/runtimes/javascript/app.js
@@ -50,13 +50,13 @@
 // identify the target Serverless platform
 const platformFactory = require('./platform/platform.js');
 const factory = new platformFactory(app, config, service);
-var targetPlatform = process.env.__OW_RUNTIME_PLATFORM;
+const targetPlatform = process.env.__OW_RUNTIME_PLATFORM;
 
 // default to "openwhisk" platform initialization if not defined
 // TODO export isvalid() from platform, if undefined this is OK to default, but if not valid value then error out
 if(typeof targetPlatform === "undefined") {
     targetPlatform = platformFactory.PLATFORM_OPENWHISK;
-    console.log("__OW_RUNTIME_PLATFORM is undefined; defaulting to 'openwhisk' ...");
+    // console.log("__OW_RUNTIME_PLATFORM is undefined; defaulting to 'openwhisk' ...");
 }
 
 if(!platformFactory.isSupportedPlatform(targetPlatform)){
@@ -70,7 +70,7 @@
  * to move data where the platform and function author expects it to be.
  */
 
-var platformImpl = factory.createPlatformImpl(targetPlatform);
+const platformImpl = factory.createPlatformImpl(targetPlatform);
 
 if(typeof platformImpl !== "undefined"){
 
diff --git a/knative-build/runtimes/javascript/platform/knative.js b/knative-build/runtimes/javascript/platform/knative.js
index 6cf8620..1fe3d2c 100644
--- a/knative-build/runtimes/javascript/platform/knative.js
+++ b/knative-build/runtimes/javascript/platform/knative.js
@@ -152,33 +152,7 @@
     } catch(e){
         console.error(e);
         DEBUG.functionEndError(e.message);
-        throw("Unable to initialize the runtime: " + e.message);
-    }
-    DEBUG.functionEnd();
-}
-
-/**
- * Pre-process the incoming http request data, moving it to where the
- * route handlers expect it to be for an openwhisk runtime.
- */
-function preProcessActivationData(env, activationdata) {
-    DEBUG.functionStart();
-    try {
-        // Note: we move the values here so that the "run()" handler does not have
-        // to move them again.
-        Object.keys(activationdata).forEach(
-            function (k) {
-                if (typeof activationdata[k] === 'string') {
-                    var envVariable = OW_ENV_PREFIX + k.toUpperCase();
-                    process.env[envVariable] = activationdata[k];
-                    DEBUG.dumpObject(process.env[envVariable], envVariable, "preProcessActivationData");
-                }
-            }
-        );
-    } catch(e){
-        console.error(e);
-        DEBUG.functionEndError(e.message);
-        throw("Unable to initialize the runtime: " + e.message);
+        throw("Unable to process Initialization data: " + e.message);
     }
     DEBUG.functionEnd();
 }
@@ -218,6 +192,7 @@
                 // make value data available as __ow_body
                 const tmpBody = Object.assign({}, req.body.value);
                 // delete main, binary, raw, and code from the body before sending it as an action argument
+                removeInitData(tmpBody);
                 delete tmpBody.main;
                 delete tmpBody.code;
                 delete tmpBody.binary;
@@ -240,11 +215,36 @@
     } catch (e) {
         console.error(e);
         DEBUG.functionEndError(e.message);
-        throw ("Unable to initialize the runtime: " + e.message)
+        throw ("Unable to process HTTP Context: " + e.message)
     }
     DEBUG.functionEnd()
 }
 
+/**
+ * Pre-process the incoming http request data, moving it to where the
+ * route handlers expect it to be for an openwhisk runtime.
+ */
+function preProcessActivationData(env, activationdata) {
+    DEBUG.functionStart();
+    try {
+        // Note: we move the values here so that the "run()" handler does not have
+        // to move them again.
+        Object.keys(activationdata).forEach(
+            function (k) {
+                if (typeof activationdata[k] === 'string') {
+                    var envVariable = OW_ENV_PREFIX + k.toUpperCase();
+                    process.env[envVariable] = activationdata[k];
+                    DEBUG.dumpObject(process.env[envVariable], envVariable, "preProcessActivationData");
+                }
+            }
+        );
+    } catch(e){
+        console.error(e);
+        DEBUG.functionEndError(e.message);
+        throw("Unable to process Activation data: " + e.message);
+    }
+    DEBUG.functionEnd();
+}
 
 /**
  * Pre-process the incoming http request data, moving it to where the
@@ -253,13 +253,27 @@
 function preProcessRequest(req){
     DEBUG.functionStart();
     try {
+        let env = process.env || {};
+
         // Get or create valid references to the various data we might encounter
         // in a request such as Init., Activation and function parameter data.
         let body = req.body || {};
         let valueData = body.value || {};
         let initData = body.init || {};
         let activationData = body.activation || {};
-        let env = process.env || {};
+
+        // process initialization (i.e., "init") data
+        if (hasInitData(req)) {
+            preProcessInitData(env, initData, valueData, activationData);
+        }
+
+        if( hasActivationData(req)) {
+            // process HTTP request header and body to make it available to function as parameter data
+            preProcessHTTPContext(req, valueData);
+
+            // process per-activation (i.e, "run") data
+            preProcessActivationData(env, activationData);
+        }
 
         // Fix up pointers in case we had to allocate new maps
         req.body = body;
@@ -267,20 +281,11 @@
         req.body.init = initData;
         req.body.activation = activationData;
 
-        // process initialization (i.e., "init") data
-        preProcessInitData(env, initData, valueData, activationData);
-
-        // process HTTP request header and body to make it available to function as parameter data
-        preProcessHTTPContext(req, valueData);
-
-        // process per-activation (i.e, "run") data
-        preProcessActivationData(env, activationData);
-
     } catch(e){
         console.error(e);
         DEBUG.functionEndError(e.message);
         // TODO: test this error is handled properly and results in an HTTP error response
-        throw("Unable to initialize the runtime: " + e.message);
+        throw("Unable to process request data: " + e.message);
     }
     DEBUG.functionEnd();
 }
@@ -414,10 +419,11 @@
                 // Process request and process env. variables to provide them in the manner
                 // an OpenWhisk Action expects them, as well as enable additional Http features.
                 preProcessRequest(req);
-
+                // Invoke the OW "init" entrypoint
                 service.initCode(req).then(function () {
                     // delete any INIT data (e.g., code, raw, etc.) from the 'value' data before calling run().
                     removeInitData(req.body);
+                    // Invoke the OW "run" entrypoint
                     service.runCode(req).then(function (result) {
                         postProcessResponse(req, result, res)
                     });
@@ -435,7 +441,7 @@
                 // Process request and process env. variables to provide them in the manner
                 // an OpenWhisk Action expects them, as well as enable additional Http features.
                 preProcessRequest(req);
-
+                // Invoke the OW "init" entrypoint
                 service.initCode(req).then(function (result) {
                     res.status(result.code).send(result.response);
                 }).catch(function (error) {
@@ -451,7 +457,7 @@
                 // Process request and process env. variables to provide them in the manner
                 // an OpenWhisk Action expects them, as well as enable additional Http features.
                 preProcessRequest(req);
-
+                // Invoke the OW "run" entrypoint
                 service.runCode(req).then(function (result) {
                     postProcessResponse(req, result, res)
                 }).catch(function (error) {
@@ -466,7 +472,7 @@
             }
 
         } catch (e) {
-            res.status(500).json({error: "internal error during function initialization."})
+            res.status(500).json({error: "internal error during request processing."})
         }
     };
 
diff --git a/knative-build/runtimes/javascript/tests/webactionraw/data-init-run.json b/knative-build/runtimes/javascript/tests/webactionraw/knative-data-init-run.json
similarity index 100%
rename from knative-build/runtimes/javascript/tests/webactionraw/data-init-run.json
rename to knative-build/runtimes/javascript/tests/webactionraw/knative-data-init-run.json
diff --git a/knative-build/runtimes/javascript/tests/webactionraw/knative-data-init.json b/knative-build/runtimes/javascript/tests/webactionraw/knative-data-init.json
new file mode 100644
index 0000000..0c8686b
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/knative-data-init.json
@@ -0,0 +1,9 @@
+{
+    "init": {
+        "name" : "nodejs-web-action-raw",
+        "main" : "main",
+        "binary": false,
+        "code" : "function main(params) { return { response: params }; }",
+        "raw": true
+    }
+}
diff --git a/knative-build/runtimes/javascript/tests/webactionraw/knative-data-run.json b/knative-build/runtimes/javascript/tests/webactionraw/knative-data-run.json
new file mode 100644
index 0000000..64d28fb
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/knative-data-run.json
@@ -0,0 +1,13 @@
+{
+  "activation": {
+    "namespace": "default",
+    "action_name": "nodejs-web-action-raw",
+    "api_host": "",
+    "api_key": "",
+    "activation_id": "",
+    "deadline": "4102498800000"
+  },
+  "value": {
+    "name": "Joe"
+  }
+}
diff --git a/knative-build/runtimes/javascript/tests/webactionraw/data-init.json b/knative-build/runtimes/javascript/tests/webactionraw/openwhisk-data-init.json
similarity index 100%
rename from knative-build/runtimes/javascript/tests/webactionraw/data-init.json
rename to knative-build/runtimes/javascript/tests/webactionraw/openwhisk-data-init.json
diff --git a/knative-build/runtimes/javascript/tests/webactionraw/data-run.json b/knative-build/runtimes/javascript/tests/webactionraw/openwhisk-data-run.json
similarity index 100%
rename from knative-build/runtimes/javascript/tests/webactionraw/data-run.json
rename to knative-build/runtimes/javascript/tests/webactionraw/openwhisk-data-run.json
diff --git a/knative-build/runtimes/javascript/tests/webactionraw/payload-knative-init.http b/knative-build/runtimes/javascript/tests/webactionraw/payload-knative-init.http
new file mode 100644
index 0000000..bc9c6a0
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/payload-knative-init.http
@@ -0,0 +1,14 @@
+POST http://localhost:8080/ HTTP/1.1
+content-type: application/json
+
+{
+  "init": {
+    "name" : "nodejs-web-action-raw",
+    "main" : "main",
+    "binary": false,
+    "code" : "function main(params) { return { response: params }; }",
+    "raw": true
+  }
+}
+
+###
diff --git a/knative-build/runtimes/javascript/tests/webactionraw/payload-knative-run.http b/knative-build/runtimes/javascript/tests/webactionraw/payload-knative-run.http
new file mode 100644
index 0000000..5aa06f8
--- /dev/null
+++ b/knative-build/runtimes/javascript/tests/webactionraw/payload-knative-run.http
@@ -0,0 +1,18 @@
+POST http://localhost:8080/ HTTP/1.1
+content-type: application/json
+
+{
+  "activation": {
+    "namespace": "default",
+    "action_name": "nodejs-web-action-raw",
+    "api_host": "",
+    "api_key": "",
+    "activation_id": "",
+    "deadline": "4102498800000"
+  },
+  "value": {
+    "name": "Joe"
+  }
+}
+
+###
