diff --git a/VERSION b/VERSION
index 50aea0e..01a6c09 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.1.0
\ No newline at end of file
+2.2.0rc2
\ No newline at end of file
diff --git a/example/www/cordova-2.2.0.js b/example/www/cordova-2.2.0.js
index 0a39b5f..1e5153d 100644
--- a/example/www/cordova-2.2.0.js
+++ b/example/www/cordova-2.2.0.js
@@ -1,6 +1,6 @@
-// commit 337b1f443491f3fdb816dc32f70e5378e0e1967c
+// commit faea9fb423e7dffb60b10d378cf089cdb48c6cf0
 
-// File generated at :: Mon Oct 15 2012 14:45:09 GMT-0700 (Pacific Daylight Time)
+// File generated at :: Fri Oct 26 2012 13:39:25 GMT-0700 (Pacific Daylight Time)
 
 /*
  Licensed to the Apache Software Foundation (ASF) under one
@@ -695,7 +695,6 @@
         return ( CommandProxyMap[service] ? CommandProxyMap[service][action] : null );
     }
 };
-
 });
 
 // file: lib\common\common.js
@@ -6182,8 +6181,8 @@
  * Alerts a message in any available way: alert or console.log.
  */
 utils.alert = function(msg) {
-    if (alert) {
-        alert(msg);
+    if (window.alert) {
+        window.alert(msg);
     } else if (console && console.log) {
         console.log(msg);
     }
diff --git a/templates/description.txt b/templates/description.txt
index a31dd65..039cf14 100644
--- a/templates/description.txt
+++ b/templates/description.txt
@@ -1,4 +1,4 @@
 CordovaStarter
 
-Starter project for building a Cordova app for Windows Phone version: 2.2.0rc1
+Starter project for building a Cordova app for Windows Phone version: 2.2.0rc2
 
diff --git a/templates/full/VERSION b/templates/full/VERSION
index 50aea0e..01a6c09 100644
--- a/templates/full/VERSION
+++ b/templates/full/VERSION
@@ -1 +1 @@
-2.1.0
\ No newline at end of file
+2.2.0rc2
\ No newline at end of file
diff --git a/templates/full/www/cordova-2.2.0.js b/templates/full/www/cordova-2.2.0.js
index 0a39b5f..1e5153d 100644
--- a/templates/full/www/cordova-2.2.0.js
+++ b/templates/full/www/cordova-2.2.0.js
@@ -1,6 +1,6 @@
-// commit 337b1f443491f3fdb816dc32f70e5378e0e1967c
+// commit faea9fb423e7dffb60b10d378cf089cdb48c6cf0
 
-// File generated at :: Mon Oct 15 2012 14:45:09 GMT-0700 (Pacific Daylight Time)
+// File generated at :: Fri Oct 26 2012 13:39:25 GMT-0700 (Pacific Daylight Time)
 
 /*
  Licensed to the Apache Software Foundation (ASF) under one
@@ -695,7 +695,6 @@
         return ( CommandProxyMap[service] ? CommandProxyMap[service][action] : null );
     }
 };
-
 });
 
 // file: lib\common\common.js
@@ -6182,8 +6181,8 @@
  * Alerts a message in any available way: alert or console.log.
  */
 utils.alert = function(msg) {
-    if (alert) {
-        alert(msg);
+    if (window.alert) {
+        window.alert(msg);
     } else if (console && console.log) {
         console.log(msg);
     }
diff --git a/templates/standalone/VERSION b/templates/standalone/VERSION
index 50aea0e..01a6c09 100644
--- a/templates/standalone/VERSION
+++ b/templates/standalone/VERSION
@@ -1 +1 @@
-2.1.0
\ No newline at end of file
+2.2.0rc2
\ No newline at end of file
diff --git a/templates/standalone/www/cordova-2.2.0.js b/templates/standalone/www/cordova-2.2.0.js
index 0a39b5f..1e5153d 100644
--- a/templates/standalone/www/cordova-2.2.0.js
+++ b/templates/standalone/www/cordova-2.2.0.js
@@ -1,6 +1,6 @@
-// commit 337b1f443491f3fdb816dc32f70e5378e0e1967c
+// commit faea9fb423e7dffb60b10d378cf089cdb48c6cf0
 
-// File generated at :: Mon Oct 15 2012 14:45:09 GMT-0700 (Pacific Daylight Time)
+// File generated at :: Fri Oct 26 2012 13:39:25 GMT-0700 (Pacific Daylight Time)
 
 /*
  Licensed to the Apache Software Foundation (ASF) under one
@@ -695,7 +695,6 @@
         return ( CommandProxyMap[service] ? CommandProxyMap[service][action] : null );
     }
 };
-
 });
 
 // file: lib\common\common.js
@@ -6182,8 +6181,8 @@
  * Alerts a message in any available way: alert or console.log.
  */
 utils.alert = function(msg) {
-    if (alert) {
-        alert(msg);
+    if (window.alert) {
+        window.alert(msg);
     } else if (console && console.log) {
         console.log(msg);
     }
