diff --git a/plugins/common/HostChannel.cpp b/plugins/common/HostChannel.cpp
index bff1b21..2cabb01 100644
--- a/plugins/common/HostChannel.cpp
+++ b/plugins/common/HostChannel.cpp
@@ -83,6 +83,7 @@
     disconnectFromHost();
     return false;
   }
+
   switch (type) {
     case MESSAGE_TYPE_PROTOCOL_VERSION:
     {
@@ -237,11 +238,10 @@
   char type;
   while (true) {
     flush();
-    Debug::log(Debug::Spam) << "Waiting for response, flushed output"
-        << Debug::flush;
+    Debug::log(Debug::Debugging) << "Waiting for response, flushed output" << Debug::flush;
     if (!readByte(type)) {
       if (isConnected()) {
-        Debug::log(Debug::Error) << "Failed to receive message type"
+        Debug::log(Debug::Debugging) << "Failed to receive message type"
             << Debug::flush;
       }
       return 0;
@@ -254,7 +254,7 @@
             Debug::log(Debug::Error) << "Failed to receive invoke message" << Debug::flush;
             return 0;
           }
-          Value returnValue;
+          gwt::Value returnValue;
           bool exception = handler->invoke(*this, imsg->getThis(), imsg->getMethodName(),
               imsg->getNumArgs(), imsg->getArgs(), &returnValue);
           handler->sendFreeValues(*this);
@@ -269,7 +269,7 @@
             Debug::log(Debug::Error) << "Failed to receive invoke special message" << Debug::flush;
             return 0;
           }
-          Value returnValue;
+          gwt::Value returnValue;
           bool exception = handler->invokeSpecial(*this, imsg->getDispatchId(),
               imsg->getNumArgs(), imsg->getArgs(), &returnValue);
           handler->sendFreeValues(*this);
@@ -319,81 +319,81 @@
   }
 }
 
