diff --git a/README.md b/README.md
index ab8bd3f..9d1da46 100644
--- a/README.md
+++ b/README.md
@@ -18,47 +18,21 @@
 # under the License.
 #
 -->
-Cordova FirefoxOS (Boot 2 Gecko)
+Cordova Firefox OS (Boot 2 Gecko)
 ==============================
 
 Introduction
 ------------
 
-Firefox OS is an open source operating system for smartphones and tablet computers being developed by Mozilla. It is designed to allow HTML5 applications to integrate directly with the device's hardware using JavaScript.
+[Firefox OS](http://www.mozilla.org/en-US/firefox/os/) is an open source operating system for smartphones and tablet computers being developed by Mozilla. It is designed to allow HTML5 applications to integrate directly with the device's hardware using JavaScript.
 
 cordova-firefoxos allows developers to use the cross platform APIs in Cordova to target the Firefox OS. Most APIs are just proxied to the matching Firefox OS API calls.
 
-Prerequisties:
+Prerequisties
 ==============
 
-A lot of good documentation is available on the [Mozilla Developer Network](https://developer.mozilla.org/en/docs/Mozilla/Firefox_OS)
+There are no prerequisites for adding Firefox OS as a Cordova platform. For usage, setting up debugging environment and running on the device, see the [Cordova support for Firefox OS](https://developer.mozilla.org/en-US/Apps/Tools_and_frameworks/Cordova_support_for_Firefox_OS) page on Mozilla Developer Network.
 
-A simulator (runs as a Firefox plugin) is availble [here](http://people.mozilla.org/~myk/r2d2b2g/)
+For platform development information, check out the [Firefox OS cordova development page](http://mozilla-cordova.github.io)
 
-The following software is required to package and deploy an app directly to a Firefox OS device:
--[Android SDK](http://developer.android.com/sdk/index.html)
--on Mac you will need to install XCode & Command Line Tools for XCode
--Firefox OS device with OS Version 1.0.0.0 prerelease
-
-Getting Started:
-================
-
-1. Bootstrap your computer so to make sure that you have all the prerequisites for building Firefox
-- instructions can be found under the "Build prerequisites" section on the following [page](https://developer.mozilla.org/en-US/docs/Simple_Firefox_build)
-2. Clone the Firefox repository: git clone git://github.com/mozilla/mozilla-central.git
-3. Build Firefox by following the instructions under the "Building" on the following [page](https://developer.mozilla.org/en-US/docs/Simple_Firefox_build)
-4. Clone the cordova-firefoxos repository
-
-If Deploying to device:
-
-5. Modify the XPCSHELL constant in the Makefile to point to the location of xpcshell on your computer
-6. Modify the ADB constant in the Makefile to point to the location of adb on your computer
-7. Make sure the Firefox OS device has remote debugging enabled. To enable remote debugging navigate to the following settings on the device: Settings->Device Information->More Information->Developer->Remote Debugging.
-8. Run the Makefile by typing "make" into the command line.
-9. The device should prompt you to allow a remote connection, your Apache Cordova Firefox OS app will be installed to the device once you accept the prompt. 
-
-If Deploying to simulator:
-
-7. Open the Firefox OS simulator add-on by going to Tools->Web Developer->Firefox OS Simulator
-8. Start the simulator
-9. Click on the Add Directory button and then choose the manifest.webapp file in the framework folder of your Apache Cordova app.
\ No newline at end of file
+A lot of good documentation on Firefox OS development is also available on the [Mozilla Developer Network](https://developer.mozilla.org/en/docs/Mozilla/Firefox_OS).
diff --git a/bin/lib/create.js b/bin/lib/create.js
index 48fb2e8..bc7b1c9 100755
--- a/bin/lib/create.js
+++ b/bin/lib/create.js
@@ -26,7 +26,6 @@
     ROOT    = path.join(__dirname, '..', '..'),
     check_reqs = require('./check_reqs');
 
-
 exports.createProject = function(project_path,package_name,project_name){
     var VERSION = fs.readFileSync(path.join(ROOT, 'VERSION'), 'utf-8');
     
@@ -61,13 +60,16 @@
 
     //copy check_reqs file
     shjs.cp( path.join(ROOT, 'bin', 'lib', 'check_reqs.js'), path.join(project_path,'cordova', 'lib'));
-    
+
     //copy cordova directory
     shjs.cp('-r', path.join(ROOT, 'bin', 'templates', 'project', 'cordova'), project_path);
 
     //copy platform_www to project folder
     shjs.cp('-r', path.join(ROOT, 'bin', 'templates', 'project', 'platform_www'), project_path);
 
+    //copy cordova js file
+    shjs.cp('-r', path.join(ROOT, 'cordova-lib', 'cordova.js'), path.join(project_path,'platform_www'));
+
     [
         'run',
         'build',
@@ -76,4 +78,4 @@
     ].forEach(function(f) { 
          shjs.chmod(755, path.join(project_path, 'cordova', f));
     });
-}
+};
