diff --git a/weinre.build/LICENSE-header.js b/weinre.build/LICENSE-header.js
new file mode 100644
index 0000000..e3f5ab3
--- /dev/null
+++ b/weinre.build/LICENSE-header.js
@@ -0,0 +1,18 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
\ No newline at end of file
diff --git a/weinre.build/scripts/build-client-html.py b/weinre.build/scripts/build-client-html.py
index 9cb3186..7e1660c 100644
--- a/weinre.build/scripts/build-client-html.py
+++ b/weinre.build/scripts/build-client-html.py
@@ -65,7 +65,7 @@
                 '<script type="text/javascript" src="weinre/check-for-webkit.js"></script>\n',
                 '<script type="text/javascript" src="weinre/hacks.js"></script>\n',
                 '<script type="text/javascript" src="../modjewel.js"></script>\n',
-                '<script type="text/javascript">require("modjewel").warnOnRecursiveRequire(true)</script>\n',
+                '<script type="text/javascript">modjewel.require("modjewel").warnOnRecursiveRequire(true)</script>\n',
             ])
 
             for module in getModules(moduleDir):
@@ -78,7 +78,7 @@
             newLines.append("<!-- ========== weinre additions: starting ========== -->\n")
             newLines.append('<link rel="stylesheet" type="text/css" href="weinre/client.css">\n')
             newLines.append('<script type="text/javascript" src="../interfaces/all-json-idls-min.js"></script>\n')
-            newLines.append('<script type="text/javascript">require("weinre/client/Client").main()</script>\n')
+            newLines.append('<script type="text/javascript">modjewel.require("weinre/client/Client").main()</script>\n')
             newLines.append("<!-- ========== weinre additions: done ========== -->\n")
             newLines.append(line)
 
diff --git a/weinre.build/scripts/build-target-scripts.py b/weinre.build/scripts/build-target-scripts.py
index 71792b0..ec80bce 100644
--- a/weinre.build/scripts/build-target-scripts.py
+++ b/weinre.build/scripts/build-target-scripts.py
@@ -86,6 +86,12 @@
 #--------------------------------------------------------------------
 def writeMergedFile(oFileName, scripts, scriptNames, srcs, useEval):
     lines = []
+    
+    licenseFile = os.path.join(os.path.dirname(__file__), "..", "LICENSE-header.js")
+    
+    with open(licenseFile, "r") as iFile:
+        lines.append(iFile.read())
+            
     lines.append(";(function(){")
 
     for script in scripts:
@@ -101,12 +107,12 @@
             lines.append(";eval(%s)" % json.dumps(src))
 
         if srcName == "modjewel.js":
-            lines.append("require('modjewel').warnOnRecursiveRequire(true);")
+            lines.append("modjewel.require('modjewel').warnOnRecursiveRequire(true);")
             if not useEval:
                 lines.append("")
 
-    lines.append("// require('weinre/common/Weinre').showNotImplemented();")
-    lines.append("require('weinre/target/Target').main()")
+    lines.append("// modjewel.require('weinre/common/Weinre').showNotImplemented();")
+    lines.append("modjewel.require('weinre/target/Target').main()")
     lines.append("})();")
     targetScript = "\n".join(lines)
 
diff --git a/weinre.build/scripts/collect-all-json-idl.py b/weinre.build/scripts/collect-all-json-idl.py
index 9448915..9d4099f 100644
--- a/weinre.build/scripts/collect-all-json-idl.py
+++ b/weinre.build/scripts/collect-all-json-idl.py
@@ -64,7 +64,7 @@
     else:
         jsonString = json.dumps(result, indent=4)
 
-    jsString = "require('weinre/common/Weinre').addIDLs(%s)" % jsonString
+    jsString = "modjewel.require('weinre/common/Weinre').addIDLs(%s)" % jsonString
 
     oFile = open(oFileName, "w")
     oFile.write(jsString)
diff --git a/weinre.build/scripts/module2amd.py b/weinre.build/scripts/module2amd.py
index c7e7cd3..d09148f 100644
--- a/weinre.build/scripts/module2amd.py
+++ b/weinre.build/scripts/module2amd.py
@@ -157,7 +157,7 @@
 
         modules.append(moduleName)
 
-        header  = ';define("%s", function(require, exports, module) {' % moduleName
+        header  = ';modjewel.define("%s", function(require, exports, module) {' % moduleName
         trailer = '});'
 
         newContents = "%s %s\n%s\n" % (header, contents, trailer)