-bool HostChannel::readValue(Value& valueRef) {
+bool HostChannel::readValue(gwt::Value& valueRef) {
   char typeBuf;
   if (!readByte(typeBuf)) return false;
-  Value::ValueType type = Value::ValueType(typeBuf);
+  gwt::Value::ValueType type = gwt::Value::ValueType(typeBuf);
   switch (type) {
-    case Value::NULL_TYPE:
+    case gwt::Value::NULL_TYPE:
       valueRef.setNull();
       return true;
-    case Value::UNDEFINED:
+    case gwt::Value::UNDEFINED:
       valueRef.setUndefined();
       return true;
-    case Value::BOOLEAN:
+    case gwt::Value::BOOLEAN:
       {
         char val;
         if (!readByte(val)) return false;
         valueRef.setBoolean(val != 0);
       }
       return true;
-    case Value::BYTE:
+    case gwt::Value::BYTE:
       {
         char val;
         if (!readByte(val)) return false;
         valueRef.setByte(val);
       }
       return true;
-    case Value::CHAR:
+    case gwt::Value::CHAR:
       {
         short val;
         if (!readShort(val)) return false;
         valueRef.setChar(val);
       }
       return true;
-    case Value::SHORT:
+    case gwt::Value::SHORT:
       {
         short val;
         if (!readShort(val)) return false;
         valueRef.setShort(val);
       }
       return true;
-    case Value::STRING:
+    case gwt::Value::STRING:
       {
         std::string val;
         if (!readString(val)) return false;
         valueRef.setString(val);
       }
       return true;
-    case Value::INT:
+    case gwt::Value::INT:
       {
         int val;
         if (!readInt(val)) return false;
         valueRef.setInt(val);
       }
       return true;
-    case Value::LONG:
+    case gwt::Value::LONG:
       {
         int64_t val;
         if (!readLong(val)) return false;
         valueRef.setLong(val);
       }
       return true;
-    case Value::DOUBLE:
+    case gwt::Value::DOUBLE:
       {
         double val;
         if (!readDouble(val)) return false;
         valueRef.setDouble(val);
       }
       return true;
-    case Value::JAVA_OBJECT:
+    case gwt::Value::JAVA_OBJECT:
       {
         int objId;
         if (!readInt(objId)) return false;
         valueRef.setJavaObject(objId);
       }
       return true;
-    case Value::JS_OBJECT:
+    case gwt::Value::JS_OBJECT:
       {
         int val;
         if (!readInt(val)) return false;
@@ -407,35 +407,35 @@
   return false;
 }
 
-bool HostChannel::sendValue(const Value& value) {
-  Value::ValueType type = value.getType();
+bool HostChannel::sendValue(const gwt::Value& value) {
+  gwt::Value::ValueType type = value.getType();
   if (!sendByte(type)) return false;
   switch (type) {
-    case Value::NULL_TYPE:
-    case Value::UNDEFINED:
+    case gwt::Value::NULL_TYPE:
+    case gwt::Value::UNDEFINED:
       // Null and Undefined only have the tag byte, no data
       return true;
-    case Value::BOOLEAN:
+    case gwt::Value::BOOLEAN:
       return sendByte(value.getBoolean() ? 1 : 0);
-    case Value::BYTE:
+    case gwt::Value::BYTE:
       return sendByte(value.getByte());
-    case Value::CHAR:
+    case gwt::Value::CHAR:
       return sendShort(short(value.getChar()));
-    case Value::SHORT:
+    case gwt::Value::SHORT:
       return sendShort(value.getShort());
-    case Value::INT:
+    case gwt::Value::INT:
       return sendInt(value.getInt());
-    case Value::LONG:
+    case gwt::Value::LONG:
       return sendLong(value.getLong());
-    case Value::STRING:
+    case gwt::Value::STRING:
       return sendString(value.getString());
-    case Value::DOUBLE:
+    case gwt::Value::DOUBLE:
       return sendDouble(value.getDouble());
-    case Value::FLOAT:
+    case gwt::Value::FLOAT:
       return sendFloat(value.getFloat());
-    case Value::JS_OBJECT:
+    case gwt::Value::JS_OBJECT:
       return sendInt(value.getJsObjectId());
-    case Value::JAVA_OBJECT:
+    case gwt::Value::JAVA_OBJECT:
       return sendInt(value.getJavaObjectId());
     default:
       Debug::log(Debug::Error) << "Unhandled value type sent to server: " << type << Debug::flush;
diff --git a/plugins/common/HostChannel.h b/plugins/common/HostChannel.h
index 3c5c5e3..e8a53ec 100644
--- a/plugins/common/HostChannel.h
+++ b/plugins/common/HostChannel.h
@@ -131,8 +131,8 @@
     return sendString(str.c_str(), static_cast<uint32_t>(str.length()));
   }
 
-  bool readValue(Value& valueRef);
-  bool sendValue(const Value& value);
+  bool readValue(gwt::Value& valueRef);
+  bool sendValue(const gwt::Value& value);
 
   ReturnMessage* reactToMessages(SessionHandler* handler, bool expectReturn);
 
diff --git a/plugins/common/InvokeMessage.cpp b/plugins/common/InvokeMessage.cpp
index 90fc790..9207f81 100644
--- a/plugins/common/InvokeMessage.cpp
+++ b/plugins/common/InvokeMessage.cpp
@@ -38,7 +38,7 @@
     printf("Failed to read method name\n");
     return 0;
   }
-  Value thisRef;
+  gwt::Value thisRef;
   if (!channel.readValue(thisRef)) {
     // TODO(jat): error handling
     printf("Failed to read thisRef\n");
@@ -50,7 +50,7 @@
     printf("Failed to read #args\n");
     return 0;
   }
-  scoped_array<Value> args(new Value[numArgs]);
+  scoped_array<gwt::Value> args(new gwt::Value[numArgs]);
   for (int i = 0; i < numArgs; ++i) {
     if (!channel.readValue(args[i])) {
       // TODO(jat): error handling
@@ -66,8 +66,8 @@
  * 
  * Note that the method to be invoked is sent as an integer (a dispatch id) to the server.
  */
-bool InvokeMessage::send(HostChannel& channel, const Value& thisRef, int methodDispatchId,
-    int numArgs, const Value* args) {
+bool InvokeMessage::send(HostChannel& channel, const gwt::Value& thisRef, int methodDispatchId,
+    int numArgs, const gwt::Value* args) {
   if (!channel.sendByte(TYPE)) return false;
   if (!channel.sendInt(methodDispatchId)) return false;
   if (!channel.sendValue(thisRef)) return false;
diff --git a/plugins/common/InvokeMessage.h b/plugins/common/InvokeMessage.h
index 7d57e30..0296d75 100644
--- a/plugins/common/InvokeMessage.h
+++ b/plugins/common/InvokeMessage.h
@@ -36,32 +36,32 @@
   static const char TYPE = MESSAGE_TYPE_INVOKE;
   static const int TOSTRING_DISP_ID = 0;
 private:
-  Value thisRef;
+  gwt::Value thisRef;
   std::string methodName;
   int methodDispatchId;
   int numArgs;
-  const Value* args;
+  const gwt::Value* args;
 
 protected:
   /**
    * @param args array of arguments -- InvokeMessage takes ownership and will
    *     destroy when it is destroyed.
    */
-  InvokeMessage(const Value& thisRef, const std::string& methodName,
-      int numArgs, const Value* args) : thisRef(thisRef), methodName(methodName),
+  InvokeMessage(const gwt::Value& thisRef, const std::string& methodName,
+      int numArgs, const gwt::Value* args) : thisRef(thisRef), methodName(methodName),
       numArgs(numArgs), args(args) {}
 
 public:
   ~InvokeMessage();
   virtual char getType() const;
 
-  Value getThis() const { return thisRef; }
+  gwt::Value getThis() const { return thisRef; }
   const std::string& getMethodName() const { return methodName; }
   int getNumArgs() const { return numArgs; }
-  const Value* const getArgs() const { return args; }
+  const gwt::Value* const getArgs() const { return args; }
 
   static InvokeMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, const Value& thisRef, int methodDispatchId,
-      int numArgs, const Value* args);
+  static bool send(HostChannel& channel, const gwt::Value& thisRef, int methodDispatchId,
+      int numArgs, const gwt::Value* args);
 };
 #endif
diff --git a/plugins/common/InvokeSpecialMessage.cpp b/plugins/common/InvokeSpecialMessage.cpp
index 5fd1540..0a9f418 100644
--- a/plugins/common/InvokeSpecialMessage.cpp
+++ b/plugins/common/InvokeSpecialMessage.cpp
@@ -45,7 +45,7 @@
     printf("Failed to read #args\n");
     return 0;
   }
-  scoped_array<Value> args(new Value[numArgs]);
+  scoped_array<gwt::Value> args(new gwt::Value[numArgs]);
   for (int i = 0; i < numArgs; ++i) {
     if (!channel.readValue(args[i])) {
       // TODO(jat): error handling
@@ -63,7 +63,7 @@
  * Request the server perform a special method and return the result.
  */
 bool InvokeSpecialMessage::send(HostChannel& channel, int dispatchId,
-    int numArgs, const Value* args) {
+    int numArgs, const gwt::Value* args) {
   if (!channel.sendByte(TYPE)) return false;
   if (!channel.sendByte(dispatchId)) return false;
   if (!channel.sendInt(numArgs)) return false;
diff --git a/plugins/common/InvokeSpecialMessage.h b/plugins/common/InvokeSpecialMessage.h
index 5888cc1..84c90ff 100644
--- a/plugins/common/InvokeSpecialMessage.h
+++ b/plugins/common/InvokeSpecialMessage.h
@@ -34,15 +34,15 @@
 private:
   SessionHandler::SpecialMethodId dispatchId;
   int numArgs;
-  const Value* args;
+  const gwt::Value* args;
 
 protected:
   /**
    * @param args array of arguments -- InvokeMessage takes ownership and will
    *     destroy when it is destroyed.
    */
-  InvokeSpecialMessage(SessionHandler::SpecialMethodId dispatchId, int numArgs, const Value* args) : dispatchId(dispatchId),
-      numArgs(numArgs), args(args) {}
+  InvokeSpecialMessage(SessionHandler::SpecialMethodId dispatchId, int numArgs,
+      const gwt::Value* args) : dispatchId(dispatchId), numArgs(numArgs), args(args) {}
 
 public:
   ~InvokeSpecialMessage();
@@ -50,10 +50,10 @@
 
   SessionHandler::SpecialMethodId getDispatchId() const { return dispatchId; }
   int getNumArgs() const { return numArgs; }
-  const Value* const getArgs() const { return args; }
+  const gwt::Value* const getArgs() const { return args; }
 
   static InvokeSpecialMessage* receive(HostChannel& channel);
   static bool send(HostChannel& channel, int dispatchId, int numArgs,
-      const Value* args);
+      const gwt::Value* args);
 };
 #endif
diff --git a/plugins/common/LoadModuleMessage.cpp b/plugins/common/LoadModuleMessage.cpp
index 1ee4ab3..525383b 100644
--- a/plugins/common/LoadModuleMessage.cpp
+++ b/plugins/common/LoadModuleMessage.cpp
@@ -30,7 +30,7 @@
     const std::string& tabKey, const std::string& sessionKey,
     const std::string& moduleName, const std::string& userAgent,
     SessionHandler* handler) {
-  Debug::log(Debug::Spam) << "LoadModule(url=\"" << url << "\", tabKey=\""
+  Debug::log(Debug::Debugging) << "LoadModule(url=\"" << url << "\", tabKey=\""
       << "\", sessionKey=\"" << sessionKey << "\", module=\"" << moduleName
       << "\")" << Debug::flush;
   if (!channel.sendByte(TYPE) || !channel.sendString(url)
@@ -45,6 +45,5 @@
   if (!ret.get()) {
     return false;
   }
-
   return !ret.get()->isException();
 }
diff --git a/plugins/common/ReturnMessage.cpp b/plugins/common/ReturnMessage.cpp
index 0149c1f..159d009 100644
--- a/plugins/common/ReturnMessage.cpp
+++ b/plugins/common/ReturnMessage.cpp
@@ -27,7 +27,7 @@
     // TODO(jat): error handling
     return 0;
   }
-  Value retval;
+  gwt::Value retval;
   if (!channel.readValue(retval)) {
     // TODO(jat): error handling
     return 0;
@@ -35,7 +35,7 @@
   return new ReturnMessage(isException != 0, retval);
 }
 
-bool ReturnMessage::send(HostChannel& channel, bool isException, const Value& retval) {
+bool ReturnMessage::send(HostChannel& channel, bool isException, const gwt::Value& retval) {
   if (!channel.sendByte(TYPE)) return false;
   if (!channel.sendByte(isException ? 1 : 0)) return false;
   return channel.sendValue(retval);
diff --git a/plugins/common/ReturnMessage.h b/plugins/common/ReturnMessage.h
index 374b9fe..29141ec 100644
--- a/plugins/common/ReturnMessage.h
+++ b/plugins/common/ReturnMessage.h
@@ -34,17 +34,17 @@
   static const char TYPE = MESSAGE_TYPE_RETURN;
 private:
   bool bisException;
-  Value retval;
+  gwt::Value retval;
 
 public:
-  ReturnMessage(bool isException, const Value& retValue) : bisException(isException),
+  ReturnMessage(bool isException, const gwt::Value& retValue) : bisException(isException),
       retval(retValue) {}
 
   bool isException() const { return bisException; }
-  const Value& getReturnValue() const { return retval; }
+  const gwt::Value& getReturnValue() const { return retval; }
   virtual char getType() const;
 
   static ReturnMessage* receive(HostChannel& channel);
-  static bool send(HostChannel& channel, bool isException, const Value& retValue);
+  static bool send(HostChannel& channel, bool isException, const gwt::Value& retValue);
 };
 #endif
diff --git a/plugins/common/ServerMethods.cpp b/plugins/common/ServerMethods.cpp
index 0be51b0..672b44a 100644
--- a/plugins/common/ServerMethods.cpp
+++ b/plugins/common/ServerMethods.cpp
@@ -27,26 +27,26 @@
 
 using std::string;
 
-Value ServerMethods::getProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
+gwt::Value ServerMethods::getProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
     int dispatchId) {
   if (!channel.isConnected()) {
     Debug::log(Debug::Debugging) << "Ignoring getProperty after disconnect"
         << Debug::flush;
-    return Value();
+    return gwt::Value();
   }
-  Value args[2];
+  gwt::Value args[2];
   args[0].setInt(objectRef);
   args[1].setInt(dispatchId);
   if (!InvokeSpecialMessage::send(channel, SPECIAL_GET_PROPERTY, 2, args)) {
     Debug::log(Debug::Error) << "  failed to send invoke of GetProperty(disp=" << dispatchId
         << ", obj=" << objectRef << ")" << Debug::flush;
-    return Value();
+    return gwt::Value();
   }
   scoped_ptr<ReturnMessage> retMsg(channel.reactToMessagesWhileWaitingForReturn(handler));
   if (!retMsg.get()) {
     Debug::log(Debug::Error) << "getProperty: get return value failed for GetProperty(disp="
         << dispatchId << ", obj=" << objectRef << ")" << Debug::flush;
-    return Value();
+    return gwt::Value();
   }
   return retMsg->getReturnValue();
 }
@@ -62,7 +62,7 @@
         << Debug::flush;
     return -2;
   }
-  Value arg;
+  gwt::Value arg;
   arg.setString(name);
   if (!InvokeSpecialMessage::send(channel, SPECIAL_HAS_METHOD, 1, &arg)) {
     Debug::log(Debug::Error) << "hasMethod: invoke(hasMethod) failed" << Debug::flush;
@@ -73,7 +73,7 @@
     Debug::log(Debug::Error) << "hasMethod: get return value failed" << Debug::flush;
     return -2;
   }
-  Value retval = retMsg->getReturnValue();
+  gwt::Value retval = retMsg->getReturnValue();
   // TODO(jat): better error handling?
   return retval.isInt() ? retval.getInt() : -2;
 }
@@ -89,7 +89,7 @@
         << Debug::flush;
     return -2;
   }
-  Value arg;
+  gwt::Value arg;
   arg.setString(name);
   if (!InvokeSpecialMessage::send(channel, SPECIAL_HAS_PROPERTY, 1, &arg)) {
     Debug::log(Debug::Error) << "hasProperty: invoke(hasProperty) failed" << Debug::flush;
@@ -100,20 +100,20 @@
     Debug::log(Debug::Error) << "hasProperty: get return value failed" << Debug::flush;
     return -2;
   }
-  Value retval = retMsg->getReturnValue();
+  gwt::Value retval = retMsg->getReturnValue();
   // TODO(jat): better error handling?
   return retval.isInt() ? retval.getInt() : -2;
 }
 
 bool ServerMethods::setProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
-    int dispatchId, const Value& value) {
+    int dispatchId, const gwt::Value& value) {
   if (!channel.isConnected()) {
     Debug::log(Debug::Debugging) << "Ignoring setProperty after disconnect"
         << Debug::flush;
     return false;
   }
   // TODO(jat): error handling?
-  Value args[3];
+  gwt::Value args[3];
   args[0].setInt(objectRef);
   args[1].setInt(dispatchId);
   args[2] = value;
diff --git a/plugins/common/ServerMethods.h b/plugins/common/ServerMethods.h
index 3ff0134..02bf921 100644
--- a/plugins/common/ServerMethods.h
+++ b/plugins/common/ServerMethods.h
@@ -33,7 +33,7 @@
    * @param dispatchID dispatch ID of field
    * @return the value of the property, undef if none (or on error)
    */
-  static Value getProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
+  static gwt::Value getProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
       int dispatchId);
   
   /**
@@ -63,7 +63,7 @@
    * @return false if an error occurred
    */
   static bool setProperty(HostChannel& channel, SessionHandler* handler, int objectRef,
-      int dispatchId, const Value& value);
+      int dispatchId, const gwt::Value& value);
   
   /**
    * Tell the server that the client no longer has any references to the specified
diff --git a/plugins/common/SessionHandler.h b/plugins/common/SessionHandler.h
index aebd00d..159f762 100644
--- a/plugins/common/SessionHandler.h
+++ b/plugins/common/SessionHandler.h
@@ -84,8 +84,9 @@
    *
    * Returns true if an exception occurred.
    */
