diff --git a/tools/apicheck/src/com/android/apicheck/Errors.java b/tools/apicheck/src/com/android/apicheck/Errors.java
index cd4ba25..d7013e3 100644
--- a/tools/apicheck/src/com/android/apicheck/Errors.java
+++ b/tools/apicheck/src/com/android/apicheck/Errors.java
@@ -114,6 +114,7 @@
     public static Error CHANGED_NATIVE = new Error(22, HIDDEN);
     public static Error CHANGED_CLASS = new Error(23, WARNING);
     public static Error CHANGED_DEPRECATED = new Error(24, WARNING);
+    public static Error CHANGED_SYNCHRONIZED = new Error(25, ERROR);
     
     public static Error[] ERRORS = {
         PARSE_ERROR,
@@ -140,6 +141,7 @@
         CHANGED_NATIVE,
         CHANGED_CLASS,
         CHANGED_DEPRECATED,
+        CHANGED_SYNCHRONIZED,
         };
 
     public static boolean setErrorLevel(int code, int level) {
diff --git a/tools/apicheck/src/com/android/apicheck/MethodInfo.java b/tools/apicheck/src/com/android/apicheck/MethodInfo.java
index 2994460..86e20de 100644
--- a/tools/apicheck/src/com/android/apicheck/MethodInfo.java
+++ b/tools/apicheck/src/com/android/apicheck/MethodInfo.java
@@ -145,6 +145,12 @@
             consistent = false;
         }
         
+        if (mIsSynchronized != mInfo.mIsSynchronized) {
+            Errors.error(Errors.CHANGED_SYNCHRONIZED, mInfo.position(),
+                    "Method " + mInfo.qualifiedName() + " has changed 'synchronized' qualifier from " + mIsSynchronized + " to " + mInfo.mIsSynchronized);
+            consistent = false;
+        }
+        
         for (String exec : mExceptions) {
             if (!mInfo.mExceptions.contains(exec)) {
                 // exclude 'throws' changes to finalize() overrides with no arguments
diff --git a/tools/atree/files.cpp b/tools/atree/files.cpp
index 0f59521..c675ab7 100644
--- a/tools/atree/files.cpp
+++ b/tools/atree/files.cpp
@@ -1,5 +1,7 @@
 #include "files.h"
 #include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
 #include <errno.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/tools/atree/fs.cpp b/tools/atree/fs.cpp
index 15d6092..022bd8c 100644
--- a/tools/atree/fs.cpp
+++ b/tools/atree/fs.cpp
@@ -6,6 +6,7 @@
 #include <string>
 #include <vector>
 #include <stdio.h>
+#include <string.h>
 #include <errno.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/tools/droiddoc/templates/assets/android-developer-core.css b/tools/droiddoc/templates/assets/android-developer-core.css
index eeedc7f..73c08db 100644
--- a/tools/droiddoc/templates/assets/android-developer-core.css
+++ b/tools/droiddoc/templates/assets/android-developer-core.css
@@ -288,50 +288,54 @@
 
 /* main */
 
+#mainBodyFluid {
+  margin: 20px 10px;
+  color:#333;
+}
+
 #mainBodyFixed {
-  margin: 20px auto;
+  margin: 20px 10px;
   color: #333;
   width:920px;
 }
 
-#mainBodyFixed h3 {
+#mainBodyFixed h3,
+#mainBodyFluid h3 {
   color:#336666;
   font-size:1.25em;
   margin: 0em 0em 0em 0em;
   padding-bottom:.5em;
 }
 
-#mainBodyFixed h2 { 
+#mainBodyFixed h2,
+#mainBodyFluid h2 { 
   color:#336666;
   font-size:1.25em;
   margin: 0;
   padding-bottom:.5em;
 }
 
-#mainBodyFixed h1 { 
+#mainBodyFixed h1,
+#mainBodyFluid h1 { 
   color:#435A6E;
   font-size:1.7em;
   margin: 1em 0;
 }
 
 #mainBodyFixed .green,
+#mainBodyFluid .green,
 #jd-content .green { 
   color:#7BB026;
   background-color:none;
 }
 
-#mainBodyFixed a {
+#mainBodyFixed a,
+#mainBodyFluid a {
   color: #006699;
   font-size: 13px;
   text-decoration: underline;
 }
 
-#mainBodyFixed a.orangeLink {
-  color: #ff6600;
-  font-size: 13px;
-  text-decoration: underline;
-}
-
 #mainBodyLeft {
   float: left;
   width: 600px;