diff --git a/weinre.doc/images/weinre-icon-512x512.png b/weinre.doc/images/weinre-icon-512x512.png
new file mode 100644
index 0000000..2b80cb6
--- /dev/null
+++ b/weinre.doc/images/weinre-icon-512x512.png
Binary files differ
diff --git a/weinre.web/client/ExtensionRegistryStub.js b/weinre.web/client/ExtensionRegistryStub.js
index 6937fdb..8426fda 100644
--- a/weinre.web/client/ExtensionRegistryStub.js
+++ b/weinre.web/client/ExtensionRegistryStub.js
@@ -18,6 +18,6 @@
  */
 
 (function() {
-    var ExtensionRegistryImpl = require("weinre/client/ExtensionRegistryImpl")
+    var ExtensionRegistryImpl = modjewel.require("weinre/client/ExtensionRegistryImpl")
     window.InspectorExtensionRegistry = new ExtensionRegistryImpl()
 })()
diff --git a/weinre.web/client/InspectorBackendStub.js b/weinre.web/client/InspectorBackendStub.js
index 645163c..aec9436 100644
--- a/weinre.web/client/InspectorBackendStub.js
+++ b/weinre.web/client/InspectorBackendStub.js
@@ -18,6 +18,6 @@
  */
 
 (function() {
-    var InspectorBackendImpl = require("weinre/client/InspectorBackendImpl")
+    var InspectorBackendImpl = modjewel.require("weinre/client/InspectorBackendImpl")
     window.InspectorBackend = new InspectorBackendImpl()
 })()
diff --git a/weinre.web/client/InspectorFrontendHostStub.js b/weinre.web/client/InspectorFrontendHostStub.js
index 5bca358..64952c3 100644
--- a/weinre.web/client/InspectorFrontendHostStub.js
+++ b/weinre.web/client/InspectorFrontendHostStub.js
@@ -18,6 +18,6 @@
  */
 
 (function() {
-    var InspectorFrontEndHostImpl = require("weinre/client/InspectorFrontendHostImpl")
+    var InspectorFrontEndHostImpl = modjewel.require("weinre/client/InspectorFrontendHostImpl")
     window.InspectorFrontendHost = new InspectorFrontEndHostImpl()
 })()
diff --git a/weinre.web/modjewel.js b/weinre.web/modjewel.js
index 5f84d9c..0a1284b 100644
--- a/weinre.web/modjewel.js
+++ b/weinre.web/modjewel.js
@@ -42,7 +42,7 @@
 // some constants
 //----------------------------------------------------------------------------
 var PROGRAM = "modjewel"
-var VERSION = "1.2.0"
+var VERSION = "2.0.0"
 var global  = this
 
 //----------------------------------------------------------------------------
@@ -55,10 +55,6 @@
 
 global.modjewel = null
 
-var OriginalRequire = global.require
-var OriginalDefine  = global.define
-var NoConflict      = false
-
 //----------------------------------------------------------------------------
 // "globals" (local to this function scope though)
 //----------------------------------------------------------------------------
@@ -174,12 +170,15 @@
     ModulePreloadStore = {}
     MainModule         = create_module(null)
 
-    require_define("modjewel", modjewel_module)
+    var require = get_require(MainModule)
+    var define  = require_define
+    
+    define("modjewel", modjewel_module)
 
-    global.require    = get_require(MainModule)
-    global.define     = require_define
-    global.define.amd = true
-    global.modjewel   = require("modjewel")
+    global.modjewel            = require("modjewel")
+    global.modjewel.require    = require
+    global.modjewel.define     = define
+    global.modjewel.define.amd = {implementation: PROGRAM, version: VERSION}
 }
 
 //----------------------------------------------------------------------------
@@ -333,29 +332,17 @@
 }
 
 //----------------------------------------------------------------------------
-// relinquish modjewel's control of the require variable
-// - like jQuery's version'
-//----------------------------------------------------------------------------
-function modjewel_noConflict() {
-    NoConflict = true
-
-    global.require = OriginalRequire
-    global.define  = OriginalDefine
-}
-
-//----------------------------------------------------------------------------
 // the modjewel module
 //----------------------------------------------------------------------------
 function modjewel_module(require, exports, module) {
     exports.VERSION                = VERSION
-    exports.require                = require
-    exports.define                 = require.define
+    exports.require                = null // filled in later
+    exports.define                 = null // filled in later
     exports.getLoadedModuleIds     = modjewel_getLoadedModuleIds
     exports.getPreloadedModuleIds  = modjewel_getPreloadedModuleIds
     exports.getModule              = modjewel_getModule
     exports.getModuleIdsRequired   = modjewel_getModuleIdsRequired
     exports.warnOnRecursiveRequire = modjewel_warnOnRecursiveRequire
-    exports.noConflict             = modjewel_noConflict
 }
 
 //----------------------------------------------------------------------------