-  virtual bool invoke(HostChannel& channel, const Value& thisObj, const std::string& methodName,
-      int numArgs, const Value* const args, Value* returnValue)=0;
+  virtual bool invoke(HostChannel& channel, const gwt::Value& thisObj,
+      const std::string& methodName, int numArgs, const gwt::Value* const args,
+      gwt::Value* returnValue) = 0;
 
   /**
    * Invoke a plugin-provided method with the given args.  As above, this method does not own
@@ -94,7 +95,7 @@
    * Returns true if an exception occurred.
    */
   virtual bool invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-      const Value* const args, Value* returnValue) = 0;
+      const gwt::Value* const args, gwt::Value* returnValue) = 0;
 
   /**
    * Send any queued up free values back to the server.
diff --git a/plugins/common/Value.h b/plugins/common/Value.h
index d19b0b5..ab50f5e 100644
--- a/plugins/common/Value.h
+++ b/plugins/common/Value.h
@@ -27,6 +27,7 @@
 
 #include "BrowserChannel.h"
 
+namespace gwt {
 class Value {
 public:
   enum ValueType {
@@ -393,4 +394,6 @@
   return dbg;
 }
 
+} // namespace gwt
+
 #endif
diff --git a/plugins/xpcom/FFSessionHandler.cpp b/plugins/xpcom/FFSessionHandler.cpp
index 8bc5ceb..7bc3dc0 100755
--- a/plugins/xpcom/FFSessionHandler.cpp
+++ b/plugins/xpcom/FFSessionHandler.cpp
@@ -206,9 +206,9 @@
   // TODO(jat): implement
 }
 
-bool FFSessionHandler::invoke(HostChannel& channel, const Value& thisObj, const std::string& methodName,
-    int numArgs, const Value* const args, Value* returnValue) {
-  Debug::log(Debug::Spam) << "FFSessionHandler::invoke " << thisObj.toString()
+bool FFSessionHandler::invoke(HostChannel& channel, const gwt::Value& thisObj, const std::string& methodName,
+    int numArgs, const gwt::Value* const args, gwt::Value* returnValue) {
+  Debug::log(Debug::Debugging) << "FFSessionHandler::invoke " << thisObj.toString()
       << "::" << methodName << Debug::flush;
   JSContext* ctx = getJSContext();
 
@@ -300,7 +300,7 @@
  * Returns true if an exception occurred.
  */
 bool FFSessionHandler::invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-    const Value* const args, Value* returnValue)  {
+    const gwt::Value* const args, gwt::Value* returnValue)  {
   Debug::log(Debug::Spam) << "FFSessionHandler::invokeSpecial" << Debug::flush;
   return false;
 }
