get basic style stuff working
diff --git a/weinre.build/build.xml b/weinre.build/build.xml
index 23e613e..0dc3a53 100644
--- a/weinre.build/build.xml
+++ b/weinre.build/build.xml
@@ -189,11 +189,11 @@
             </fileset>
         </copy>
 
+        <echo message="building InjectedScript.js"/>
         <echo 
             file    = "${WEB}/weinre/target/InjectedScript.js"
             message = "var injectedScriptConstructor = ${line.separator}"
         />
-        
         <concat 
             destfile = "${WEB}/weinre/target/InjectedScript.js"
             append   = "true"
@@ -201,6 +201,7 @@
             <fileset file="${VENDOR}/webkit/WebCore/inspector/InjectedScriptSource.js"/>
         </concat>
             
+        <echo message="building versions.js"/>
         <copy todir="${WEB}">
             <fileset dir="../${PROJECT_WEB}">
                 <include name="versions.js"/>
@@ -221,6 +222,13 @@
                 <filter token="JAVAX_SERVLET_VERSION_IMPL" value="${JAVAX_SERVLET_VERSION_IMPL}"/>
             </filterset>
         </copy>
+
+        <echo message="building add-css-properties.js"/>
+        <exec executable="python" failonerror="true" failifexecutionfails="true">
+            <arg  file="scripts/build-css-properties.py"/>
+            <arg value="vendor/webkit/WebCore/CSSPropertyNames.in"/>
+            <arg value="${WEB}/add-css-properties.js"/>
+        </exec>
         
     </target>
 
diff --git a/weinre.build/scripts/build-css-properties.py b/weinre.build/scripts/build-css-properties.py
index f380583..5dded6c 100644
--- a/weinre.build/scripts/build-css-properties.py
+++ b/weinre.build/scripts/build-css-properties.py
@@ -36,7 +36,7 @@
     properties.sort()
         
     jsonString = json.dumps(properties, indent=4)
-    jsString = "Weinre.addCSSProperties(%s)" % jsonString
+    jsString = 'require("weinre/common/Weinre").addCSSProperties(%s)' % jsonString
 
     oFile = open(oFileName, "w")
     oFile.write(jsString)
diff --git a/weinre.web/demo/weinre-demo-pieces.html b/weinre.web/demo/weinre-demo-pieces.html
index 1c09a2e..a16f94f 100644
--- a/weinre.web/demo/weinre-demo-pieces.html
+++ b/weinre.web/demo/weinre-demo-pieces.html
@@ -21,6 +21,8 @@
 <script src="/weinre/common/Callback.transportd.js"                                ></script>
 <script src="/weinre/common/EventListeners.transportd.js"                          ></script>
 <script src="/weinre/target/Console.transportd.js"                                 ></script>
+<script src="/add-css-properties.js"                                               ></script>
+
 
 <!-- 
 <script src="/weinre/target/WebInspectorApplicationCacheHandlerImpl.transportd.js" ></script>
diff --git a/weinre.web/modules/weinre/common/Weinre.scoop b/weinre.web/modules/weinre/common/Weinre.scoop
index f580a42..5e32f0e 100644
--- a/weinre.web/modules/weinre/common/Weinre.scoop
+++ b/weinre.web/modules/weinre/common/Weinre.scoop
@@ -15,13 +15,22 @@
     throw new Ex(arguments, "this class is not intended to be instantiated")
 
 //-----------------------------------------------------------------------------
+static 
+    var _notImplemented     = {}
+    var _showNotImplemented = false
+    var CSSProperties       = []
+
+//-----------------------------------------------------------------------------
 static method addIDLs(idls)
     IDLTools.addIDLs(idls)
 
 //-----------------------------------------------------------------------------
-static 
-    var _notImplemented     = {}
-    var _showNotImplemented = false
+static method addCSSProperties(cssProperties)
+    CSSProperties = cssProperties
+
+//-----------------------------------------------------------------------------
+static method getCSSProperties
+    return CSSProperties
 
 //-----------------------------------------------------------------------------
 static method deprecated()
diff --git a/weinre.web/modules/weinre/target/CSSStore.scoop b/weinre.web/modules/weinre/target/CSSStore.scoop
index d4d3b6e..12401ee 100644
--- a/weinre.web/modules/weinre/target/CSSStore.scoop
+++ b/weinre.web/modules/weinre/target/CSSStore.scoop
@@ -88,9 +88,10 @@
 //-----------------------------------------------------------------------------
 method buildObjectForStyle(style, bind)
     var result = {
-        width:      null,
-        height:     null,
-        properties: []
+        width:         null,
+        height:        null,
+        properties:    [],
+        cssProperties: []
     }
     
     if (!style) return result
@@ -147,7 +148,7 @@
         }
     }
     
-    result.properties      = properties
+    result.cssProperties   = properties
     result.shorthandValues = shorthandValues
 
 //-----------------------------------------------------------------------------
