diff --git a/weinre.application/resources/macosx/weinre.app/Contents/Info.plist b/weinre.application/resources/macosx/weinre.app/Contents/Info.plist
index 0a53779..19b2870 100644
--- a/weinre.application/resources/macosx/weinre.app/Contents/Info.plist
+++ b/weinre.application/resources/macosx/weinre.app/Contents/Info.plist
@@ -2,10 +2,10 @@
 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <plist version="1.0">
diff --git a/weinre.application/resources/macosx/weinre.app/Contents/MacOS/launcher b/weinre.application/resources/macosx/weinre.app/Contents/MacOS/launcher
index 58f266e..9259211 100644
--- a/weinre.application/resources/macosx/weinre.app/Contents/MacOS/launcher
+++ b/weinre.application/resources/macosx/weinre.app/Contents/MacOS/launcher
@@ -1,10 +1,10 @@
 #!/bin/sh
 
 # ---
-# PhoneGap is available under *either* the terms of the modified BSD license *or* the
+# weinre is available under *either* the terms of the modified BSD license *or* the
 # MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 # 
-# Copyright (c) 2010, IBM Corporation
+# Copyright (c) 2010, 2011 IBM Corporation
 # ---
 
 BASEDIR=`dirname $0`
diff --git a/weinre.application/src/com/phonegap/weinre/application/GUIMain.java b/weinre.application/src/com/phonegap/weinre/application/GUIMain.java
index 8336679..18d3082 100644
--- a/weinre.application/src/com/phonegap/weinre/application/GUIMain.java
+++ b/weinre.application/src/com/phonegap/weinre/application/GUIMain.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.application;
diff --git a/weinre.application/src/com/phonegap/weinre/application/GUIPreferences.java b/weinre.application/src/com/phonegap/weinre/application/GUIPreferences.java
index 2646ece..196bcb2 100644
--- a/weinre.application/src/com/phonegap/weinre/application/GUIPreferences.java
+++ b/weinre.application/src/com/phonegap/weinre/application/GUIPreferences.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.application;
diff --git a/weinre.application/src/com/phonegap/weinre/application/ShellSizeTracker.java b/weinre.application/src/com/phonegap/weinre/application/ShellSizeTracker.java
index a5ca3e3..20f05cd 100644
--- a/weinre.application/src/com/phonegap/weinre/application/ShellSizeTracker.java
+++ b/weinre.application/src/com/phonegap/weinre/application/ShellSizeTracker.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.application;
diff --git a/weinre.build/README.md b/weinre.build/README.md
new file mode 100644
index 0000000..c4b08a4
--- /dev/null
+++ b/weinre.build/README.md
@@ -0,0 +1,59 @@
+building weinre
+===============================================================================
+
+weinre is currently built using Eclipse.  You will need a fairly recent version of Eclipse with the Java IDE tooling installed to use it.
+
+weinre is made up of five Eclipse projects:
+
+- `weinre.application`
+- `weinre.build`
+- `weinre.doc`
+- `weinre.server`
+- `weinre.web`
+   
+When initially loaded into Eclipse you will find many errors in the projects. This is due to the fact that libraries that weinre depends on have not yet been loaded into the workspace.  To load these libraries, run the Ant script `weinre.build/build.xml` from the weinre.build directory.
+
+Ensure the property `USE_JAVAC` is NOT set in the personal.properties file. If this property is set, then the java files in the projects will be compiled with javac instead of being assumed to be built with Eclipse, which may cause problems since Eclipse is also compiling the java files.
+
+When the Ant script completes successfully, a full build will have taken place.  The various red X's another issues from Eclipse should be gone. If not:
+
+- select all projects, right click context menu/Refresh
+- use the Eclipse menu item Project/Clean ... 
+
+This should make everything right.
+
+You may want to set the Eclipse preference General/Workspace/Refresh automatically  to true (checked) so you don't have to Refresh and Clean.
+
+Various transient directories in this project (weinre.build) will be created after the build.  They are set to not be stored in the SCM.  They include:
+
+- out
+- cached
+- tmp
+- vendor
+   
+You can delete them whenever you wish, or use the `"clean"` target of the  `weinre.build/build.xml` file to delete them.  Deleting them will cause the build to take longer, to rebuild what you deleted.
+
+The `weinre.build/out` directory in particular contains the final build artifacts:
+
+-  `weinre.build/out/archives/weinre-doc-{version}.zip`
+
+   contains the HTML doc for weinre
+   
+-  `weinre.build/out/archives/weinre-jar-{version}.zip`
+   
+   contains the platform-portable weinre.jar file
+      
+-  `weinre.build/out/archives/weinre-mac-{version}.zip`
+   
+   contains the Mac OS X weinre.app application
+      
+-  `weinre.build/out/archives/weinre-src-{version}.zip`
+   
+   contains the source of the projects (copy of what's in the SCM)
+ 
+To build while you are developing the weinre code, you can use the quicker-to-build `"build-dev"` target of `weinre.build/build.xml` . This will not build the jars or archives, just rebuilds the bits neccessary to run the server from the Eclipse workspace.  A shell script using a Python utility is provided called `"build-continuous.sh"` which you can run and it will run the `"build-dev"` target whenever a relevant source file has changed in the workspace.
+
+building without eclipse
+-------------------------------------------------------------------------------
+
+Ensure the property `USE_JAVAC` is set in the `personal.properties` file. If this property is set, then the java files in the projects will be compiled with javac instead of being assumed to be built with Eclipse.
diff --git a/weinre.build/README.txt b/weinre.build/README.txt
deleted file mode 100644
index d4054cf..0000000
--- a/weinre.build/README.txt
+++ /dev/null
@@ -1,79 +0,0 @@
--------------------------------------------------------------------------------
-building weinre
--------------------------------------------------------------------------------
-
-weinre is currently built using Eclipse.  You will need a fairly recent version
-of Eclipse with the Java IDE tooling installed to use it.
-
-weinre is made up of five Eclipse projects:
-
-   weinre.application
-   weinre.build
-   weinre.doc
-   weinre.server
-   weinre.web
-   
-When initially loaded into Eclipse you will find many errors in the projects.
-This is due to the fact that libraries that weinre depends on have not yet
-been loaded into the workspace.  To load these libraries, run the Ant
-script weinre.build/build.xml from the weinre.build directory.
-
-Ensure the property USE_JAVAC is NOT set in the personal.properties file.
-If this property is set, then the java files in the projects will be
-compiled with javac instead of being assumed to be built with Eclipse,
-which may cause problems since Eclipse is also compiling the java files.
-
-When the Ant script completes successfully, a full build will have taken
-place.  The various red X's another issues from Eclipse should be gone.
-If not:
-
-- select all projects, right click context menu/Refresh
-- use the Eclipse menu item Project/Clean ... 
-
-This should make everything right.
-
-You may want to set the Eclipse preference General/Workspace/Refresh automatically 
-to true (checked) so you don't have to Refresh and Clean.
-
-Various transient directories in this project (weinre.build) will be created
-after the build.  They are set to not be stored in the SCM.  They include:
-
-   out
-   cached
-   tmp
-   vendor
-   
-You can delete them whenever you wish, or use the "clean" target of the 
-weinre.build/build.xml file to delete them.  Deleting them will cause
-the build to take longer, to rebuild what you deleted.
-
-The weinre.build/out directory in particular contains the final
-build artifacts:
-
-   weinre.build/out/archives/weinre-doc-{version}.zip
-      contains the HTML doc for weinre
-   
-   weinre.build/out/archives/weinre-jar-{version}.zip
-      contains the platform-portable weinre.jar file
-      
-   weinre.build/out/archives/weinre-mac-{version}.zip
-      contains the Mac OS X weinre.app application
-      
-   weinre.build/out/archives/weinre-src-{version}.zip
-      contains the source of the projects (copy of what's in the SCM)
- 
-To build while you are developing the weinre code, you can use the
-quicker-to-build "build-dev" target of weinre.build/build.xml .
-This will not build the jars or archives, just rebuilds the bits
-neccessary to run the server from the Eclipse workspace.  A shell
-script using a Python utility is provided called "build-continuous.sh"
-which you can run and it will run the "build-dev" target whenever a
-relevant source file has changed in the workspace.
-
--------------------------------------------------------------------------------
-building without eclipse
--------------------------------------------------------------------------------
-
-Ensure the property USE_JAVAC is set in the personal.properties file.
-If this property is set, then the java files in the projects will be
-compiled with javac instead of being assumed to be built with Eclipse.
diff --git a/weinre.build/build-continuous.sh b/weinre.build/build-continuous.sh
index 53c76bf..7092b1a 100755
--- a/weinre.build/build-continuous.sh
+++ b/weinre.build/build-continuous.sh
@@ -1,10 +1,10 @@
 #!/bin/sh
 
 # ---
-# PhoneGap is available under *either* the terms of the modified BSD license *or* the
+# weinre is available under *either* the terms of the modified BSD license *or* the
 # MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 # 
-# Copyright (c) 2010, IBM Corporation
+# Copyright (c) 2010, 2011 IBM Corporation
 # ---
 
 #-------------------------------------------------------------
@@ -26,4 +26,4 @@
   ../weinre.doc \
   ../weinre.server \
   ../weinre.web
-  
\ No newline at end of file
+  
diff --git a/weinre.build/build.properties b/weinre.build/build.properties
index a1b39ad..51f73d2 100644
--- a/weinre.build/build.properties
+++ b/weinre.build/build.properties
@@ -1,14 +1,14 @@
 # ---
-# PhoneGap is available under *either* the terms of the modified BSD license *or* the
+# weinre is available under *either* the terms of the modified BSD license *or* the
 # MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 # 
-# Copyright (c) 2010, IBM Corporation
+# Copyright (c) 2010, 2011 IBM Corporation
 # ---
 
 #-----------------------------------------------------------
 # weinre version
 #-----------------------------------------------------------
-WEINRE_VERSION: 0.9.9
+WEINRE_VERSION: 1.0.0
 
 #-----------------------------------------------------------
 # some common locations used in the ant scripts
diff --git a/weinre.build/build.xml b/weinre.build/build.xml
index 60fcfcf..3d1340f 100644
--- a/weinre.build/build.xml
+++ b/weinre.build/build.xml
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <project name="build" default="build" basedir="."> 
@@ -228,6 +228,7 @@
         <build-html name="Running"      oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
         <build-html name="Security"     oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
         <build-html name="TestDrive"    oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
+        <build-html name="ChangeLog"    oDir="${WEB}/doc" iDir="../${PROJECT_DOC}"/>
         
         <move file="${WEB}/doc/Home.html" tofile="${WEB}/doc/index.html"/>
         
@@ -568,4 +569,4 @@
     </macrodef>
                     
     <!-- ============================================================ -->
-</project>
\ No newline at end of file
+</project>
diff --git a/weinre.build/get-vendor.xml b/weinre.build/get-vendor.xml
index f3520b5..25671ec 100644
--- a/weinre.build/get-vendor.xml
+++ b/weinre.build/get-vendor.xml
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <project name="get-vendor" default="get-vendor" basedir=".">
@@ -26,4 +26,4 @@
         <delete dir="${TMP}"/>
     </target>
     
-</project>
\ No newline at end of file
+</project>
diff --git a/weinre.build/new-release-notes.md b/weinre.build/new-release-notes.md
new file mode 100644
index 0000000..476e2d0
--- /dev/null
+++ b/weinre.build/new-release-notes.md
@@ -0,0 +1,95 @@
+steps to create a new release
+===============================================================================
+
+- check out project into a new branch, say `release-x.y.z`
+
+- update the `WEINRE_VERSION` variable in `weinre.build/build.properties` as appropriate
+
+- add changelog to `weinre.doc/ChangeLog.body.html`, built with `weinre.build/scripts/changelog.sh`
+
+- fix other doc as necessary
+
+- perform full build with one of:
+
+   - cd into `weinre.build` and run ant
+
+   - in Eclipse, select `weinre build.xml` from the External Tools menu
+
+- run the smoke test (see below) to ensure delicious smoky flavor
+
+- upload the `weinre-jar-x.y.z.zip` and `weinre-mac-x.y.z.zip` files
+
+- make sure you can download those zip files!
+
+- commit release changes:
+   - `git add .`
+   - `git commit -m update for release x.y.z`
+
+- merge branch onto master:
+
+   - `git checkout master`
+   - `git merge --no-ff release-x.y.z`
+   - `git push`
+   - `git tag -a x.y.z`
+   - `git push --tags`
+
+- merge branch onto develop:
+
+   - `git checkout develop`
+   - `git merge --no-ff release-x.y.z`
+   - `git push`
+   - `git branch -d release-x.y.z`   
+
+- update github pages:
+
+   - `git checkout gh_pages`
+   - `cp -r ~/Projects/weinre/weinre.build/out/web/doc/* .` (or whatever)
+   - `git add .`
+   - `git commit -m update for release x.y.z`
+   - `git push`
+
+- announce to the world!
+
+
+smoke test
+===============================================================================
+
+The smoke test involves testing the three archives:
+
+- `weinre-doc.zip`
+- `weinre-mac.zip`
+- `weinre-jar.zip`
+
+
+smoke test - doc
+-------------------------------------------------------------------------------
+
+- unzip `weinre-doc.zip`
+- browse all pages
+
+
+smoke test - mac
+-------------------------------------------------------------------------------
+
+- unzip `weinre-mac.zip`
+- make sure `build-info.txt` looks right
+- launch the app
+- open a new browser on [http://localhost:8081/demo/weinre-demo.html](http://localhost:8081/demo/weinre-demo.html)
+- poke around the demo, make sure it works
+- close app
+- start server in eclipse
+- launch the app
+- should get error about port in use
+
+smoke test - jar
+-------------------------------------------------------------------------------
+
+- unzip `weinre-jar.zip`
+- make sure `build-info.txt` looks right
+- run `java -jar weinre.jar --help` make sure help works
+- run `java -jar weinre.jar` make sure help works
+- poke around the demo, make sure it works
+- kill server
+- start server in eclipse
+- run `java -jar weinre.jar` make sure help works
+- should get error about port in use
diff --git a/weinre.build/sample.personal.properties b/weinre.build/sample.personal.properties
index 79d817b..cd08d0b 100644
--- a/weinre.build/sample.personal.properties
+++ b/weinre.build/sample.personal.properties
@@ -1,8 +1,8 @@
 # ---
-# PhoneGap is available under *either* the terms of the modified BSD license *or* the
+# weinre is available under *either* the terms of the modified BSD license *or* the
 # MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 # 
-# Copyright (c) 2010, IBM Corporation
+# Copyright (c) 2010, 2011 IBM Corporation
 # ---
 
 #------------------------------------------------------------------------------
diff --git a/weinre.build/scripts/build-client-html.py b/weinre.build/scripts/build-client-html.py
index ca2b26e..c71d57c 100644
--- a/weinre.build/scripts/build-client-html.py
+++ b/weinre.build/scripts/build-client-html.py
@@ -1,10 +1,10 @@
 #!/usr/bin/env python
 
 # ---
-# PhoneGap is available under *either* the terms of the modified BSD license *or* the
+# weinre is available under *either* the terms of the modified BSD license *or* the
 # MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 # 
-# Copyright (c) 2010, IBM Corporation
+# Copyright (c) 2010, 2011 IBM Corporation
 # ---
 
 import os
@@ -51,6 +51,8 @@
             
             newLines.append("<!-- ========== weinre additions: starting ========== -->\n")
             newLines.extend([
+                '<meta http-equiv="X-UA-Compatible" content="chrome=1">\n'
+                '<link rel="shortcut icon" href="../images/weinre-icon-64x64.png">\n',
                 '<title>weinre</title>\n',
                 '<link rel="stylesheet" type="text/css" href="weinre/client.css">\n',
                 '<script type="text/javascript" src="weinre/check-for-webkit.js"></script>\n',
diff --git a/weinre.build/scripts/build-css-properties.py b/weinre.build/scripts/build-css-properties.py
index b952613..f380583 100644
--- a/weinre.build/scripts/build-css-properties.py
+++ b/weinre.build/scripts/build-css-properties.py
@@ -1,10 +1,10 @@
 #!/usr/bin/env python
 
 # ---
-# PhoneGap is available under *either* the terms of the modified BSD license *or* the
+# weinre is available under *either* the terms of the modified BSD license *or* the
 # MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 # 
-# Copyright (c) 2010, IBM Corporation
+# Copyright (c) 2010, 2011 IBM Corporation
 # ---
 
 import os
diff --git a/weinre.build/scripts/build-target-scripts.py b/weinre.build/scripts/build-target-scripts.py
index 9fe8ed3..e887b1c 100644
--- a/weinre.build/scripts/build-target-scripts.py
+++ b/weinre.build/scripts/build-target-scripts.py
@@ -1,10 +1,10 @@
 #!/usr/bin/env python
 
 # ---
-# PhoneGap is available under *either* the terms of the modified BSD license *or* the
+# weinre is available under *either* the terms of the modified BSD license *or* the
 # MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 # 
-# Copyright (c) 2010, IBM Corporation
+# Copyright (c) 2010, 2011 IBM Corporation
 # ---
 
 import os
@@ -109,10 +109,10 @@
 #
 #--------------------------------------------------------------------
 def min(script):
-    patternCommentC   = re.compile(r"\/\*.*?\*\/", re.MULTILINE + re.DOTALL)
-    patternCommentCPP = re.compile(r"\/\/.*?$",    re.MULTILINE)
-    patternIndent     = re.compile(r"^\s*",        re.MULTILINE)
-    patternBlankLine  = re.compile(r"^\s*\n",      re.MULTILINE)
+    patternCommentC   = re.compile(r"/\*.*?\*/",     re.MULTILINE + re.DOTALL)
+    patternCommentCPP = re.compile(r"(?<!\\)//.*?$", re.MULTILINE)
+    patternIndent     = re.compile(r"^\s*",          re.MULTILINE)
+    patternBlankLine  = re.compile(r"^\s*\n",        re.MULTILINE)
 
     script = patternCommentC.sub(   "", script)
     script = patternCommentCPP.sub( "", script)
diff --git a/weinre.build/scripts/changelog.sh b/weinre.build/scripts/changelog.sh
new file mode 100755
index 0000000..3b4c41c
--- /dev/null
+++ b/weinre.build/scripts/changelog.sh
@@ -0,0 +1,14 @@
+#/bin/sh
+
+# ---
+# weinre is available under *either* the terms of the modified BSD license *or* the
+# MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+# 
+# Copyright (c) 2011 IBM Corporation
+# ---
+
+git log "--pretty=format:- %s" $1.. | \
+    sed 's/#\([0-9]*\)/\<a href="https:\/\/github.com\/pmuellr\/weinre\/issues\/1"\>issue \1\<\/a\>./' |
+    sed 's/^-/\<li\>/'
+
+#    sed 's/#\([0-9]*\)/[issue \1](https:\/\/github.com\/pmuellr\/weinre\/issues\/1)./'
diff --git a/weinre.build/scripts/collect-all-json-idl.py b/weinre.build/scripts/collect-all-json-idl.py
index a9ecbf8..936a057 100644
--- a/weinre.build/scripts/collect-all-json-idl.py
+++ b/weinre.build/scripts/collect-all-json-idl.py
@@ -1,10 +1,10 @@
 #!/usr/bin/env python
 
 # ---
-# PhoneGap is available under *either* the terms of the modified BSD license *or* the
+# weinre is available under *either* the terms of the modified BSD license *or* the
 # MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 # 
-# Copyright (c) 2010, IBM Corporation
+# Copyright (c) 2010, 2011 IBM Corporation
 # ---
 
 import os
diff --git a/weinre.build/scripts/simple-idl2json.py b/weinre.build/scripts/simple-idl2json.py
index b9bf540..ac54141 100644
--- a/weinre.build/scripts/simple-idl2json.py
+++ b/weinre.build/scripts/simple-idl2json.py
@@ -1,10 +1,10 @@
 #!/usr/bin/env python
 
 # ---
-# PhoneGap is available under *either* the terms of the modified BSD license *or* the
+# weinre is available under *either* the terms of the modified BSD license *or* the
 # MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 # 
-# Copyright (c) 2010, IBM Corporation
+# Copyright (c) 2010, 2011 IBM Corporation
 # ---
 
 import os
diff --git a/weinre.doc/Building.body.html b/weinre.doc/Building.body.html
index 153ebf1..26f9bdc 100644
--- a/weinre.doc/Building.body.html
+++ b/weinre.doc/Building.body.html
@@ -1,16 +1,17 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
+<p>The source repository for weinre is maintained at 
+<a href="https://github.com/pmuellr/weinre">GitHub</a>.
+
 <p>To build the current version of <span class="weinre">weinre</span>, you need to be using Eclipse.
 
 <p>At development time, <span class="weinre">weinre</span> consists of 5 Eclipse
-projects.  See the file <tt>README.txt</tt> in the
+projects.  See the file <tt>README.md</tt> in the
 <tt>weinre.build</tt> project for more instructions on
 how to perform a build.
 
-<p>The source repository for weinre is maintained at 
-<a href="https://github.com/pmuellr/weinre">GitHub</a>.
\ No newline at end of file
diff --git a/weinre.doc/ChangeLog.body.html b/weinre.doc/ChangeLog.body.html
new file mode 100644
index 0000000..1405e7b
--- /dev/null
+++ b/weinre.doc/ChangeLog.body.html
@@ -0,0 +1,26 @@
+<!--
+ * weinre is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ * 
+ * Copyright (c) 2011 IBM Corporation
+-->
+
+<h2>2011/01/25 - version 1.0.0</h2>
+<ul>
+<li> Don't display "not implemented" messages. Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 19</a>.
+<li> Remove node highlighting cruft.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 18</a>.
+<li> Add meta element to enable GCF for client. Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 17</a>.
+<li> Make bookmarklet more portable.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 16</a>.
+<li> Enable node highlighting.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 2</a>.
+<li> Change copyright statements.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 13</a>.
+<li> Change Weinre.Console to Console.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 11</a>.
+<li> Add implementation for settings.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 5</a>.
+<li> Provide better escape for // comments in minifier.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 6</a>.
+<li> Get metrics working in Elements panel.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 1</a>.
+</ul>
+
+<h2>2010/12/16 - version 0.9.9</h2>
+
+<ul>
+<li>initial release
+</ul>
\ No newline at end of file
diff --git a/weinre.doc/Home.body.html b/weinre.doc/Home.body.html
index e61bd19..20b51bc 100644
--- a/weinre.doc/Home.body.html
+++ b/weinre.doc/Home.body.html
@@ -1,9 +1,9 @@
 
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <p><span class="weinre">weinre</span> is <b>We</b>b <b>In</b>spector <b>Re</b>mote.
diff --git a/weinre.doc/Installing.body.html b/weinre.doc/Installing.body.html
index 7c92fdc..28c031c 100644
--- a/weinre.doc/Installing.body.html
+++ b/weinre.doc/Installing.body.html
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <p><span class="weinre">weinre</span> is shipped as two archives
diff --git a/weinre.doc/License.body.html b/weinre.doc/License.body.html
index 20efc1e..d09972d 100644
--- a/weinre.doc/License.body.html
+++ b/weinre.doc/License.body.html
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <p>weinre contains code from the following other projects:
@@ -33,4 +33,4 @@
 the MIT License. 
 See 
 <a href="http://opensource.org/licenses/alphabetical">http://opensource.org/licenses/alphabetical</a> 
-for full text.
\ No newline at end of file
+for full text.
diff --git a/weinre.doc/Running.body.html b/weinre.doc/Running.body.html
index 2c6f46b..8af91d8 100644
--- a/weinre.doc/Running.body.html
+++ b/weinre.doc/Running.body.html
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <p>This page describes how to use <span class="weinre">weinre</span> to debug
@@ -245,7 +245,7 @@
 <p>To make your web page debuggable with <span class="weinre">weinre</span>,
 add the following line to your web page:
 <pre>
-&lt;script src="http://a.b.c:8081/target/target-script.js"&gt;&lt;/script&gt; 
+&lt;script src="http://a.b.c:8081/target/target-script-min.js"&gt;&lt;/script&gt; 
 </pre>
 
 <p>You can now open a debug client by browsing to
@@ -303,26 +303,23 @@
 
 <p>Some platforms support 'bookmarkets', which allow you to inject
 arbitrary JavaScript code into any web page running in your 
-browser.  Mobile Safari is one of these browsers.  
-See the following "open enhancement request" for the methods
-of installing bookmarklets in Mobile Safari -
-<a href="http://www.marco.org/1288715399">http://www.marco.org/1288715399</a>.
+browser.  Mobile Safari is one of these browsers.  It appears that
+the browser shipped with Android 2.2 and later also supports bookmarklets.
 
-<p>The following recipe can be used for a bookmarket to get the 
-weinre debug target code injected into an arbitrary web page:
+<p>Unfortunately, installing bookmarkets on mobile devices isn't usually trivial.  The easiest
+course of action is to add a new random bookmark to your bookmarks,
+and then edit it by hand to change the label and URL.  The URL
+you should use is available in both a 'pre' and 'textarea' section
+of the server's home page (eg, http://localhost:8081/).  You should
+be able to select the text from one of these areas easily, to
+paste into the previously added bookmark.
 
-<pre>
-javascript:;(function%20(){%20var%20e=document.createElement("script");
-%20e.setAttribute("language","javascript");
-%20e.setAttribute("src","http://[debug server host]:[debug server port]/target/target-script.js");
-%20document.body.appendChild(e);})();void(0);
-</pre>
-
-<p>Note that this code is split across multiple lines in this document, but
-should be all one line in your actual bookmark.
+<p>Once the bookmarklet is installed, you can debug any web page
+by visiting it, and selecting the bookmarklet from your bookmarks
+menu.
 
 <!-- ======================================================== -->
-<h2>Using the <tt>target/target-script.js</tt> file statically</h2>
+<h2>Using the <tt>target/target-script-min.js</tt> file statically</h2>
 
 <p>If you'd like to use the debug target code statically, instead of
 downloading it from the server all the time, then you will need to do
@@ -338,7 +335,7 @@
 
 <p>This URL overrides what's otherwise calculated from the debug target
 code itself.  You will need to set this value before the
-<tt>target/target-script.js</tt> script is loaded. 
+<tt>target/target-script-min.js</tt> script is loaded. 
 
 <!-- ======================================================== -->
 <h3>Future Enhancements</h3>
@@ -347,7 +344,7 @@
 ham-fisted.  We should look at additional ways to handle this.
 For instance, we could prompt the user for the debug server
 address, and then always using the debug target in a more static
-mode; eg, you'd include the <tt>target-script.js</tt> with all your
+mode; eg, you'd include the <tt>target-script-min.js</tt> with all your
 other files in your application.
 
 <p>Running the debug server on the target device is another option.
@@ -361,4 +358,4 @@
 means having to type a different URL in your web browser on your desktop / laptop
 when running the debug client. That's easier than hard-coding
 URLs in your web page, for instance.
- 
\ No newline at end of file
+ 
diff --git a/weinre.doc/Security.body.html b/weinre.doc/Security.body.html
index 7b5b3fc..ab1d4ad 100644
--- a/weinre.doc/Security.body.html
+++ b/weinre.doc/Security.body.html
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <p>About security for <span class="weinre">weinre</span>: <b>there is none</b>.
diff --git a/weinre.doc/TestDrive.body.html b/weinre.doc/TestDrive.body.html
index 0986076..df76763 100644
--- a/weinre.doc/TestDrive.body.html
+++ b/weinre.doc/TestDrive.body.html
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <p>This page gives a walk through of using <span class="weinre">weinre</span> to 
@@ -57,9 +57,10 @@
 server's home page, at
 <tt><a href="http://localhost:8081/">http://localhost:8081/</a></tt>.
 
-<p class="note">Note: <span class="weinre">weinre</span> is currently only
+<p class="note">Note: <span class="weinre">weinre</span> debug client is currently only
 supported in WebKit-based browsers, like Google's Chrome and Apple's Safari
-browsers. 
+browsers.  You can also use Internet Explorer if you have Google Chrome Frame
+installed.
 
 <p>It should look something like this (the red arrows were added to
 the image for emphasis):
diff --git a/weinre.doc/boilerplate-header.html.txt b/weinre.doc/boilerplate-header.html.txt
index 69761d8..383c2e2 100644
--- a/weinre.doc/boilerplate-header.html.txt
+++ b/weinre.doc/boilerplate-header.html.txt
@@ -1,10 +1,10 @@
 <!doctype html>
 
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <html>
@@ -15,8 +15,6 @@
 </head>
 <body>
 
-<a href="https://github.com/pmuellr/weinre"><img style="position: absolute; top: 0; left: 0; border: 0;" src="https://assets1.github.com/img/5d21241b64dc708fcbb701f68f72f41e9f1fadd6?repo=&url=http%3A%2F%2Fs3.amazonaws.com%2Fgithub%2Fribbons%2Fforkme_left_red_aa0000.png&path=" alt="Fork me on GitHub"></a>
-
 <!-- ======================================================================= -->
 <h1 class="page-title">weinre - @PAGE_NAME@</h1>
 
@@ -27,6 +25,7 @@
 - <a href="Running.html">Running</a>
 - <a href="Security.html">Security</a>
 - <a href="Building.html">Building</a>
+- <a href="ChangeLog.html">ChangeLog</a>
 - <a href="License.html">License</a>
 <p>
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/weinre.doc/boilerplate-trailer.html.txt b/weinre.doc/boilerplate-trailer.html.txt
index 37993a7..531ee60 100644
--- a/weinre.doc/boilerplate-trailer.html.txt
+++ b/weinre.doc/boilerplate-trailer.html.txt
@@ -1,10 +1,10 @@
 
 
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <div class="toc">
@@ -16,10 +16,11 @@
 - <a href="Running.html">Running</a>
 - <a href="Security.html">Security</a>
 - <a href="Building.html">Building</a>
+- <a href="ChangeLog.html">ChangeLog</a>
 - <a href="License.html">License</a>
 
 <br><img src="images/weinre-icon-128x128.png">
 </div>
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/weinre.doc/css/main.css b/weinre.doc/css/main.css
index 40870ec..d3fd04c 100644
--- a/weinre.doc/css/main.css
+++ b/weinre.doc/css/main.css
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 body {
@@ -143,4 +143,4 @@
 	border-radius:         0.5em; 
     -moz-border-radius:    0.5em; 
     -webkit-border-radius: 0.5em;	
-}
\ No newline at end of file
+}
diff --git a/weinre.doc/scripts/main.js b/weinre.doc/scripts/main.js
index 2f9f2e3..ce6c8f2 100644
--- a/weinre.doc/scripts/main.js
+++ b/weinre.doc/scripts/main.js
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 //-----------------------------------------------------------------------------
@@ -76,4 +76,4 @@
 }
 
 //-----------------------------------------------------------------------------
-main()
\ No newline at end of file
+main()
diff --git a/weinre.server/interfaces/WeinreClientCommands.idl b/weinre.server/interfaces/WeinreClientCommands.idl
index 7bcc400..5c3072b 100644
--- a/weinre.server/interfaces/WeinreClientCommands.idl
+++ b/weinre.server/interfaces/WeinreClientCommands.idl
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 module weinre {
diff --git a/weinre.server/interfaces/WeinreClientEvents.idl b/weinre.server/interfaces/WeinreClientEvents.idl
index 080ea53..8707679 100644
--- a/weinre.server/interfaces/WeinreClientEvents.idl
+++ b/weinre.server/interfaces/WeinreClientEvents.idl
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 module weinre {
diff --git a/weinre.server/interfaces/WeinreTargetCommands.idl b/weinre.server/interfaces/WeinreTargetCommands.idl
index e098b13..b7de6d8 100644
--- a/weinre.server/interfaces/WeinreTargetCommands.idl
+++ b/weinre.server/interfaces/WeinreTargetCommands.idl
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 module weinre {
diff --git a/weinre.server/interfaces/WeinreTargetEvents.idl b/weinre.server/interfaces/WeinreTargetEvents.idl
index 03a042f..7f70c28 100644
--- a/weinre.server/interfaces/WeinreTargetEvents.idl
+++ b/weinre.server/interfaces/WeinreTargetEvents.idl
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 module weinre {
diff --git a/weinre.server/src/com/phonegap/weinre/server/Channel.java b/weinre.server/src/com/phonegap/weinre/server/Channel.java
index f2a904d..ced3edd 100644
--- a/weinre.server/src/com/phonegap/weinre/server/Channel.java
+++ b/weinre.server/src/com/phonegap/weinre/server/Channel.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/ChannelManager.java b/weinre.server/src/com/phonegap/weinre/server/ChannelManager.java
index 40c623d..15fdc1b 100644
--- a/weinre.server/src/com/phonegap/weinre/server/ChannelManager.java
+++ b/weinre.server/src/com/phonegap/weinre/server/ChannelManager.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/ChannelManagerEventListener.java b/weinre.server/src/com/phonegap/weinre/server/ChannelManagerEventListener.java
index 1724b1e..a278092 100644
--- a/weinre.server/src/com/phonegap/weinre/server/ChannelManagerEventListener.java
+++ b/weinre.server/src/com/phonegap/weinre/server/ChannelManagerEventListener.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/Client.java b/weinre.server/src/com/phonegap/weinre/server/Client.java
index 9a081de..a335b5b 100644
--- a/weinre.server/src/com/phonegap/weinre/server/Client.java
+++ b/weinre.server/src/com/phonegap/weinre/server/Client.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/ConnectionManager.java b/weinre.server/src/com/phonegap/weinre/server/ConnectionManager.java
index 212f44e..df61fa8 100644
--- a/weinre.server/src/com/phonegap/weinre/server/ConnectionManager.java
+++ b/weinre.server/src/com/phonegap/weinre/server/ConnectionManager.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/Connector.java b/weinre.server/src/com/phonegap/weinre/server/Connector.java
index c1a6886..7b1ea8b 100644
--- a/weinre.server/src/com/phonegap/weinre/server/Connector.java
+++ b/weinre.server/src/com/phonegap/weinre/server/Connector.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/ConsoleOutputStream.java b/weinre.server/src/com/phonegap/weinre/server/ConsoleOutputStream.java
index 119f60c..13639d7 100644
--- a/weinre.server/src/com/phonegap/weinre/server/ConsoleOutputStream.java
+++ b/weinre.server/src/com/phonegap/weinre/server/ConsoleOutputStream.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/Main.java b/weinre.server/src/com/phonegap/weinre/server/Main.java
index ea0d6e7..6cf4e76 100644
--- a/weinre.server/src/com/phonegap/weinre/server/Main.java
+++ b/weinre.server/src/com/phonegap/weinre/server/Main.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
@@ -59,6 +59,7 @@
         super();
         
         Settings = ServerSettings.getOptions(args);
+        if (null == Settings) System.exit(0);
         
         consoleStdout = ConsoleOutputStream.newPrintStream(this, System.out, true);
         consoleStderr = ConsoleOutputStream.newPrintStream(this, System.err, false);
diff --git a/weinre.server/src/com/phonegap/weinre/server/MessageHandler.java b/weinre.server/src/com/phonegap/weinre/server/MessageHandler.java
index 7d3bd83..2c49d68 100644
--- a/weinre.server/src/com/phonegap/weinre/server/MessageHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/MessageHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/MessageQueue.java b/weinre.server/src/com/phonegap/weinre/server/MessageQueue.java
index 8d8173c..0780992 100644
--- a/weinre.server/src/com/phonegap/weinre/server/MessageQueue.java
+++ b/weinre.server/src/com/phonegap/weinre/server/MessageQueue.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/ScriptEventQueue.java b/weinre.server/src/com/phonegap/weinre/server/ScriptEventQueue.java
index 8e2df3c..70c805e 100644
--- a/weinre.server/src/com/phonegap/weinre/server/ScriptEventQueue.java
+++ b/weinre.server/src/com/phonegap/weinre/server/ScriptEventQueue.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/ServerConsoleUpdater.java b/weinre.server/src/com/phonegap/weinre/server/ServerConsoleUpdater.java
index 7b19903..41671ce 100644
--- a/weinre.server/src/com/phonegap/weinre/server/ServerConsoleUpdater.java
+++ b/weinre.server/src/com/phonegap/weinre/server/ServerConsoleUpdater.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/ServerSettings.java b/weinre.server/src/com/phonegap/weinre/server/ServerSettings.java
index 08bc11a..e8ecde0 100644
--- a/weinre.server/src/com/phonegap/weinre/server/ServerSettings.java
+++ b/weinre.server/src/com/phonegap/weinre/server/ServerSettings.java
@@ -1,15 +1,12 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
 
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
 import java.net.InetAddress;
 import java.net.NetworkInterface;
 import java.net.SocketException;
@@ -102,24 +99,7 @@
      * 
      */
     private Properties fromPropertiesFile() {
-        Properties result = new Properties();
-        
-        String userHome = System.getProperty("user.home");
-        if (null == userHome) {
-            System.err.println("System property user.home not set!");
-            return result;
-        }
-        
-        File file = new File(new File(userHome, ".weinre"), "server.properties");
-        
-        if (!file.exists()) return result;
-        
-        try {
-            result.load(new FileReader(file));
-        }
-        catch (IOException e) {
-            System.err.println("Exception reading '" + file.getAbsolutePath() + "': " + e);
-        }
+        Properties result = Utility.readPropertiesFile("server.properties");
         
         // ya, Properties doesn't trim space off values
         for (String key: result.stringPropertyNames()) {
diff --git a/weinre.server/src/com/phonegap/weinre/server/Target.java b/weinre.server/src/com/phonegap/weinre/server/Target.java
index af1e26c..261e60d 100644
--- a/weinre.server/src/com/phonegap/weinre/server/Target.java
+++ b/weinre.server/src/com/phonegap/weinre/server/Target.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/Utility.java b/weinre.server/src/com/phonegap/weinre/server/Utility.java
index bdf7252..0ce6f38 100644
--- a/weinre.server/src/com/phonegap/weinre/server/Utility.java
+++ b/weinre.server/src/com/phonegap/weinre/server/Utility.java
@@ -1,13 +1,18 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
 
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.security.SecureRandom;
+import java.util.Properties;
 
 /**
  * 
@@ -59,4 +64,78 @@
         return response;
     }
     
+    /**
+     * 
+     */
+    static public Properties readPropertiesFile(String fileName) {
+        Properties result = new Properties();
+        
+        String userHome = System.getProperty("user.home");
+        if (null == userHome) {
+            Main.warn("System property user.home not set!");
+            return result;
+        }
+        
+        File file = new File(new File(userHome, ".weinre"), fileName);
+        
+        if (!file.exists()) return result;
+        
+        FileReader fr = null;
+        try {
+            fr = new FileReader(file);
+            result.load(fr);
+        }
+        catch (IOException e) {
+            Main.warn("Exception reading '" + file.getAbsolutePath() + "': " + e);
+        }
+        finally {
+            try { if (fr != null) fr.close(); } catch (Exception e) {}
+        }
+        
+        // ya, Properties doesn't trim space off values
+        for (String key: result.stringPropertyNames()) {
+            String val = result.getProperty(key);
+            result.setProperty(key, val.trim());
+        }
+        
+        return result;
+    }
+
+    /**
+     * 
+     */
+    static public void writePropertiesFile(String fileName, Properties properties) {
+        String userHome = System.getProperty("user.home");
+        if (null == userHome) {
+            Main.warn("System property user.home not set!");
+            return;
+        }
+        
+        File file = new File(userHome, ".weinre");
+        if (!file.exists()) {
+            if (!file.mkdir()) {
+                Main.warn("unable to create directory ~/.weinre");
+                return;
+            }
+        }
+        
+        if (!file.isDirectory()) {
+            Main.warn("can't write ~/.weinre/" + fileName + " since ~/.weinre is not a directory");
+            return;
+        }
+        
+        file = new File(file, fileName);
+        FileWriter fw = null;
+        try {
+            fw = new FileWriter(file);
+            properties.store(fw, fileName);
+        }
+        catch (IOException e) {
+            Main.warn("Exception writing '" + file.getAbsolutePath() + "': " + e);
+        }
+        finally {
+            try { if (fw != null) fw.close(); } catch (Exception e) {}
+        }
+    }
+
 }
diff --git a/weinre.server/src/com/phonegap/weinre/server/WatchDog.java b/weinre.server/src/com/phonegap/weinre/server/WatchDog.java
index fe3ca93..e9cabe2 100644
--- a/weinre.server/src/com/phonegap/weinre/server/WatchDog.java
+++ b/weinre.server/src/com/phonegap/weinre/server/WatchDog.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server;
diff --git a/weinre.server/src/com/phonegap/weinre/server/http/ClassPathResourceHandler.java b/weinre.server/src/com/phonegap/weinre/server/http/ClassPathResourceHandler.java
index fdc948a..9568895 100644
--- a/weinre.server/src/com/phonegap/weinre/server/http/ClassPathResourceHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/http/ClassPathResourceHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.http;
diff --git a/weinre.server/src/com/phonegap/weinre/server/http/DebugHandler.java b/weinre.server/src/com/phonegap/weinre/server/http/DebugHandler.java
index 469bc67..db5ba25 100644
--- a/weinre.server/src/com/phonegap/weinre/server/http/DebugHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/http/DebugHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.http;
diff --git a/weinre.server/src/com/phonegap/weinre/server/http/FilteredRequestLogHandler.java b/weinre.server/src/com/phonegap/weinre/server/http/FilteredRequestLogHandler.java
index 465a972..0902d8d 100644
--- a/weinre.server/src/com/phonegap/weinre/server/http/FilteredRequestLogHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/http/FilteredRequestLogHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.http;
diff --git a/weinre.server/src/com/phonegap/weinre/server/http/HttpServer.java b/weinre.server/src/com/phonegap/weinre/server/http/HttpServer.java
index 15faf35..772f196 100644
--- a/weinre.server/src/com/phonegap/weinre/server/http/HttpServer.java
+++ b/weinre.server/src/com/phonegap/weinre/server/http/HttpServer.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.http;
diff --git a/weinre.server/src/com/phonegap/weinre/server/http/HttpSocketHandler.java b/weinre.server/src/com/phonegap/weinre/server/http/HttpSocketHandler.java
index 81325f4..e2d0290 100644
--- a/weinre.server/src/com/phonegap/weinre/server/http/HttpSocketHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/http/HttpSocketHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.http;
diff --git a/weinre.server/src/com/phonegap/weinre/server/http/ProxyServer.java b/weinre.server/src/com/phonegap/weinre/server/http/ProxyServer.java
index ff19398..295a454 100644
--- a/weinre.server/src/com/phonegap/weinre/server/http/ProxyServer.java
+++ b/weinre.server/src/com/phonegap/weinre/server/http/ProxyServer.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.http;
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/InspectorBackend.java b/weinre.server/src/com/phonegap/weinre/server/service/InspectorBackend.java
index 3c926e5..c81db37 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/InspectorBackend.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/InspectorBackend.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
@@ -47,4 +47,4 @@
         } 
     }
 
-}
\ No newline at end of file
+}
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WebInspector.java b/weinre.server/src/com/phonegap/weinre/server/service/WebInspector.java
index 1d3832e..0acc718 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WebInspector.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WebInspector.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorApplicationCacheHandler.java b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorApplicationCacheHandler.java
index f98d9bd..b49e0d3 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorApplicationCacheHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorApplicationCacheHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorBackendHandler.java b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorBackendHandler.java
index a4d4d15..8347e40 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorBackendHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorBackendHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorControllerHandler.java b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorControllerHandler.java
index 166f707..c426712 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorControllerHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorControllerHandler.java
@@ -1,18 +1,20 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
 
 import java.io.IOException;
+import java.util.Properties;
 
 import org.apache.wink.json4j.JSONException;
 import org.apache.wink.json4j.JSONObject;
 
 import com.phonegap.weinre.server.Channel;
+import com.phonegap.weinre.server.Utility;
 
 
 /**
@@ -20,22 +22,31 @@
  */
 public class WebInspectorControllerHandler extends InspectorBackend {
 
+    static final private String AppKey       = "applicationSettings";
+    static final private String SesKey       = "sessionSettings";
+    static final private String SettingsName = "client-settings.properties";
+    
+    private Properties settings;
+    
     /**
      * 
      */
     public WebInspectorControllerHandler() {
         super();
+        
+        readSettings();
     }
 
     /**
      * 
      */
     public void getSettings(Channel channel, String callbackId) throws IOException {
-        JSONObject settings = new JSONObject();
+
+        JSONObject settingsResult = new JSONObject();
         
         try {
-            settings.put("application", "{}");
-            settings.put("session",     "{}");
+            settingsResult.put("application", settings.getProperty(AppKey));
+            settingsResult.put("session",     settings.getProperty(SesKey));
         } catch (JSONException e) {
             throw new RuntimeException(e);
         }
@@ -46,6 +57,43 @@
     /**
      * 
      */
+    public void saveApplicationSettings(Channel channel, String settingsString, String callbackId) throws IOException {
+        settings.setProperty(AppKey, settingsString);
+        writeSettings();
+        
+        channel.sendCallback("WeinreClientEvents", callbackId, settings);
+    }
+    
+    /**
+     * 
+     */
+    public void saveSessionSettings(Channel channel, String settingsString, String callbackId) throws IOException {
+        settings.setProperty(SesKey, settingsString);
+        writeSettings();
+        
+        channel.sendCallback("WeinreClientEvents", callbackId, settings);
+    }
+
+    /**
+     * 
+     */
+    private void readSettings() {
+        settings = Utility.readPropertiesFile(SettingsName);
+        
+        if (!settings.containsKey(AppKey)) settings.setProperty(AppKey, "{}");
+        if (!settings.containsKey(SesKey)) settings.setProperty(SesKey, "{}");
+    }
+
+    /**
+     * 
+     */
+    private void writeSettings() {
+        Utility.writePropertiesFile(SettingsName, settings);
+    }
+
+    /**
+     * 
+     */
     public void getInspectorState(Channel channel, String callbackId) throws IOException {
         JSONObject state = new JSONObject();
         try {
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorDOMHandler.java b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorDOMHandler.java
index 2754f30..25d9c9e 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorDOMHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorDOMHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorDebugHandler.java b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorDebugHandler.java
index 995b7c5..c21a082 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorDebugHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorDebugHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorProfilerHandler.java b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorProfilerHandler.java
index c571073..ffaf436 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorProfilerHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorProfilerHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorResourceHandler.java b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorResourceHandler.java
index 7d94529..ab0cf5b 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorResourceHandler.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WebInspectorResourceHandler.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WeinreClientCommands.java b/weinre.server/src/com/phonegap/weinre/server/service/WeinreClientCommands.java
index c9a4f42..e94c261 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WeinreClientCommands.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WeinreClientCommands.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
diff --git a/weinre.server/src/com/phonegap/weinre/server/service/WeinreTargetCommands.java b/weinre.server/src/com/phonegap/weinre/server/service/WeinreTargetCommands.java
index 189dab8..f2dda25 100644
--- a/weinre.server/src/com/phonegap/weinre/server/service/WeinreTargetCommands.java
+++ b/weinre.server/src/com/phonegap/weinre/server/service/WeinreTargetCommands.java
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 package com.phonegap.weinre.server.service;
diff --git a/weinre.web/client/InspectorBackendStub.js b/weinre.web/client/InspectorBackendStub.js
index 77af730..56c912d 100644
--- a/weinre.web/client/InspectorBackendStub.js
+++ b/weinre.web/client/InspectorBackendStub.js
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 
diff --git a/weinre.web/client/InspectorFrontendHostStub.js b/weinre.web/client/InspectorFrontendHostStub.js
index 1ff6593..e409743 100644
--- a/weinre.web/client/InspectorFrontendHostStub.js
+++ b/weinre.web/client/InspectorFrontendHostStub.js
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 (function() {
diff --git a/weinre.web/client/weinre/check-for-webkit.js b/weinre.web/client/weinre/check-for-webkit.js
index de724ed..7077ec8 100644
--- a/weinre.web/client/weinre/check-for-webkit.js
+++ b/weinre.web/client/weinre/check-for-webkit.js
@@ -1,10 +1,10 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 if (!navigator.userAgent.match(/webkit/i)) {
 	alert("This web page is only designed to work in WebKit-based browsers.  Sorry.  Best of luck.")
-}
\ No newline at end of file
+}
diff --git a/weinre.web/client/weinre/client.css b/weinre.web/client/weinre/client.css
index df5c533..4aae174 100644
--- a/weinre.web/client/weinre/client.css
+++ b/weinre.web/client/weinre/client.css
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 .toolbar-item.remote .toolbar-icon {
diff --git a/weinre.web/client/weinre/hacks.js b/weinre.web/client/weinre/hacks.js
index 592a7c5..f2156c7 100644
--- a/weinre.web/client/weinre/hacks.js
+++ b/weinre.web/client/weinre/hacks.js
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
-// a place for hacks
\ No newline at end of file
+// a place for hacks
diff --git a/weinre.web/demo/weinre-demo-min.html b/weinre.web/demo/weinre-demo-min.html
index 3501581..74db41a 100644
--- a/weinre.web/demo/weinre-demo-min.html
+++ b/weinre.web/demo/weinre-demo-min.html
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <html>
@@ -19,6 +19,11 @@
     color: blue;
 }
 
+#metrics {
+    margin:   1em;
+    border:   0.2em solid;
+    padding:  3em;
+}
 </style>
 </head>
 
@@ -27,6 +32,7 @@
 <h1 class="blue">this is a blue h1 element</h1>
 <h1 style="color:red">this is a red h1 element</h1>
 <p>Some text, <i>some italic text</i>, and <b>some bold text</b>.
+<div id="metrics">a div</div>
 </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/weinre.web/demo/weinre-demo-pieces.html b/weinre.web/demo/weinre-demo-pieces.html
index 42077a5..1a9bda5 100644
--- a/weinre.web/demo/weinre-demo-pieces.html
+++ b/weinre.web/demo/weinre-demo-pieces.html
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <html>
@@ -32,9 +32,11 @@
 <script src="/weinre/target/CSSStore.transportd.js"                                ></script>
 <script src="/weinre/target/InjectedScriptHostImpl.transportd.js"                  ></script>
 <script src="/weinre/target/Target.transportd.js"                                  ></script>
+<script src="/weinre/target/ElementHighlighter.transportd.js"                                  ></script>
 <script src="/interfaces/all-json-idls.js"                                         ></script>
 
 <script type="text/javascript">
+    require("weinre/common/Weinre").showNotImplemented()
     require("weinre/target/Target").main()
 </script>
 
@@ -47,6 +49,11 @@
     color: blue;
 }
 
+#metrics {
+    margin:   1em;
+    border:   0.2em solid;
+    padding:  3em;
+}
 </style>
 </head>
 
@@ -55,6 +62,7 @@
 <h1 class="blue">this is a blue h1 element</h1>
 <h1 style="color:red">this is a red h1 element</h1>
 <p>Some text, <i>some italic text</i>, and <b>some bold text</b>.
+<div id="metrics">a div</div>
 </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/weinre.web/demo/weinre-demo.html b/weinre.web/demo/weinre-demo.html
index f34da91..04463ab 100644
--- a/weinre.web/demo/weinre-demo.html
+++ b/weinre.web/demo/weinre-demo.html
@@ -1,8 +1,8 @@
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <html>
@@ -19,6 +19,11 @@
     color: blue;
 }
 
+#metrics {
+    margin:   1em;
+    border:   0.2em solid;
+    padding:  3em;
+}
 </style>
 </head>
 
@@ -27,6 +32,8 @@
 <h1 class="blue">this is a blue h1 element</h1>
 <h1 style="color:red">this is a red h1 element</h1>
 <p>Some text, <i>some italic text</i>, and <b>some bold text</b>.
+
+<div id="metrics">a div</div>
 </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/weinre.web/index.html b/weinre.web/index.html
index 2afafab..8e5e4d9 100644
--- a/weinre.web/index.html
+++ b/weinre.web/index.html
@@ -1,44 +1,43 @@
 <!doctype html>
 
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
 
 <html>
 <head>
 <title>weinre server home</title>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
 <link rel="shortcut icon" href="images/weinre-icon-64x64.png" />
 <script src="versions.js"></script>
 <style>
 .hilite {
-    border-bottom: solid;
+    border-bottom:          solid;
 }
-h1 {
-    text-align: center;
-}
-h1 img {
-    vertical-align: middle;
-}
-h2 {
-    padding:               0.25em 0.50em;
-    background-color:      #DDD;
-    border-radius:         0.5em; 
-    -moz-border-radius:    0.5em; 
-    -webkit-border-radius: 0.5em;   
+h1, h2 {
+    padding:                0.25em 0.50em;
+    background-color:       #DDD;
+    border-radius:          0.5em; 
+    -moz-border-radius:     0.5em; 
+    -webkit-border-radius:  0.5em;   
 }
 td {
-    vertical-align: top;
+    vertical-align:         top;
+}
+pre {
+    overflow:               auto;
+}
+textarea {
+    width:                  100%;
 }
 </style>
 </head>
 <body>
-<h1>
-<img src="images/weinre-icon-128x128.png"> 
-- <span class="hilite">we</span>b <span class="hilite">in</span>spector <span class="hilite">re</span>mote
-</h1>
+<h1>weinre</h1>
+<p><span class="hilite">we</span>b <span class="hilite">in</span>spector <span class="hilite">re</span>mote
 
 <h2>Access Points</h2>
 
@@ -51,9 +50,12 @@
 <h2>Target Bookmarklet</h2>
 
 <p>link: <span id="url-target-bookmarklet">???</span> (drag to your bookmarks)
-<p>source: 
-<pre id="target-bookmarklet-src">
-</pre>
+
+<p>bookmarklet url in a pre: 
+<pre id="target-bookmarklet-src-pre"></pre>
+
+<p>bookmarklet url in a textarea: 
+<textarea id="target-bookmarklet-src-text-area"></textarea> 
 
 <h2>Development</h2>
 
@@ -62,17 +64,19 @@
 <h2>Versions</h2>
 
 <table>
-<tr><td>weinre:   <td> <span id="version-weinre">???</span> <span id="version-build">???</span>
-<tr><td>webkit:   <td> <span id="version-webkit">???</span>
-<tr><td>jetty:    <td> <span id="version-jetty">???</span>
-<tr><td>swt:      <td> <span id="version-swt">???</span>
-<tr><td>servlet:  <td> <span id="version-servlet">???</span>
-<tr><td>cli:      <td> <span id="version-cli">???</span>
-<tr><td>json4j:   <td> <span id="version-json4j">???</span>
-<tr><td>scooj:    <td> <span id="version-scooj">???</span>
-<tr><td>modjewel: <td> <span id="version-modjewel">???</span>
+<tr><td>weinre:         <td> <span id="version-weinre">???</span> <span id="version-build">???</span>
+<tr><td>webkit:         <td> <span id="version-webkit">???</span>
+<tr><td>swt:            <td> <span id="version-swt">???</span>
+<tr><td>jetty:          <td> <span id="version-jetty">???</span>
+<tr><td>jetty servlet:  <td> <span id="version-servlet">???</span>
+<tr><td>apache cli:     <td> <span id="version-cli">???</span>
+<tr><td>apache json4j:  <td> <span id="version-json4j">???</span>
+<tr><td>scooj:          <td> <span id="version-scooj">???</span>
+<tr><td>modjewel:       <td> <span id="version-modjewel">???</span>
 </table>
 
+<img src="images/weinre-icon-128x128.png"> 
+
 <script src="index.js"></script>
 
 </body>
diff --git a/weinre.web/index.js b/weinre.web/index.js
index a3897bd..b42f890 100644
--- a/weinre.web/index.js
+++ b/weinre.web/index.js
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 var weinre_protocol = location.protocol
@@ -31,7 +31,8 @@
 replaceText("version-scooj",     Weinre.Versions.scooj)
 replaceText("version-modjewel",  Weinre.Versions.modjewel)
 
-replaceText("target-bookmarklet-src", getTargetBookmarklet())
+replaceText("target-bookmarklet-src-pre",       getTargetBookmarklet())
+replaceText("target-bookmarklet-src-text-area", getTargetBookmarklet())
 
 //---------------------------------------------------------------------
 function buildHttpURL(uri) {
@@ -58,22 +59,19 @@
 }
 
 //-----------------------------------------------------------------------------
-function targetBookmarkletFunction(){
-    var e=document.createElement("script");
-    e.setAttribute("language","javascript");
+function targetBookmarkletFunction(e){
     e.setAttribute("src","???");
-    document.body.appendChild(e);
+    document.getElementsByTagName("body")[0].appendChild(e);
 }
 
 //-----------------------------------------------------------------------------
 function getTargetBookmarklet() {
-    script = targetBookmarkletFunction.toString();
-    script = script.replace(/^\s+/g, "")
+    var script = targetBookmarkletFunction.toString();
     script = script.replace(/\n/g,   "")
-    script = script.replace(/\s+/g,  "%20")
     script = script.replace("targetBookmarkletFunction","")
+    script = script.replace(/\s*/g, "")
     script = script.replace("???", buildHttpURL("target/target-script-min.js"))
-    script = ";(" + script + ")();void(0);"
+    script = "(" + script + ')(document.createElement("script"));void(0);'
     return 'javascript:' + script
 }
 
diff --git a/weinre.web/interfaces/interfaces.css b/weinre.web/interfaces/interfaces.css
index d9406e8..efeeecb 100644
--- a/weinre.web/interfaces/interfaces.css
+++ b/weinre.web/interfaces/interfaces.css
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 #browser {
diff --git a/weinre.web/interfaces/interfaces.html b/weinre.web/interfaces/interfaces.html
index 90d9821..55cd2f1 100644
--- a/weinre.web/interfaces/interfaces.html
+++ b/weinre.web/interfaces/interfaces.html
@@ -1,10 +1,10 @@
 <!doctype html>
 
 <!--
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
 -->
  
 <html>
@@ -53,4 +53,4 @@
         </div> 
     </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/weinre.web/interfaces/interfaces.js b/weinre.web/interfaces/interfaces.js
index 162b0be..aa181a3 100644
--- a/weinre.web/interfaces/interfaces.js
+++ b/weinre.web/interfaces/interfaces.js
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 ;(function(){
diff --git a/weinre.web/modules/weinre/client/Client.scoop b/weinre.web/modules/weinre/client/Client.scoop
index c749802..7a8b8e9 100644
--- a/weinre.web/modules/weinre/client/Client.scoop
+++ b/weinre.web/modules/weinre/client/Client.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/IDLTools
@@ -28,6 +28,8 @@
 //-----------------------------------------------------------------------------
 static
     var AutoConnect = true
+    
+    Weinre.showNotImplemented()
 
 //-----------------------------------------------------------------------------
 //
diff --git a/weinre.web/modules/weinre/client/ConnectorList.scoop b/weinre.web/modules/weinre/client/ConnectorList.scoop
index e30caf7..37ebd65 100644
--- a/weinre.web/modules/weinre/client/ConnectorList.scoop
+++ b/weinre.web/modules/weinre/client/ConnectorList.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ./DOMTemplates as dt
diff --git a/weinre.web/modules/weinre/client/DOMTemplates.scoop b/weinre.web/modules/weinre/client/DOMTemplates.scoop
index 99a5b20..9791b8c 100644
--- a/weinre.web/modules/weinre/client/DOMTemplates.scoop
+++ b/weinre.web/modules/weinre/client/DOMTemplates.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 //-----------------------------------------------------------------------------
diff --git a/weinre.web/modules/weinre/client/InspectorBackendImpl.scoop b/weinre.web/modules/weinre/client/InspectorBackendImpl.scoop
index 9f7d31a..5797f4b 100644
--- a/weinre.web/modules/weinre/client/InspectorBackendImpl.scoop
+++ b/weinre.web/modules/weinre/client/InspectorBackendImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/IDLTools
diff --git a/weinre.web/modules/weinre/client/InspectorFrontendHostImpl.scoop b/weinre.web/modules/weinre/client/InspectorFrontendHostImpl.scoop
index 7be3bb9..a7b28c7 100644
--- a/weinre.web/modules/weinre/client/InspectorFrontendHostImpl.scoop
+++ b/weinre.web/modules/weinre/client/InspectorFrontendHostImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
diff --git a/weinre.web/modules/weinre/client/RemotePanel.scoop b/weinre.web/modules/weinre/client/RemotePanel.scoop
index 5d6f70b..db89c43 100644
--- a/weinre.web/modules/weinre/client/RemotePanel.scoop
+++ b/weinre.web/modules/weinre/client/RemotePanel.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Binding
diff --git a/weinre.web/modules/weinre/client/WeinreClientEventsImpl.scoop b/weinre.web/modules/weinre/client/WeinreClientEventsImpl.scoop
index e8f88ba..9b59e0c 100644
--- a/weinre.web/modules/weinre/client/WeinreClientEventsImpl.scoop
+++ b/weinre.web/modules/weinre/client/WeinreClientEventsImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Callback
diff --git a/weinre.web/modules/weinre/common/Binding.scoop b/weinre.web/modules/weinre/common/Binding.scoop
index 26e4b2c..a5c55d5 100644
--- a/weinre.web/modules/weinre/common/Binding.scoop
+++ b/weinre.web/modules/weinre/common/Binding.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 //-----------------------------------------------------------------------------
diff --git a/weinre.web/modules/weinre/common/Callback.scoop b/weinre.web/modules/weinre/common/Callback.scoop
index 1bcd3ea..8aef9c9 100644
--- a/weinre.web/modules/weinre/common/Callback.scoop
+++ b/weinre.web/modules/weinre/common/Callback.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 //-----------------------------------------------------------------------------
diff --git a/weinre.web/modules/weinre/common/EventListeners.scoop b/weinre.web/modules/weinre/common/EventListeners.scoop
index 118b942..30befbc 100644
--- a/weinre.web/modules/weinre/common/EventListeners.scoop
+++ b/weinre.web/modules/weinre/common/EventListeners.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 //-----------------------------------------------------------------------------
diff --git a/weinre.web/modules/weinre/common/IDLTools.scoop b/weinre.web/modules/weinre/common/IDLTools.scoop
index 707696e..c60820a 100644
--- a/weinre.web/modules/weinre/common/IDLTools.scoop
+++ b/weinre.web/modules/weinre/common/IDLTools.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ./Callback
diff --git a/weinre.web/modules/weinre/common/Socket.scoop b/weinre.web/modules/weinre/common/Socket.scoop
index 3a954db..b25d17f 100644
--- a/weinre.web/modules/weinre/common/Socket.scoop
+++ b/weinre.web/modules/weinre/common/Socket.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ./Weinre
diff --git a/weinre.web/modules/weinre/common/WebSocketXhr.scoop b/weinre.web/modules/weinre/common/WebSocketXhr.scoop
index 438ab2f..29d24eb 100644
--- a/weinre.web/modules/weinre/common/WebSocketXhr.scoop
+++ b/weinre.web/modules/weinre/common/WebSocketXhr.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ./Weinre
diff --git a/weinre.web/modules/weinre/common/Weinre.scoop b/weinre.web/modules/weinre/common/Weinre.scoop
index 4bcf37b..26f8766 100644
--- a/weinre.web/modules/weinre/common/Weinre.scoop
+++ b/weinre.web/modules/weinre/common/Weinre.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ./IDLTools
@@ -24,7 +24,8 @@
 //
 //-----------------------------------------------------------------------------
 static 
-    var _notImplemented = {}
+    var _notImplemented     = {}
+    var _showNotImplemented = false
 
 //-----------------------------------------------------------------------------
 //
@@ -33,4 +34,15 @@
     if (_notImplemented[thing]) return
     
     _notImplemented[thing] = true
+    
+    if (!_showNotImplemented) return
     console.log(thing + " not implemented")
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+static method showNotImplemented()
+    _showNotImplemented = true
+    for (var key in _notImplemented) {
+        console.log(key + " not implemented")
+    }
\ No newline at end of file
diff --git a/weinre.web/modules/weinre/target/CSSStore.scoop b/weinre.web/modules/weinre/target/CSSStore.scoop
index 6f920db..d4d3b6e 100644
--- a/weinre.web/modules/weinre/target/CSSStore.scoop
+++ b/weinre.web/modules/weinre/target/CSSStore.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 //-----------------------------------------------------------------------------
diff --git a/weinre.web/modules/weinre/target/Console.scoop b/weinre.web/modules/weinre/target/Console.scoop
index 9b38b0e..9a093df 100644
--- a/weinre.web/modules/weinre/target/Console.scoop
+++ b/weinre.web/modules/weinre/target/Console.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
diff --git a/weinre.web/modules/weinre/target/ElementHighlighter.scoop b/weinre.web/modules/weinre/target/ElementHighlighter.scoop
new file mode 100644
index 0000000..49654f7
--- /dev/null
+++ b/weinre.web/modules/weinre/target/ElementHighlighter.scoop
@@ -0,0 +1,172 @@
+
+/*
+ * weinre is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ * 
+ * Copyright (c) 2011 IBM Corporation
+ */
+
+require ../common/Binding
+require ../common/Weinre
+
+//-----------------------------------------------------------------------------
+// 
+//-----------------------------------------------------------------------------
+class ElementHighlighter
+    this.boxMargin  = document.createElement("div")
+    this.boxBorder  = document.createElement("div")
+    this.boxPadding = document.createElement("div")
+    this.boxContent = document.createElement("div")
+    
+    this.boxMargin.appendChild(this.boxBorder)
+    this.boxBorder.appendChild(this.boxPadding)
+    this.boxPadding.appendChild(this.boxContent)
+    
+    this.boxMargin.style.backgroundColor  = "#FCC"
+    this.boxBorder.style.backgroundColor  = "#000"
+    this.boxPadding.style.backgroundColor = "#CFC"
+    this.boxContent.style.backgroundColor = "#CCF"
+    
+    this.boxMargin.style.opacity =
+    this.boxBorder.style.opacity =
+    this.boxPadding.style.opacity =
+    this.boxContent.style.opacity = 0.6
+    
+    this.boxMargin.style.position =
+    this.boxBorder.style.position =
+    this.boxPadding.style.position =
+    this.boxContent.style.position = "absolute"
+    
+    this.boxMargin.style.borderWidth =
+    this.boxBorder.style.borderWidth =
+    this.boxPadding.style.borderWidth =
+    this.boxContent.style.borderWidth = "thin"
+        
+    this.boxMargin.style.borderStyle =
+    this.boxBorder.style.borderStyle =
+    this.boxPadding.style.borderStyle =
+    this.boxContent.style.borderStyle = "solid"
+                
+    this.boxMargin.__weinreHighlighter =
+    this.boxBorder.__weinreHighlighter =
+    this.boxPadding.__weinreHighlighter =
+    this.boxContent.__weinreHighlighter = true
+                        
+    this.boxMargin.style.display = "none"
+        
+    document.body.appendChild(this.boxMargin)
+    
+//-----------------------------------------------------------------------------
+// 
+//-----------------------------------------------------------------------------
+method on(element)
+    if (null == element) return
+    if (element.nodeType != Node.ELEMENT_NODE) return
+    
+    this.calculateMetrics(element)
+    this.boxMargin.style.display = "block"
+
+//-----------------------------------------------------------------------------
+// 
+//-----------------------------------------------------------------------------
+method off
+    this.boxMargin.style.display = "none"
+
+//-----------------------------------------------------------------------------
+// 
+//-----------------------------------------------------------------------------
+getter element
+    return this.boxMargin
+
+//-----------------------------------------------------------------------------
+// 
+//-----------------------------------------------------------------------------
+method calculateMetrics(element)
+
+    var metrics = getMetrics(element)
+    
+    this.boxMargin.style.top     = metrics.y      + "px"
+    this.boxMargin.style.left    = metrics.x      + "px"
+    this.boxMargin.style.height  = metrics.height + "px"
+    this.boxMargin.style.width   = metrics.width  + "px"
+
+    this.boxBorder.style.top     = metrics.marginTop    + "px"
+    this.boxBorder.style.left    = metrics.marginLeft   + "px"
+    this.boxBorder.style.bottom  = metrics.marginBottom + "px"
+    this.boxBorder.style.right   = metrics.marginRight  + "px"
+
+    this.boxPadding.style.top    = metrics.borderTop    + "px"
+    this.boxPadding.style.left   = metrics.borderLeft   + "px"
+    this.boxPadding.style.bottom = metrics.borderBottom + "px"
+    this.boxPadding.style.right  = metrics.borderRight  + "px"
+    
+    this.boxContent.style.top    = metrics.paddingTop    + "px"
+    this.boxContent.style.left   = metrics.paddingLeft   + "px"
+    this.boxContent.style.bottom = metrics.paddingBottom + "px"
+    this.boxContent.style.right  = metrics.paddingRight  + "px"
+    
+    
+    
+//-----------------------------------------------------------------------------
+// 
+//-----------------------------------------------------------------------------
+function getMetrics(element)
+    var result = {}
+    
+    // get the x,y position
+    var left = 0
+    var top  = 0
+        
+    var el = element
+    do {
+        left += el.offsetLeft
+        top  += el.offsetTop
+    } while (el = el.offsetParent)
+    
+    result.x = left
+    result.y = top
+
+    // get the computed style
+    var cStyle = document.defaultView.getComputedStyle(element)
+    
+    result.width  = fromPx(cStyle["width"])
+    result.height = fromPx(cStyle["height"])
+    
+    result.marginLeft    = fromPx(cStyle["margin-left"])
+    result.marginRight   = fromPx(cStyle["margin-right"])
+    result.marginTop     = fromPx(cStyle["margin-top"])
+    result.marginBottom  = fromPx(cStyle["margin-bottom"])
+    
+    result.borderLeft    = fromPx(cStyle["border-left-width"])
+    result.borderRight   = fromPx(cStyle["border-right-width"])
+    result.borderTop     = fromPx(cStyle["border-top-width"])
+    result.borderBottom  = fromPx(cStyle["border-bottom-width"])
+    
+    result.paddingLeft   = fromPx(cStyle["padding-left"])
+    result.paddingRight  = fromPx(cStyle["padding-right"])
+    result.paddingTop    = fromPx(cStyle["padding-top"])
+    result.paddingBottom = fromPx(cStyle["padding-bottom"])
+
+    result.width += 
+        result.marginLeft  + result.marginRight +
+        result.borderRight  +
+        result.paddingLeft + result.paddingRight
+        
+    result.height += 
+        result.marginTop  + result.marginBottom +
+        result.borderBottom  +
+        result.paddingTop + result.paddingBottom
+        
+    result.x -= 
+        result.marginLeft
+        
+    result.y -= 
+        result.marginTop
+
+    return result
+    
+//-----------------------------------------------------------------------------
+// 
+//-----------------------------------------------------------------------------
+function fromPx(string) 
+    return parseInt(string.replace(/px$/,""))
diff --git a/weinre.web/modules/weinre/target/InjectedScriptHostImpl.scoop b/weinre.web/modules/weinre/target/InjectedScriptHostImpl.scoop
index 6bec7df..85d82ec 100644
--- a/weinre.web/modules/weinre/target/InjectedScriptHostImpl.scoop
+++ b/weinre.web/modules/weinre/target/InjectedScriptHostImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
diff --git a/weinre.web/modules/weinre/target/InspectorBackendImpl.scoop b/weinre.web/modules/weinre/target/InspectorBackendImpl.scoop
index 466b1ee..1e10550 100644
--- a/weinre.web/modules/weinre/target/InspectorBackendImpl.scoop
+++ b/weinre.web/modules/weinre/target/InspectorBackendImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
diff --git a/weinre.web/modules/weinre/target/NodeStore.scoop b/weinre.web/modules/weinre/target/NodeStore.scoop
index 6d594fb..40ef0c9 100644
--- a/weinre.web/modules/weinre/target/NodeStore.scoop
+++ b/weinre.web/modules/weinre/target/NodeStore.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 //-----------------------------------------------------------------------------
@@ -142,14 +142,7 @@
 //
 //-----------------------------------------------------------------------------
 method childNodeCount(node)
-    var count = 0
-    
-    for (var i=0; i<node.childNodes.length; i++) {
-        if (this.isWhitespace(node.childNodes[i])) continue
-        count++
-    }
-    
-    return count
+    return this.childNodeIds(node).length
 
 //-----------------------------------------------------------------------------
 //
@@ -158,7 +151,7 @@
     var ids = []
     
     for (var i=0; i<node.childNodes.length; i++) {
-        if (this.isWhitespace(node.childNodes[i])) continue
+        if (this.isToBeSkipped(node.childNodes[i])) continue
         ids.push(this.getNodeId(node.childNodes[i]))
     }
     
@@ -167,8 +160,8 @@
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-method isWhitespace(node)
-    if (!node) return false
+method isToBeSkipped(node)
+    if (!node) return true
+    if (node.__weinreHighlighter) return true 
     if (node.nodeType != Node.TEXT_NODE) return false
     return !!node.nodeValue.match(/^\s*$/) 
-
diff --git a/weinre.web/modules/weinre/target/Target.scoop b/weinre.web/modules/weinre/target/Target.scoop
index 042e7e7..3b5a6c7 100644
--- a/weinre.web/modules/weinre/target/Target.scoop
+++ b/weinre.web/modules/weinre/target/Target.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Binding
@@ -13,6 +13,7 @@
 
 require ./NodeStore
 require ./CSSStore
+require ./ElementHighlighter
 require ./InjectedScriptHostImpl
 require ./WebInspectorApplicationCacheHandlerImpl
 require ./WebInspectorBackendHandlerImpl
@@ -137,6 +138,8 @@
 // 
 //-----------------------------------------------------------------------------
 method setDocument()
+    Weinre.elementHighlighter = new ElementHighlighter()
+    
     var nodeId = Weinre.nodeStore.getNodeId(document)
     var nodeData = Weinre.nodeStore.getNodeData(nodeId, 2)
 
diff --git a/weinre.web/modules/weinre/target/WebInspectorApplicationCacheHandlerImpl.scoop b/weinre.web/modules/weinre/target/WebInspectorApplicationCacheHandlerImpl.scoop
index 108af94..d44ee6c 100644
--- a/weinre.web/modules/weinre/target/WebInspectorApplicationCacheHandlerImpl.scoop
+++ b/weinre.web/modules/weinre/target/WebInspectorApplicationCacheHandlerImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
diff --git a/weinre.web/modules/weinre/target/WebInspectorBackendHandlerImpl.scoop b/weinre.web/modules/weinre/target/WebInspectorBackendHandlerImpl.scoop
index ff40721..c4ca13c 100644
--- a/weinre.web/modules/weinre/target/WebInspectorBackendHandlerImpl.scoop
+++ b/weinre.web/modules/weinre/target/WebInspectorBackendHandlerImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
diff --git a/weinre.web/modules/weinre/target/WebInspectorControllerHandlerImpl.scoop b/weinre.web/modules/weinre/target/WebInspectorControllerHandlerImpl.scoop
index c9e0375..61a17a9 100644
--- a/weinre.web/modules/weinre/target/WebInspectorControllerHandlerImpl.scoop
+++ b/weinre.web/modules/weinre/target/WebInspectorControllerHandlerImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
@@ -171,15 +171,27 @@
 //
 //-----------------------------------------------------------------------------
 method highlightDOMNode(/*int*/ nodeId, callback)
-    // callback: function()
-    Weinre.notImplemented(arguments.callee.signature)
+    var node = Weinre.nodeStore.getNode(nodeId)
+    if (!node) {
+        console.log(arguments.callee.signature + " passed an invalid nodeId: " + nodeId)
+        return
+    }
+
+    Weinre.elementHighlighter.on(node)
+    
+    if (callback) {
+        Weinre.WeinreTargetCommands.sendClientCallback(callback)
+    }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
 method hideDOMNodeHighlight(callback)
-    // callback: function()
-    Weinre.notImplemented(arguments.callee.signature)
+    Weinre.elementHighlighter.off()
+    
+    if (callback) {
+        Weinre.WeinreTargetCommands.sendClientCallback(callback)
+    }
 
 //-----------------------------------------------------------------------------
 //
diff --git a/weinre.web/modules/weinre/target/WebInspectorDOMHandlerImpl.scoop b/weinre.web/modules/weinre/target/WebInspectorDOMHandlerImpl.scoop
index 7f63ba2..ac94010 100644
--- a/weinre.web/modules/weinre/target/WebInspectorDOMHandlerImpl.scoop
+++ b/weinre.web/modules/weinre/target/WebInspectorDOMHandlerImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
@@ -226,42 +226,6 @@
         Weinre.WeinreTargetCommands.sendClientCallback(callback, [result])
     }
 
-//  console.log(this.constructor.name + "." + arguments.callee.name + "() returns '" + JSON.stringify(result,null,4) + "'")
-    
-    /*
-    Element* element = static_cast<Element*>(node);
-    RefPtr<CSSComputedStyleDeclaration> computedStyleInfo = computedStyle(node, true); // Support the viewing of :visited information in computed style.
-
-    RefPtr<InspectorObject> result = InspectorObject::create();
-    if (element->style())
-        result->setObject("inlineStyle", buildObjectForStyle(element->style(), true));
-    result->setObject("computedStyle", buildObjectForStyle(computedStyleInfo.get(), false));
-
-    CSSStyleSelector* selector = element->ownerDocument()->styleSelector();
-    RefPtr<CSSRuleList> matchedRules = selector->styleRulesForElement(element, authorOnly, true);
-    result->setArray("matchedCSSRules", buildArrayForCSSRules(node->ownerDocument(), matchedRules.get()));
-
-    result->setObject("styleAttributes", buildObjectForAttributeStyles(element));
-    result->setArray("pseudoElements", buildArrayForPseudoElements(element, authorOnly));
-
-    RefPtr<InspectorObject> currentStyle = result;
-    Element* parentElement = element->parentElement();
-    while (parentElement) {
-        RefPtr<InspectorObject> parentStyle = InspectorObject::create();
-        currentStyle->setObject("parent", parentStyle);
-        if (parentElement->style() && parentElement->style()->length())
-            parentStyle->setObject("inlineStyle", buildObjectForStyle(parentElement->style(), true));
-
-        CSSStyleSelector* parentSelector = parentElement->ownerDocument()->styleSelector();
-        RefPtr<CSSRuleList> parentMatchedRules = parentSelector->styleRulesForElement(parentElement, authorOnly, true);
-        parentStyle->setArray("matchedCSSRules", buildArrayForCSSRules(parentElement->ownerDocument(), parentMatchedRules.get()));
-
-        parentElement = parentElement->parentElement();
-        currentStyle = parentStyle;
-    }
-    *styles = result.release();
-    */
-
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
@@ -273,15 +237,33 @@
 //
 //-----------------------------------------------------------------------------
 method getInlineStyle(/*int*/ nodeId, callback)
-    // callback: function()
-    Weinre.notImplemented(arguments.callee.signature)
+    var node = Weinre.nodeStore.getNode(nodeId)
+    if (!node) {
+        console.log(arguments.callee.signature + " passed an invalid nodeId: " + nodeId)
+        return
+    }
+
+    var result = Weinre.cssStore.getInlineStyle(node)
+
+    if (callback) {
+        Weinre.WeinreTargetCommands.sendClientCallback(callback, [result])
+    }
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
 method getComputedStyle(/*int*/ nodeId, callback)
-    // callback: function()
-    Weinre.notImplemented(arguments.callee.signature)
+    var node = Weinre.nodeStore.getNode(nodeId)
+    if (!node) {
+        console.log(arguments.callee.signature + " passed an invalid nodeId: " + nodeId)
+        return
+    }
+
+    var result = Weinre.cssStore.getComputedStyle(node) 
+
+    if (callback) {
+        Weinre.WeinreTargetCommands.sendClientCallback(callback, [result])
+    }
 
 //-----------------------------------------------------------------------------
 //
diff --git a/weinre.web/modules/weinre/target/WebInspectorDebugHandlerImpl.scoop b/weinre.web/modules/weinre/target/WebInspectorDebugHandlerImpl.scoop
index 421f5a0..b498483 100644
--- a/weinre.web/modules/weinre/target/WebInspectorDebugHandlerImpl.scoop
+++ b/weinre.web/modules/weinre/target/WebInspectorDebugHandlerImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
diff --git a/weinre.web/modules/weinre/target/WebInspectorProfilerHandlerImpl.scoop b/weinre.web/modules/weinre/target/WebInspectorProfilerHandlerImpl.scoop
index c8fb563..ebbd300 100644
--- a/weinre.web/modules/weinre/target/WebInspectorProfilerHandlerImpl.scoop
+++ b/weinre.web/modules/weinre/target/WebInspectorProfilerHandlerImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
diff --git a/weinre.web/modules/weinre/target/WebInspectorResourceHandlerImpl.scoop b/weinre.web/modules/weinre/target/WebInspectorResourceHandlerImpl.scoop
index d54d82c..f9acb4f 100644
--- a/weinre.web/modules/weinre/target/WebInspectorResourceHandlerImpl.scoop
+++ b/weinre.web/modules/weinre/target/WebInspectorResourceHandlerImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
diff --git a/weinre.web/modules/weinre/target/WeinreTargetEventsImpl.scoop b/weinre.web/modules/weinre/target/WeinreTargetEventsImpl.scoop
index f3ae49d..b70d9c5 100644
--- a/weinre.web/modules/weinre/target/WeinreTargetEventsImpl.scoop
+++ b/weinre.web/modules/weinre/target/WeinreTargetEventsImpl.scoop
@@ -1,9 +1,9 @@
 
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
 require ../common/Weinre
@@ -20,11 +20,13 @@
 //
 //-----------------------------------------------------------------------------
 method connectionCreated(/*string*/ clientId, /*string*/ targetId)
-    console.log("weinre: connected to " + clientId)
+    var message = "weinre: target " + targetId + " connected to client " + clientId
+    
+    console.log(message)
     var oldValue = Console.useRemote(true)
     
     if (!oldValue) {
-        console.log("weinre: connected to " + clientId)
+        console.log(message)
     }
     
     Weinre.target.setDocument()
@@ -33,11 +35,13 @@
 //
 //-----------------------------------------------------------------------------
 method connectionDestroyed(/*string*/ clientId, /*string*/ targetId)
-    console.log("weinre: disconnected from " + clientId)
-    var oldValue = Weinre.Console.useRemote(false)
+    var message = "weinre: target " + targetId + " disconnected from client " + clientId
+    
+    console.log(message)
+    var oldValue = Console.useRemote(false)
     
     if (oldValue) {
-        console.log("weinre: disconnected from " + clientId)
+        console.log(message)
     }
 
 //-----------------------------------------------------------------------------
@@ -45,4 +49,3 @@
 //-----------------------------------------------------------------------------
 method sendCallback(/*int*/ callbackId, /*any*/ result)
     Callback.invoke(callbackId, result)
-
diff --git a/weinre.web/versions.js b/weinre.web/versions.js
index cd5a25f..40f3c2e 100644
--- a/weinre.web/versions.js
+++ b/weinre.web/versions.js
@@ -1,8 +1,8 @@
 /*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * weinre is available under *either* the terms of the modified BSD license *or* the
  * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
  * 
- * Copyright (c) 2010, IBM Corporation
+ * Copyright (c) 2010, 2011 IBM Corporation
  */
 
  if (typeof Weinre == "undefined") Weinre = {};
@@ -18,4 +18,4 @@
     swt:      "@SWT_VERSION@",
     modjewel: "@MODJEWEL_VERSION@",
     scooj:    "@SCOOJ_VERSION@"
- };
\ No newline at end of file
+ };