@@ -434,7 +434,7 @@
   return JS_NewUCString(ctx, buf, p - buf);
 }
 
-void FFSessionHandler::makeValueFromJsval(Value& retVal, JSContext* ctx,
+void FFSessionHandler::makeValueFromJsval(gwt::Value& retVal, JSContext* ctx,
     const jsval& value) {
   if (JSVAL_IS_VOID(value)) {
     retVal.setUndefined();
@@ -491,24 +491,24 @@
 }
 
 void FFSessionHandler::makeJsvalFromValue(jsval& retVal, JSContext* ctx,
-    const Value& value) {
+    const gwt::Value& value) {
   switch (value.getType()) {
-    case Value::NULL_TYPE:
+    case gwt::Value::NULL_TYPE:
       retVal = JSVAL_NULL;
       break;
-    case Value::BOOLEAN:
+    case gwt::Value::BOOLEAN:
       retVal = BOOLEAN_TO_JSVAL(value.getBoolean());
       break;
-    case Value::BYTE:
+    case gwt::Value::BYTE:
       retVal = INT_TO_JSVAL((int) value.getByte());
       break;
-    case Value::CHAR:
+    case gwt::Value::CHAR:
       retVal = INT_TO_JSVAL((int) value.getChar());
       break;
-    case Value::SHORT:
+    case gwt::Value::SHORT:
       retVal = INT_TO_JSVAL((int) value.getShort());
       break;
-    case Value::INT: {
+    case gwt::Value::INT: {
       int intValue = value.getInt();
       if (INT_FITS_IN_JSVAL(intValue)) {
         retVal = INT_TO_JSVAL(intValue);
@@ -518,22 +518,22 @@
       break;
     }
     // TODO(jat): do we still need long support in the wire format and Value?
-//    case Value::LONG:
+//    case gwt::Value::LONG:
 //      retVal = value.getLong();
 //      break;
-    case Value::FLOAT:
+    case gwt::Value::FLOAT:
       JS_NewNumberValue(ctx, (jsdouble) value.getFloat(), &retVal);
       break;
-    case Value::DOUBLE:
+    case gwt::Value::DOUBLE:
       JS_NewNumberValue(ctx, (jsdouble) value.getDouble(), &retVal);
       break;
-    case Value::STRING:
+    case gwt::Value::STRING:
       {
         JSString* str = stringUtf8(ctx, value.getString());
         retVal = STRING_TO_JSVAL(str);
       }
       break;
-    case Value::JAVA_OBJECT:
+    case gwt::Value::JAVA_OBJECT:
       {
         int javaId = value.getJavaObjectId();
         std::map<int, JSObject*>::iterator i = javaObjectsById.find(javaId);
@@ -549,7 +549,7 @@
         }
       }
       break;
-    case Value::JS_OBJECT:
+    case gwt::Value::JS_OBJECT:
       {
         int jsId = value.getJsObjectId();
         if (!JS_GetElement(ctx, jsObjectsById, jsId, &retVal)) {
@@ -560,7 +560,7 @@
         }
       }
       break;
-    case Value::UNDEFINED:
+    case gwt::Value::UNDEFINED:
       retVal = JSVAL_VOID;
       break;
     default:
diff --git a/plugins/xpcom/FFSessionHandler.h b/plugins/xpcom/FFSessionHandler.h
index 0a2b1fc..f7941bf 100755
--- a/plugins/xpcom/FFSessionHandler.h
+++ b/plugins/xpcom/FFSessionHandler.h
@@ -26,17 +26,19 @@
 #include "jsapi.h"
 
 class HostChannel;
-class Value;
+namespace gwt {
+  class Value;
+}
 
 class FFSessionHandler : public SessionData, public SessionHandler {
   friend class JavaObject;
 public:
   FFSessionHandler(HostChannel* channel);
   ~FFSessionHandler(void);
-  virtual void makeValueFromJsval(Value& retVal, JSContext* ctx,
+  virtual void makeValueFromJsval(gwt::Value& retVal, JSContext* ctx,
       const jsval& value);
   virtual void makeJsvalFromValue(jsval& retVal, JSContext* ctx,
-      const Value& value);
+      const gwt::Value& value);
   virtual void freeJavaObject(int objectId);
   void disconnect();
 
@@ -44,10 +46,10 @@
   virtual void disconnectDetectedImpl();
   virtual void freeValue(HostChannel& channel, int idCount, const int* ids);
   virtual void loadJsni(HostChannel& channel, const std::string& js);
-  virtual bool invoke(HostChannel& channel, const Value& thisObj, const std::string& methodName,
-      int numArgs, const Value* const args, Value* returnValue);
+  virtual bool invoke(HostChannel& channel, const gwt::Value& thisObj, const std::string& methodName,
+      int numArgs, const gwt::Value* const args, gwt::Value* returnValue);
   virtual bool invokeSpecial(HostChannel& channel, SpecialMethodId method, int numArgs,
-      const Value* const args, Value* returnValue);
+      const gwt::Value* const args, gwt::Value* returnValue);
   virtual void sendFreeValues(HostChannel& channel);
   virtual void fatalError(HostChannel& channel, const std::string& message);
 
diff --git a/plugins/xpcom/JavaObject.cpp b/plugins/xpcom/JavaObject.cpp
index 440858f..e63019b 100644
--- a/plugins/xpcom/JavaObject.cpp
+++ b/plugins/xpcom/JavaObject.cpp
@@ -148,14 +148,16 @@
       *rval = JSVAL_VOID;
       return JS_TRUE;
     }
-    Debug::log(Debug::Error) << "Getting unexpected string property "
-        << dumpJsVal(ctx, id) << Debug::flush;
+    // TODO: dumpJsVal can no longer handle this case
+    //Debug::log(Debug::Error) << "Getting unexpected string property "
+    //    << dumpJsVal(ctx, id) << Debug::flush;
     // TODO: throw a better exception here
     return JS_FALSE;
   }
   if (!JSID_IS_INT(id)) {
-    Debug::log(Debug::Error) << "Getting non-int/non-string property "
-          << dumpJsVal(ctx, id) << Debug::flush;
+    // TODO: dumpJsVal can no longer handle this case
+    //Debug::log(Debug::Error) << "Getting non-int/non-string property "
+    //      << dumpJsVal(ctx, id) << Debug::flush;
     // TODO: throw a better exception here
     return JS_FALSE;
   }
@@ -164,7 +166,7 @@
   HostChannel* channel = data->getHostChannel();
   SessionHandler* handler = data->getSessionHandler();
 
-  Value value = ServerMethods::getProperty(*channel, handler, objectRef, dispId);
+  gwt::Value value = ServerMethods::getProperty(*channel, handler, objectRef, dispId);
   data->makeJsvalFromValue(*rval, ctx, value);
   return JS_TRUE;
 }
@@ -192,7 +194,7 @@
   int objectRef = JavaObject::getObjectId(ctx, obj);
   int dispId = JSID_TO_INT(id);
 
-  Value value;
+  gwt::Value value;
   data->makeValueFromJsval(value, ctx, *vp);
 
   HostChannel* channel = data->getHostChannel();
@@ -301,7 +303,7 @@
   int oid = getObjectId(ctx, obj);
   Debug::log(Debug::Spam) << "JavaObject::toString(id=" << oid << ")"
       << Debug::flush;
-  Value javaThis;
+  gwt::Value javaThis;
   javaThis.setJavaObject(oid);
   // we ignore any supplied parameters
   return invokeJava(ctx, data, javaThis, InvokeMessage::TOSTRING_DISP_ID, 0,
@@ -346,7 +348,7 @@
   }
   Debug::log(Debug::Spam) << "Data = " << data << Debug::flush;
 
-  Value javaThis;
+  gwt::Value javaThis;
   if (!JSVAL_IS_NULL(argv[1])) {
     JSObject* thisObj = JSVAL_TO_OBJECT(argv[1]);
     if (isJavaObject(ctx, thisObj)) {
@@ -392,17 +394,17 @@
  * and the second element is the actual return value or exception.
  */
 JSBool JavaObject::invokeJava(JSContext* ctx, SessionData* data,
-    const Value& javaThis, int dispId, int numArgs, const jsval* jsargs,
+    const gwt::Value& javaThis, int dispId, int numArgs, const jsval* jsargs,
     jsval* rval) {
   HostChannel* channel = data->getHostChannel();
   SessionHandler* handler = data->getSessionHandler();
-  scoped_array<Value> args(new Value[numArgs]);
+  scoped_array<gwt::Value> args(new gwt::Value[numArgs]);
   for (int i = 0; i < numArgs; ++i) {
     data->makeValueFromJsval(args[i], ctx, jsargs[i]);
   }
 
   bool isException = false;
-  Value returnValue;
+  gwt::Value returnValue;
   if (!InvokeMessage::send(*channel, javaThis, dispId, numArgs, args.get())) {
     Debug::log(Debug::Debugging) << "JavaObject::call failed to send invoke message" << Debug::flush;
   } else {
diff --git a/plugins/xpcom/JavaObject.h b/plugins/xpcom/JavaObject.h
index acfb0a9..ea32ee7 100755
--- a/plugins/xpcom/JavaObject.h
+++ b/plugins/xpcom/JavaObject.h
@@ -20,7 +20,9 @@
 #include "jsapi.h"
 
 class SessionData;
-class Value;
+namespace gwt {
+  class Value;
+}
 
 #if GECKO_VERSION < 2000
 #define jsid jsval
@@ -61,7 +63,7 @@
 private:
   static SessionData* getSessionData(JSContext* ctx, JSObject* obj);
   static JSBool invokeJava(JSContext* ctx, SessionData* data,
-      const Value& javaThis, int dispId, int numArgs, const jsval* jsargs,
+      const gwt::Value& javaThis, int dispId, int numArgs, const jsval* jsargs,
       jsval* rval);
 };
 
diff --git a/plugins/xpcom/Makefile b/plugins/xpcom/Makefile
index 28f8bf4..dd4624e 100644
--- a/plugins/xpcom/Makefile
+++ b/plugins/xpcom/Makefile
@@ -77,7 +77,11 @@
 #default ALLARCHFLAGS for post-FF4
 ALLARCHCFLAGS = -arch i386 -arch x86_64 -Xarch_i386 -DFLAG32BIT=32 -Xarch_x86_64 -DFLAG32BIT=64
 
+# Python xpidl tool is the new hotness post-FF9
+XPIDL_TOOL = python
+
 ifeq ($(BROWSER),ff3)
+XPIDL_TOOL = binary
 MOZALLOC_DLLFLAGS =
 GECKO_VERSION   = 1.9.0
 CFLAGS += -DGECKO_VERSION=1900
@@ -87,6 +91,7 @@
 endif
 else
 ifeq ($(BROWSER),ff3+)
+XPIDL_TOOL = binary
 MOZALLOC_DLLFLAGS =
 GECKO_VERSION   = 1.9.0
 CFLAGS += -DGECKO_VERSION=1901
@@ -97,6 +102,7 @@
 endif
 else
 ifeq ($(BROWSER),ff35)
+XPIDL_TOOL = binary
 MOZALLOC_DLLFLAGS =
 GECKO_VERSION   = 1.9.1
 CFLAGS += -DGECKO_VERSION=1910
@@ -106,6 +112,7 @@
 endif
 else
 ifeq ($(BROWSER),ff36)
+XPIDL_TOOL = binary
 MOZALLOC_DLLFLAGS =
 GECKO_VERSION   = 1.9.2
 CFLAGS += -DGECKO_VERSION=1920
@@ -115,26 +122,36 @@
 endif
 else
 ifeq ($(BROWSER),ff40)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 2.0.0
 CFLAGS += -DGECKO_VERSION=2000
 else
 ifeq ($(BROWSER),ff50)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 5.0.0
 CFLAGS += -DGECKO_VERSION=5000
 else
 ifeq ($(BROWSER),ff60)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 6.0.0
 CFLAGS += -DGECKO_VERSION=6000
 else
 ifeq ($(BROWSER),ff70)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 7.0.0
 CFLAGS += -DGECKO_VERSION=7000
 else
 ifeq ($(BROWSER),ff80)
+XPIDL_TOOL = binary
 GECKO_VERSION   = 8.0.0
 CFLAGS += -DGECKO_VERSION=8000
 else
-$(error Unrecognized BROWSER of $(BROWSER) - options are ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, f80)
+ifeq ($(BROWSER),ff90)
+GECKO_VERSION   = 9.0.0
+CFLAGS += -DGECKO_VERSION=9000
+else
+$(error Unrecognized BROWSER of $(BROWSER) - options are ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, ff80, ff90)
+endif
 endif
 endif
 endif
@@ -171,7 +188,17 @@
 GECKO_SDK         = $(SDK_PATH)/gecko-$(GECKO_VERSION)
 GECKO_PLAT_INC    = $(GECKO_SDK)/$(GECKO_PLATFORM)/include
 GECKO_LIBS        = $(GECKO_SDK)/$(GECKO_PLATFORM)/lib$(GECKO_MINOR_VERSION)
+
+ifeq ($(XPIDL_TOOL),python)
+XPIDL             = $(GECKO_SDK)/bin/xpidl.py
+XPIDL_HEADER      = $(GECKO_SDK)/bin/header.py
+XPIDL_TYPELIBS    = $(GECKO_SDK)/bin/typelib.py
+else
 XPIDL             = $(GECKO_SDK)/$(GECKO_PLATFORM)/bin/xpidl
+XPIDL_HEADER      = $(GECKO_SDK)/$(GECKO_PLATFORM)/bin/xpidl -m header 
+XPIDL_TYPELIBS    = $(GECKO_SDK)/$(GECKO_PLATFORM)/bin/xpidl -m typelib
+endif
+
 XPIDL_FLAGS       = -I$(GECKO_SDK)/idl
 
 DLLFLAGS += \
@@ -225,6 +252,8 @@
 	$(MAKE) lib BROWSER=ff60 ARCH=x86_64
 	$(MAKE) lib BROWSER=ff70 ARCH=x86_64
 	$(MAKE) lib BROWSER=ff80 ARCH=x86_64
+	$(MAKE) lib BROWSER=ff90 ARCH=x86
+	$(MAKE) lib BROWSER=ff90 ARCH=x86_64
 
 macplatforms:
 	$(MAKE) lib BROWSER=ff3
@@ -235,6 +264,7 @@
 	$(MAKE) lib BROWSER=ff60
 	$(MAKE) lib BROWSER=ff70
 	$(MAKE) lib BROWSER=ff80
+	$(MAKE) lib BROWSER=ff90
 
 SRCS =	\
 		ExternalWrapper.cpp \
@@ -259,10 +289,10 @@
 	(cd $(EXTENSION_OUTDIR) && zip -r -D -9 $(DIR)/$(INSTALLER_XPI) * -x '*/.svn/*' -x 'META-INF/*')
 
 $(FF_TYPELIB): IOOPHM.idl
-	[ ! -x $(XPIDL) -o \( -e $(FF_TYPELIB) -a ! -w $(FF_TYPELIB) \) ] || $(XPIDL) $(XPIDL_FLAGS) -m typelib -e $@ $<
+	[ ! -x $(XPIDL) -o \( -e $(FF_TYPELIB) -a ! -w $(FF_TYPELIB) \) ] || $(XPIDL_TYPELIBS) $(XPIDL_FLAGS) -o $@ $<
 
 $(FF_HEADER): IOOPHM.idl $(OBJ_OUTDIR)
-	[ ! -x $(XPIDL) -o \( -e $(FF_HEADER) -a ! -w $(FF_HEADER) \) ] || $(XPIDL) $(XPIDL_FLAGS) -m header -e $@ $<
+	[ ! -x $(XPIDL) -o \( -e $(FF_HEADER) -a ! -w $(FF_HEADER) \) ] || $(XPIDL_HEADER) $(XPIDL_FLAGS) -o $@ $<
 
 $(FF_DLL): $(FF_OBJS) $(COMMON)
 	$(CXX) -o $@ $(FF_OBJS) $(COMMON) $(DLLFLAGS)
diff --git a/plugins/xpcom/Preferences.h b/plugins/xpcom/Preferences.h
index bf9a25c..2bc0a81 100644
--- a/plugins/xpcom/Preferences.h
+++ b/plugins/xpcom/Preferences.h
@@ -26,7 +26,9 @@
 #include "nsIPrefBranch2.h"
 
 class HostChannel;
-class Value;
+namespace gwt {
+  class Value;
+}
 
 class Preferences : public nsIObserver {
   NS_DECL_ISUPPORTS
diff --git a/plugins/xpcom/SessionData.h b/plugins/xpcom/SessionData.h
index 3d28742..35c66c1 100755
--- a/plugins/xpcom/SessionData.h
+++ b/plugins/xpcom/SessionData.h
@@ -57,13 +57,13 @@
   * Convert a value from the JavaScript into something that can be sent back
   * to the OOPHM host.
   */
-  virtual void makeValueFromJsval(Value& retVal, JSContext* ctx, const jsval& value)=0;
+  virtual void makeValueFromJsval(gwt::Value& retVal, JSContext* ctx, const jsval& value)=0;
 
   /*
   * Convert a value from the OOPHM host into something that can be passed into
   * the JavaScript execution environment.
   */
-  virtual void makeJsvalFromValue(jsval& retVal, JSContext* ctx, const Value& value)=0;
+  virtual void makeJsvalFromValue(jsval& retVal, JSContext* ctx, const gwt::Value& value)=0;
   
   /*
   * Removes the JavaObject wrapper with the given id and notifies the host.
diff --git a/plugins/xpcom/VisualStudio/ff90-xpcom.vcproj b/plugins/xpcom/VisualStudio/ff90-xpcom.vcproj
new file mode 100755
index 0000000..51ee65c
--- /dev/null
+++ b/plugins/xpcom/VisualStudio/ff90-xpcom.vcproj
@@ -0,0 +1,845 @@
+﻿<?xml version="1.0" encoding="UTF-8"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="ff90-xpcom"
+	ProjectGUID="{6BF0C2CE-CB0C-421B-A67C-1E448371D24D}"
+	RootNamespace="ff90-xpcom"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug90"
+			IntermediateDirectory="Debug90"
+			ConfigurationType="2"
+			UseOfMFC="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff90\include;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\mozilla&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect&quot;;&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=9000"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				TreatWChar_tAsBuiltInType="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
+				ShowProgress="2"
+				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff90\xpGwtDevPlugin.dll"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\lib&quot;"
+				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
+				SubSystem="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				ImportLibrary="$(IntDir)\$(TargetName).lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release90"
+			IntermediateDirectory="Release90"
+			ConfigurationType="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\common&quot;;..\prebuilt\ff90\include;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\mozilla&quot;;&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include&quot;;&quot;..\..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect&quot;"
+				PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;FIREFOXPLUGIN_EXPORTS;GWT_DEBUGLEVEL=Debugging;XPCOM_GLUE;XPCOM_GLUE_USE_NSPR;MOZILLA_STRICT_API;BROWSER_FF8;GECKO_VERSION=9000;$(NOINHERIT)"
+				ExceptionHandling="1"
+				RuntimeLibrary="0"
+				TreatWChar_tAsBuiltInType="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				ResourceOutputFileName="$(IntDir)/$(TargetName).res"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="ws2_32.lib Advapi32.lib xpcomglue_s.lib xpcom.lib nspr4.lib mozalloc.lib xul.lib mozjs.lib"
+				ShowProgress="2"
+				OutputFile="$(ProjectDir)\..\prebuilt\extension\lib\WINNT_x86-msvc\ff90\xpGwtDevPlugin.dll"
+				LinkIncremental="0"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\lib&quot;"
+				ModuleDefinitionFile="$(ProjectDir)\..\xpGwtDevPlugin.def"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(IntDir)\$(TargetName).pdb"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				ImportLibrary="$(IntDir)\$(TargetName).lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\ExternalWrapper.h"
+				>
+			</File>
+			<File
+				RelativePath="..\FFSessionHandler.h"
+				>
+			</File>
+			<File
+				RelativePath="..\prebuilt\ff90\include\IOOPHM.h"
+				>
+			</File>
+			<File
+				RelativePath="..\JavaObject.h"
+				>
+			</File>
+			<File
+				RelativePath="..\JSRunner.h"
+				>
+			</File>
+			<File
+				RelativePath="..\mozincludes.h"
+				>
+			</File>
+			<File
+				RelativePath="..\Preferences.h"
+				>
+			</File>
+			<File
+				RelativePath="..\RootedObject.h"
+				>
+			</File>
+			<File
+				RelativePath="..\SessionData.h"
+				>
+			</File>
+			<File
+				RelativePath="..\XpcomDebug.h"
+				>
+			</File>
+			<Filter
+				Name="common"
+				>
+				<File
+					RelativePath="..\..\common\AllowedConnections.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\BrowserChannel.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\ByteOrder.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\CheckVersionsMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\ChooseTransportMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\Debug.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\DebugLevel.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\FatalErrorMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\FreeValueMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\HashMap.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\HostChannel.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\InvokeMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\InvokeSpecialMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\LoadJsniMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\LoadModuleMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\Message.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\Platform.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\ProtocolVersionMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\QuitMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\ReturnMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\scoped_ptr\scoped_ptr.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\ServerMethods.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\SessionHandler.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\Socket.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\SwitchTransportMessage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\Value.h"
+					>
+				</File>
+			</Filter>
+			<Filter
+				Name="gecko"
+				>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include\js-config.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsapi.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsautocfg.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jscompat.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsconfig.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include\jscpucfg.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\jscpucfg.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\jsinttypes.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jslong.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\jsosdep.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsotypes.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsproto.tbl"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jspubtd.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jstypes.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsutil.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsutil.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsutil.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\js\jsutil.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include\mozilla-config.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\nsAXPCNativeCallContext.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsCOMPtr.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nscore.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nscore.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsCycleCollector.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsDebug.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsError.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\widget\nsEvent.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsICategoryManager.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIClassInfo.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIClassInfoImpl.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIComponentManager.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsID.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIEnumerator.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIException.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIExceptionService.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIFactory.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIGenericFactory.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\necko\nsIHttpProtocolHandler.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIInterfaceInfo.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIInterfaceInfoManager.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\nsIJSContextStack.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIMemory.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIModule.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\caps\nsIPrincipal.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIProgrammingLanguage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\necko\nsIProtocolHandler.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\necko\nsIProxiedProtocolHandler.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\nsIScriptableInterfaces.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\dom\nsIScriptGlobalObject.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\dom\nsIScriptObjectPrincipal.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\caps\nsISecurityCheckedComponent.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISerializable.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIServiceManager.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISimpleEnumerator.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISimpleEnumerator.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISupports.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISupports.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISupportsBase.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISupportsBase.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISupportsImpl.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsISupportsUtils.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsISupportsUtils.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsIURI.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsIVariant.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\nsIXPConnect.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsMemory.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\necko\nsNetCID.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsrootidl.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\nsrootidl.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsServiceManagerUtils.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsStringAPI.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsTraceRefcnt.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsXPCOM.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsXPCOMCID.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\nsXPCOMStrings.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\pratom.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prcpucfg.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prinrval.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prlock.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prlog.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prlong.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\obsolete\protypes.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prthread.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prtime.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\prtypes.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\xpccomponents.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\xpcexception.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpconnect\xpcjsid.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\WINNT_x86-msvc\include\xpcom-config.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\xpt_arena.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\xpt_struct.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\..\..\plugin-sdks\gecko-sdks\gecko-9.0.0\include\xpcom\xptinfo.h"
+					>
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+			<File
+				RelativePath="..\xpGwtDevPlugin.rc"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\ExternalWrapper.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\FFSessionHandler.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\JavaObject.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\JSRunner.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\ModuleOOPHM.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						GeneratePreprocessedFile="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\Preferences.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\XpcomDebug.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\xpGwtDevPlugin.def"
+				>
+			</File>
+			<Filter
+				Name="common"
+				>
+				<File
+					RelativePath="..\..\common\AllowedConnections.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\CheckVersionsMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\ChooseTransportMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\Debug.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\FatalErrorMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\FreeValueMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\HostChannel.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\InvokeMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\InvokeSpecialMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\LoadJsniMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\LoadModuleMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\ProtocolVersionMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\ReturnMessage.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\ServerMethods.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\Socket.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\common\SwitchTransportMessage.cpp"
+					>
+				</File>
+			</Filter>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/plugins/xpcom/XpcomDebug.cpp b/plugins/xpcom/XpcomDebug.cpp
index 826cf04..cb18b29 100644
--- a/plugins/xpcom/XpcomDebug.cpp
+++ b/plugins/xpcom/XpcomDebug.cpp
@@ -77,7 +77,8 @@
     snprintf(buf, sizeof(buf), "bool(%s)", JSVAL_TO_BOOLEAN(v) ? "true"
         : " false");
   } else {
-    snprintf(buf, sizeof(buf), "unknown(%08x)", (unsigned) v);
+    // TODO(acleung): When we run into this, use the other api to figure out what v is.
+    // snprintf(buf, sizeof(buf), "unknown(%08x)", (unsigned) v);
   }
   buf[sizeof(buf) - 1] = 0;
   return std::string(buf);
diff --git a/plugins/xpcom/install-template.rdf b/plugins/xpcom/install-template.rdf
index 21c3ba0..163ed5a 100644
--- a/plugins/xpcom/install-template.rdf
+++ b/plugins/xpcom/install-template.rdf
@@ -12,7 +12,7 @@
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>3.0</em:minVersion>
-        <em:maxVersion>8.0.*</em:maxVersion>
+        <em:maxVersion>9.0.*</em:maxVersion>
       </Description>
     </em:targetApplication>
 
diff --git a/plugins/xpcom/prebuilt/extension/chrome.manifest b/plugins/xpcom/prebuilt/extension/chrome.manifest
index f5f39dd..fd48201 100644
--- a/plugins/xpcom/prebuilt/extension/chrome.manifest
+++ b/plugins/xpcom/prebuilt/extension/chrome.manifest
@@ -38,5 +38,12 @@
 binary-component lib/Darwin-gcc3/ff80/libgwt_dev_ff80.dylib ABI=Darwin_x86-gcc3 appversion<=8.0.*
 binary-component lib/WINNT_x86-msvc/ff80/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=8.0.*
 
+# Firefox 9
+binary-component lib/Linux_x86_64-gcc3/ff90/libgwt_dev_ff90.so ABI=Linux_x86_64-gcc3 appversion<=9.0.*
+binary-component lib/Linux_x86-gcc3/ff90/libgwt_dev_ff90.so ABI=Linux_x86-gcc3 appversion<=9.0.*
+binary-component lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib ABI=Darwin_x86_64-gcc3 appversion<=9.0.*
+binary-component lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib ABI=Darwin_x86-gcc3 appversion<=9.0.*
+binary-component lib/WINNT_x86-msvc/ff90/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=9.0.*
+
 interfaces components/IOOPHM.xpt
 contract @gwt.google.com/ExternalWrapper;1 {028DD88B-6D65-401D-AAFD-17E497D15D09}
diff --git a/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib
new file mode 100755
index 0000000..8b6b066
--- /dev/null
+++ b/plugins/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff90/libgwt_dev_ff90.dylib
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3+/libgwt_dev_ff3+.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3+/libgwt_dev_ff3+.so
index fe05e1b..5bd1445 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3+/libgwt_dev_ff3+.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3+/libgwt_dev_ff3+.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3/libgwt_dev_ff3.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3/libgwt_dev_ff3.so
index e1bf96b..6f16d23 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3/libgwt_dev_ff3.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff3/libgwt_dev_ff3.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff35/libgwt_dev_ff35.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff35/libgwt_dev_ff35.so
index 910e4fe..6be2bfa 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff35/libgwt_dev_ff35.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff35/libgwt_dev_ff35.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff36/libgwt_dev_ff36.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff36/libgwt_dev_ff36.so
index 9fe2794..8bfca75 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff36/libgwt_dev_ff36.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff36/libgwt_dev_ff36.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff40/libgwt_dev_ff40.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff40/libgwt_dev_ff40.so
index e33d5cc..3b7fd5c 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff40/libgwt_dev_ff40.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff40/libgwt_dev_ff40.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff50/libgwt_dev_ff50.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff50/libgwt_dev_ff50.so
index 1b159b0..f14318d 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff50/libgwt_dev_ff50.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff50/libgwt_dev_ff50.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff60/libgwt_dev_ff60.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff60/libgwt_dev_ff60.so
index dbbe645..4eeeb88 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff60/libgwt_dev_ff60.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff60/libgwt_dev_ff60.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff70/libgwt_dev_ff70.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff70/libgwt_dev_ff70.so
index 3493fef..9e72523 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff70/libgwt_dev_ff70.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff70/libgwt_dev_ff70.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff80/libgwt_dev_ff80.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff80/libgwt_dev_ff80.so
index 5592fed..8c0d4f4 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff80/libgwt_dev_ff80.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff80/libgwt_dev_ff80.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff90/libgwt_dev_ff90.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff90/libgwt_dev_ff90.so
new file mode 100755
index 0000000..7a2bfff
--- /dev/null
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff90/libgwt_dev_ff90.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3+/libgwt_dev_ff3+.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3+/libgwt_dev_ff3+.so
index 7adf26f..78e1d94 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3+/libgwt_dev_ff3+.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3+/libgwt_dev_ff3+.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3/libgwt_dev_ff3.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3/libgwt_dev_ff3.so
index 33a32e1..70db0c6 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3/libgwt_dev_ff3.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff3/libgwt_dev_ff3.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff35/libgwt_dev_ff35.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff35/libgwt_dev_ff35.so
index 06b9ddc..0d44a8d 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff35/libgwt_dev_ff35.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff35/libgwt_dev_ff35.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff36/libgwt_dev_ff36.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff36/libgwt_dev_ff36.so
index 5ec651a..fbbb3c5 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff36/libgwt_dev_ff36.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff36/libgwt_dev_ff36.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff40/libgwt_dev_ff40.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff40/libgwt_dev_ff40.so
index 055a3fd..2e7566e 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff40/libgwt_dev_ff40.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff40/libgwt_dev_ff40.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff50/libgwt_dev_ff50.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff50/libgwt_dev_ff50.so
index 6b8dbdb..a528ffc 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff50/libgwt_dev_ff50.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff50/libgwt_dev_ff50.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff60/libgwt_dev_ff60.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff60/libgwt_dev_ff60.so
index 8474cf7..eeae984 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff60/libgwt_dev_ff60.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff60/libgwt_dev_ff60.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff70/libgwt_dev_ff70.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff70/libgwt_dev_ff70.so
index ff0e788..724bb52 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff70/libgwt_dev_ff70.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff70/libgwt_dev_ff70.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff80/libgwt_dev_ff80.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff80/libgwt_dev_ff80.so
index f45c575..4fe7633 100755
--- a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff80/libgwt_dev_ff80.so
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff80/libgwt_dev_ff80.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff90/libgwt_dev_ff90.so b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff90/libgwt_dev_ff90.so
new file mode 100755
index 0000000..065c062
--- /dev/null
+++ b/plugins/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff90/libgwt_dev_ff90.so
Binary files differ
diff --git a/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff90/xpGwtDevPlugin.dll b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff90/xpGwtDevPlugin.dll
new file mode 100755
index 0000000..bcf7476
--- /dev/null
+++ b/plugins/xpcom/prebuilt/extension/lib/WINNT_x86-msvc/ff90/xpGwtDevPlugin.dll
Binary files differ
diff --git a/plugins/xpcom/prebuilt/gwt-dev-plugin.xpi b/plugins/xpcom/prebuilt/gwt-dev-plugin.xpi
index a332a8d..d52faa5 100644
--- a/plugins/xpcom/prebuilt/gwt-dev-plugin.xpi
+++ b/plugins/xpcom/prebuilt/gwt-dev-plugin.xpi
Binary files differ
diff --git a/plugins/xpcom/prebuilt/update.rdf b/plugins/xpcom/prebuilt/update.rdf
index 9ca0f40..7581898 100644
--- a/plugins/xpcom/prebuilt/update.rdf
+++ b/plugins/xpcom/prebuilt/update.rdf
@@ -14,7 +14,7 @@
               <Description>
                 <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
                 <em:minVersion>3.0</em:minVersion>
-                <em:maxVersion>8.0.*</em:maxVersion>
+                <em:maxVersion>9.0.*</em:maxVersion>
                 <em:updateLink>https://dl-ssl.google.com/gwt/plugins/firefox/gwt-dev-plugin.xpi</em:updateLink>
                 <em:updateInfoURL>https://dl-ssl.google.com/gwt/plugins/firefox/gwt-dev-plugin-info.xhtml?locale=%APP_LOCALE%</em:updateInfoURL>
 