diff --git a/weinre.web/modules/weinre/target/NodeStore.scoop b/weinre.web/modules/weinre/target/NodeStore.scoop
index 40ef0c9..565d729 100644
--- a/weinre.web/modules/weinre/target/NodeStore.scoop
+++ b/weinre.web/modules/weinre/target/NodeStore.scoop
@@ -49,7 +49,7 @@
 //
 //-----------------------------------------------------------------------------
 method serializeNode(node, depth)
-    var nodeName  = null
+    var nodeName  = ""
     var nodeValue = null
     var localName = null
     var id = this.getNodeId(node) 
diff --git a/weinre.web/modules/weinre/target/WiCSSImpl.scoop b/weinre.web/modules/weinre/target/WiCSSImpl.scoop
index 8f82852..aa1834b 100644
--- a/weinre.web/modules/weinre/target/WiCSSImpl.scoop
+++ b/weinre.web/modules/weinre/target/WiCSSImpl.scoop
@@ -13,21 +13,67 @@
 
 //-----------------------------------------------------------------------------
 method getStylesForNode(/*int*/ nodeId, callback)
-    // callback: function(/*any*/ styles)
-    Weinre.notImplemented(arguments.callee.signature)
-
+    var result = {}
+    
+    var node = Weinre.nodeStore.getNode(nodeId)
+    if (!node) {
+        console.log(arguments.callee.signature + " passed an invalid nodeId: " + nodeId)
+        return
+    }
+    
+    var result = {
+        inlineStyle:     Weinre.cssStore.getInlineStyle(node),
+        computedStyle:   Weinre.cssStore.getComputedStyle(node),
+        matchedCSSRules: Weinre.cssStore.getMatchedCSSRules(node),
+        styleAttributes: Weinre.cssStore.getStyleAttributes(node),
+        pseudoElements:  Weinre.cssStore.getPseudoElements(node),
+        inherited:       []
+    }
+    
+    var parentNode   = node.parentNode
+    
+    while (parentNode) {
+        var parentStyle = {
+            inlineStyle:     Weinre.cssStore.getInlineStyle(parentNode),
+            matchedCSSRules: Weinre.cssStore.getMatchedCSSRules(parentNode),
+        }
+        
+        result.inherited.push(parentStyle)
+        parentNode = parentNode.parentNode
+    }
+    
+    if (callback) {
+        Weinre.WeinreTargetCommands.sendClientCallback(callback, [result])
+    }
 
 //-----------------------------------------------------------------------------
 method getComputedStyleForNode(/*int*/ nodeId, callback)
-    // callback: function(/*any*/ style)
-    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])
+    }
 
 
 //-----------------------------------------------------------------------------
 method getInlineStyleForNode(/*int*/ nodeId, callback)
-    // callback: function(/*any*/ style)
-    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 getAllStyles(callback)
@@ -79,8 +125,7 @@
 
 //-----------------------------------------------------------------------------
 method getSupportedCSSProperties(callback)
-    // callback: function(/*any[]*/ cssProperties)
-    Weinre.notImplemented(arguments.callee.signature)
+    return Weinre.getCSSProperties()
 
 
 //-----------------------------------------------------------------------------
diff --git a/weinre.web/modules/weinre/target/WiConsoleImpl.scoop b/weinre.web/modules/weinre/target/WiConsoleImpl.scoop
index 1866e79..447b959 100644
--- a/weinre.web/modules/weinre/target/WiConsoleImpl.scoop
+++ b/weinre.web/modules/weinre/target/WiConsoleImpl.scoop
@@ -10,20 +10,26 @@
 
 //-----------------------------------------------------------------------------
 class WiConsoleImpl
+    this.messagesEnabled = true
 
 //-----------------------------------------------------------------------------
 method setConsoleMessagesEnabled(/*boolean*/ enabled, callback)
-    // callback: function(/*boolean*/ newState)
-    Weinre.notImplemented(arguments.callee.signature)
-
+    var oldValue = this.messagesEnabled
+    this.messagesEnabled = enabled
+    
+    if (callback) {
+        Weinre.WeinreTargetCommands.sendClientCallback(callback, [oldValue])
+    }
 
 //-----------------------------------------------------------------------------
 method clearConsoleMessages(callback)
-    // callback: function()
-    Weinre.notImplemented(arguments.callee.signature)
+    if (callback) {
+        Weinre.WeinreTargetCommands.sendClientCallback(callback, [])
+    }
 
 
 //-----------------------------------------------------------------------------
 method setMonitoringXHREnabled(/*boolean*/ enabled, callback)
-    // callback: function()
-    Weinre.notImplemented(arguments.callee.signature)
+    if (callback) {
+        Weinre.WeinreTargetCommands.sendClientCallback(callback, [])
+    }
diff --git a/weinre.web/modules/weinre/target/WiInspectorImpl.scoop b/weinre.web/modules/weinre/target/WiInspectorImpl.scoop
index 219bb60..ae743e7 100644
--- a/weinre.web/modules/weinre/target/WiInspectorImpl.scoop
+++ b/weinre.web/modules/weinre/target/WiInspectorImpl.scoop
@@ -55,15 +55,25 @@
 
 //-----------------------------------------------------------------------------
 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)
+    }
 
 //-----------------------------------------------------------------------------
 method highlightFrame(/*int*/ frameId, callback)