diff --git a/README b/README
index e94d178..11a7a1f 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
 # HOW TO BUILD SOURCE.ANDROID.COM #
 
-source.android.com contains tutorials, references, and miscellaneous information relating to the Android Open Source Project (AOSP). The current iteration of this site is fully static HTML (notably lacking in javascript and doxygen content), and is and/or was maintained by skyler (illustrious intern to the almighty JBQ).
+source.android.com contains tutorials, references, and miscellaneous information relating to the Android Open Source Project (AOSP). The current iteration of this site is fully static HTML (notably lacking in javascript and doxygen content), and is and/or was maintained by skyler (illustrious intern under Dan Morrill and assistant to the almighty JBQ).
 
 ## Short Instructions ##
 
@@ -8,8 +8,9 @@
 
     build.py
 
-This generates a directory html_out, which is the fully built site. Hoorah.
+This generates a directory html_out, which is the fully built site. Hoorah. 
 
+The included micro-httpd.py script is helpful for testing the site on your own machine. 
 
 ## Less Short Instructions ##
 
@@ -24,20 +25,20 @@
 
     assets/     stylish things that make the page look pretty
     images/     exactly what it sounds like
-    cdds/       compatibility documents in PDF format
-
 
 ### Structure of Site Source ###
 
-The build script currently assumes that
-- directory structure in site_src is only one level deep;
-- every file under the site_src directory is an individual page of source.android.com;
+The build script assumes that
+- every .mdml file under the site_src directory is an individual page in markdown format;
 - each directory within site_src is a tab of source.android.com and contains its particular sidebar.
+  Note, the sidebar in the root of site_src/ itself is present but empty.
 
-These assumptions are kind of stupid, but for the moment, they work, because source.android.com is actually very simple.
+
+
+# HOW TO PUSH SOURCE.ANDROID.COM TO PROD #
 
 
 
 # SORDID HISTORY OF SOURCE.ANDROID.COM #
 
-
+Once upon a time, source.android.com used to be a site on Sites.
diff --git a/src/about/index.md b/src/about/index.md
index 0a51b7d..dae8e85 100644
--- a/src/about/index.md
+++ b/src/about/index.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # About the Android Open Source Project #
 
 Android is an open-source software stack created for mobile phones and
diff --git a/src/about/philosophy.md b/src/about/philosophy.md
index b80e017..995d5e4 100644
--- a/src/about/philosophy.md
+++ b/src/about/philosophy.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Philosophy and Goals #
 
 Android is an open-source software stack for mobile phones and other
diff --git a/src/community/groups-charter.md b/src/community/groups-charter.md
index 3cfac22..eea9033 100644
--- a/src/community/groups-charter.md
+++ b/src/community/groups-charter.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Android Discussion Groups Charter #
 
 ## Audience ##
diff --git a/src/community/index.md b/src/community/index.md
index 4868bf6..db3d3e3 100644
--- a/src/community/index.md
+++ b/src/community/index.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Android Community #
 
 Welcome to the Android community!
@@ -26,7 +42,8 @@
 
 - *Use a clear, relevant message subject.* This helps everyone, both those trying to answer your question as well as those who may be looking for information in the future.
 
-- *Give plenty of details in your post.* Code or log snippets, pointers to screenshots, and similar details will get better results and make for better discussions. For a great guide to phrasing your questions, read [How to Ask Questions the Smart Way](http://www.catb.org/%7Eesr/faqs/smart-questions.html)
+- *Give plenty of details in your post.* Code or log snippets, pointers to screenshots, and similar details will get better results and make for better discussions. For a great guide to phrasing your questions, read [How to Ask Questions the Smart Way](http://www.catb.org/%7Eesr/faqs/smart-questions.html).
+<img src="/images/external-link.png">
 
 ## Open Source Project discussions ##
 
diff --git a/src/compatibility/2.1/versions.md b/src/compatibility/2.1/versions.md
index 9fcf50b..143b4a7 100644
--- a/src/compatibility/2.1/versions.md
+++ b/src/compatibility/2.1/versions.md
@@ -1,8 +1,24 @@
-page.title=Permitted Version Strings for Android 2.1
+<!--
+   Copyright 2010 The Android Open Source Project 
 
-As described in Section 3.2.2 of the [Android 2.1 Compatibility Definition](android-2.1-cdd.pdf)
-Definition</a>, only certain strings are allowable for the system property
-<code>android.os.Build.VERSION.RELEASE</code>. The reason for this is that
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+# Permitted Version Strings for Android 2.1 #
+
+As described in Section 3.2.2 of the [Android 2.1 Compatibility Definition](/cdds/android-2.1-cdd.pdf), 
+only certain strings are allowable for the system property
+`android.os.Build.VERSION.RELEASE`. The reason for this is that
 applications and web sites may rely on predictable values for this string, and
 so that end users can easily and reliably identify the version of Android
 running on their devices.
@@ -11,8 +27,9 @@
 but not change any API behavior, such releases may not be accompanied by a new
 Compatibility Definition Document. This page lists the versions that are
 allowable by an Android 2.1-based system. The only permitted values for
-<code>android.os.Build.VERSION.RELEASE</code> for Android 2.1 are:
+`android.os.Build.VERSION.RELEASE` for Android 2.1 are:
 
 - 2.1
+
 - 2.1-update1
 
diff --git a/src/compatibility/2.2/versions.md b/src/compatibility/2.2/versions.md
index 80273f9..571760a 100644
--- a/src/compatibility/2.2/versions.md
+++ b/src/compatibility/2.2/versions.md
@@ -1,7 +1,24 @@
-page.title=Permitted Version Strings for Android 2.2
+<!--
+   Copyright 2010 The Android Open Source Project 
 
-As described in Section 3.2.2 of the [Android 2.2 Compatibility Definition](android-2.2-cdd.pdf), only certain strings are allowable for the system property
-<code>android.os.Build.VERSION.RELEASE</code>. The reason for this is that
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+# Permitted Version Strings for Android 2.2 #
+
+As described in Section 3.2.2 of the [Android 2.2 Compatibility Definition](/cdds/android-2.2-cdd.pdf), 
+only certain strings are allowable for the system property
+`android.os.Build.VERSION.RELEASE`. The reason for this is that
 applications and web sites may rely on predictable values for this string, and
 so that end users can easily and reliably identify the version of Android
 running on their devices.
@@ -9,11 +26,10 @@
 Because subsequent releases of the Android software may revise this string,
 but not change any API behavior, such releases may not be accompanied by a new
 Compatibility Definition Document. This page lists the versions that are
-allowable by an Android 2.2-based system.
-
-The value of <code>android.os.Build.VERSION.RELEASE</code> for Android 2.2
-MUST be one of the following strings:
+allowable by an Android 2.2-based system. The only permitted values for
+`android.os.Build.VERSION.RELEASE` for Android 2.2 are:
 
 - 2.2
+
 - 2.2.1
 
diff --git a/src/compatibility/2.3/versions.md b/src/compatibility/2.3/versions.md
index 1b1bc9d..5cb3e68 100644
--- a/src/compatibility/2.3/versions.md
+++ b/src/compatibility/2.3/versions.md
@@ -1,7 +1,24 @@
-page.title=Permitted Version Strings for Android 2.3
+<!--
+   Copyright 2010 The Android Open Source Project 
 
-As described in Section 3.2.2 of the [Android 2.3 Compatibility Definition](android-2.3-cdd.pdf), only certain strings are allowable for the system property
-<code>android.os.Build.VERSION.RELEASE</code>. The reason for this is that
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+# Permitted Version Strings for Android 2.3 #
+
+As described in Section 3.2.2 of the [Android 2.3 Compatibility Definition](/cdds/android-2.3-cdd.pdf), 
+only certain strings are allowable for the system property
+`android.os.Build.VERSION.RELEASE`. The reason for this is that
 applications and web sites may rely on predictable values for this string, and
 so that end users can easily and reliably identify the version of Android
 running on their devices.
@@ -9,11 +26,7 @@
 Because subsequent releases of the Android software may revise this string,
 but not change any API behavior, such releases may not be accompanied by a new
 Compatibility Definition Document. This page lists the versions that are
-allowable by an Android 2.2-based system.
+allowable by an Android 2.3-based system. The only permitted values for
+`android.os.Build.VERSION.RELEASE` for Android 2.3 are:
 
-The value of <code>android.os.Build.VERSION.RELEASE</code> for Android 2.3
-MUST be one of the following strings:
-
-- 2.3
-- 2.3.1
-
+- 2.3.3
diff --git a/src/compatibility/contact-us.md b/src/compatibility/contact-us.md
index 5fd45cb..486677d 100644
--- a/src/compatibility/contact-us.md
+++ b/src/compatibility/contact-us.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Contact Us #
 
 Thanks for your interest in Android compatibility!
diff --git a/src/compatibility/cts-development.md b/src/compatibility/cts-development.md
index 1f8f8e6..cb60cf2 100644
--- a/src/compatibility/cts-development.md
+++ b/src/compatibility/cts-development.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # CTS Development #
 
 ## Initializing Your Repo Client ##
diff --git a/src/compatibility/cts-intro.md b/src/compatibility/cts-intro.md
index 0c4e095..5cc5240 100644
--- a/src/compatibility/cts-intro.md
+++ b/src/compatibility/cts-intro.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Compatibility Test Suite #
 
 ## How does the CTS work? ##
diff --git a/src/compatibility/downloads.md b/src/compatibility/downloads.md
index b308009..b201032 100644
--- a/src/compatibility/downloads.md
+++ b/src/compatibility/downloads.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Android Compatibility Downloads #
 
 Thanks for your interest in Android Compatibility! The links below allow
@@ -11,7 +27,7 @@
 CTS release for Android 2.3 has not yet been prepared, but one will be
 available soon.
 
-- [Android 2.3 Compatibility Definition Document (CDD)](/cdds/android-2.3-cdd.pdf)
+- [Android 2.3 Compatibility Definition Document (CDD)](2.3/android-2.3.3-cdd.pdf)
 <!-- [Android 2.2 R4 Compatibility Test Suite (CTS)](http://dl.google.com/dl/android/cts/android-cts-2.2_r4-x86.zip) -->
 
 ## Android 2.2 ##
@@ -20,7 +36,7 @@
 FroYo. Source code for Android 2.2 is found in the 'froyo' branch in the
 open-source tree.
 
-- [Android 2.2 Compatibility Definition Document (CDD)](/cdds/android-2.2-cdd.pdf)
+- [Android 2.2 Compatibility Definition Document (CDD)](2.2/android-2.2-cdd.pdf)
 - [Android 2.2 R4 Compatibility Test Suite (CTS)](http://dl.google.com/dl/android/cts/android-cts-2.2_r4-x86.zip)
 
 ## Android 2.1 ##
@@ -30,7 +46,7 @@
 open-source tree. Note that for technical reasons, there is no compatibility
 program for Android 2.0 or 2.0.1, and new devices must use Android 2.1.
 
-- [Android 2.1 Compatibility Definition Document (CDD)](/cdds/android-2.1-cdd.pdf)
+- [Android 2.1 Compatibility Definition Document (CDD)](2.1/android-2.1-cdd.pdf)
 - [Android 2.1 R5 Compatibility Test Suite (CTS)](http://dl.google.com/dl/android/cts/android-cts-2.1_r5-x86.zip)
 
 ## Android 1.6 ##
@@ -39,14 +55,14 @@
 Android 1.6 was obsoleted by Android 2.1. Source code for Android 1.6 is found
 in the 'donut' branch in the open-source tree.
 
-- [Android 1.6 Compatibility Definition Document (CDD)](/cdds/android-1.6-cdd.pdf)
+- [Android 1.6 Compatibility Definition Document (CDD)](1.6/android-1.6-cdd.pdf)
 
 ## Compatibility Test Suite Manual ##
 
 The CTS user manual is applicable to any CTS version, but CTS 2.1 R2 and
 beyond require [additional steps](cts-intro.html) to run the accessibility tests.
 
-- [Compatibility Test Suite (CTS) User Manual](/cdds/android-cts-manual-r4.pdf)
+- [Compatibility Test Suite (CTS) User Manual](android-cts-manual-r4.pdf)
 
 ## Older Android Versions ##
 
diff --git a/src/compatibility/index.md b/src/compatibility/index.md
index 862f7c8..67ba133 100644
--- a/src/compatibility/index.md
+++ b/src/compatibility/index.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Android Compatibility #
 
 Android's purpose is to establish an open platform for developers to build
diff --git a/src/compatibility/overview.md b/src/compatibility/overview.md
index 5ca207e..2111983 100644
--- a/src/compatibility/overview.md
+++ b/src/compatibility/overview.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Compatibility Program Overview #
 
 The Android compatibility program makes it easy for mobile device
@@ -86,7 +102,7 @@
 If you want to build a device compatible with a given Android version,
 start by checking out the source code for that version, and then read the
 corresponding CDD and stay within its guidelines. For additional details,
-simply examine <a href="">the latest CDD</a>.
+simply examine [the latest CDD](2.3/android-2.3.3-cdd.pdf).
 
 # Compatibility Test Suite (CTS) #
 
diff --git a/src/compatibility/sidebar.md b/src/compatibility/sidebar.md
index 87682e6..abefb40 100644
--- a/src/compatibility/sidebar.md
+++ b/src/compatibility/sidebar.md
@@ -1,12 +1,12 @@
 # Getting Started #
-- [Compatibility Overview](overview.html)
-- [Current CDD](/compatibility/2.3/android-2.3-cdd.pdf)
-- [CTS Introduction](cts-intro.html)
-- [CTS Development](cts-development.html)
+- [Compatibility Overview](/compatibility/overview.html)
+- [Current CDD](/compatibility/2.3/android-2.3.3-cdd.pdf)
+- [CTS Introduction](/compatibility/cts-intro.html)
+- [CTS Development](/compatibility/cts-development.html)
 
 # More Information #
-- [Downloads](downloads.html)
+- [Downloads](/compatibility/downloads.html)
 - [FAQs](/faqs.html#compatibility)
-- [Contact Us](contact-us.html)
+- [Contact Us](/compatibility/contact-us.html)
 
 
diff --git a/src/faqs.md b/src/faqs.md
index 6c2287f..df2d126 100644
--- a/src/faqs.md
+++ b/src/faqs.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Frequently Asked Questions #
 
 [TOC]
diff --git a/src/images/useless/bluetooth-0.jpg b/src/images/useless/bluetooth-0.jpg
deleted file mode 100644
index f06eebf..0000000
--- a/src/images/useless/bluetooth-0.jpg
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/cts-process-0.gif b/src/images/useless/cts-process-0.gif
deleted file mode 100644
index 565da23..0000000
--- a/src/images/useless/cts-process-0.gif
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/cts-process-1.png b/src/images/useless/cts-process-1.png
deleted file mode 100644
index 2656433..0000000
--- a/src/images/useless/cts-process-1.png
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/customlogo.gif.png b/src/images/useless/customlogo.gif.png
deleted file mode 100755
index 3322fed..0000000
--- a/src/images/useless/customlogo.gif.png
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/discuss-0.png b/src/images/useless/discuss-0.png
deleted file mode 100644
index e2cea10..0000000
--- a/src/images/useless/discuss-0.png
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/download-0.png b/src/images/useless/download-0.png
deleted file mode 100644
index e2cea10..0000000
--- a/src/images/useless/download-0.png
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/git-repo-0.png b/src/images/useless/git-repo-0.png
deleted file mode 100644
index e2cea10..0000000
--- a/src/images/useless/git-repo-0.png
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/how-it-works-0.png b/src/images/useless/how-it-works-0.png
deleted file mode 100644
index 3c1c9dc..0000000
--- a/src/images/useless/how-it-works-0.png
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/how-it-works-1.png b/src/images/useless/how-it-works-1.png
deleted file mode 100644
index 856674a..0000000
--- a/src/images/useless/how-it-works-1.png
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/stk_display_text2.gif b/src/images/useless/stk_display_text2.gif
deleted file mode 100755
index cac707b..0000000
--- a/src/images/useless/stk_display_text2.gif
+++ /dev/null
Binary files differ
diff --git a/src/images/useless/submit-patches-1.png b/src/images/useless/submit-patches-1.png
deleted file mode 100644
index 777a3c3..0000000
--- a/src/images/useless/submit-patches-1.png
+++ /dev/null
Binary files differ
diff --git a/src/index.md b/src/index.md
index c03d2fb..aaf3151 100644
--- a/src/index.md
+++ b/src/index.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Welcome to Android #
 
 <div style="float: right; width: 35%;">
diff --git a/src/source/build-numbers.md b/src/source/build-numbers.md
index b3e3836..0592939 100644
--- a/src/source/build-numbers.md
+++ b/src/source/build-numbers.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Codenames, Tags, and Build Numbers #
 
 At a high level, Android development happens around families of
diff --git a/src/source/building-dream.md b/src/source/building-dream.md
index 9ba1187..74f7521 100644
--- a/src/source/building-dream.md
+++ b/src/source/building-dream.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Building for an Android Dev Phone #
 
 *The information on this page is a bit out of date. We'll update this
diff --git a/src/source/building.md b/src/source/building.md
index 20e34fa..e026f5a 100644
--- a/src/source/building.md
+++ b/src/source/building.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Building the System #
 
 The basic sequence of build commands is as follows:
@@ -21,11 +37,7 @@
     
     $ lunch full-eng
 
-Common targets include
-    
-- **full-eng**: emulator build with all debugging enabled
-- **full_passion-userdebug**: passion (Nexus One) build with minimal debugging 
-- **full_crespo-userdebug**: crespo (Nexus S) build with minimal debugging. 
+The example above refers to a complete build for the emulator, with all debugging enabled.
 
 If run with no arguments `lunch` will prompt you to choose a target from the menu. 
 
@@ -36,8 +48,7 @@
 -----------|-----------
 passion    | Nexus One
 crespo     | Nexus S
-voles      | Droid
-opal       | myTouch/Sapphire
+generic    | emulator
 
 and the BUILDTYPE is one of the following:
 
@@ -135,11 +146,7 @@
 
 ## No USB Permission ##
 
-On most Linux systems, unprivileged users cannot access USB ports by default. 
-
-TODO: what error will occur?
-
-Follow the instructions on the [Initializing](initializing.html) page for configuring USB access.  
+On most Linux systems, unprivileged users cannot access USB ports by default. If you see a permission denied error, follow the instructions on the [Initializing](initializing.html) page for configuring USB access.  
 
 If adb was already running and cannot connect to the device after
 getting those rules set up, it can be killed with `adb kill-server`.
diff --git a/src/source/cla-corporate.md b/src/source/cla-corporate.md
index 041aaf7..ffc193f 100644
--- a/src/source/cla-corporate.md
+++ b/src/source/cla-corporate.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Corporate Contributor License Agreement #
 
 In order to clarify the intellectual property license granted with Contributions from any person or entity, the Android Open Source Project (the "Project") must have a Contributor License Grant ("Grant") on file that has been signed by each Contributor, indicating agreement to the license terms below. This license is for your protection as a Contributor as well as the protection of the Project and the Android Open Source Project Leads (the "Project Leads"); it does not change your rights to use your own Contributions for any other purpose.
diff --git a/src/source/cla-individual.md b/src/source/cla-individual.md
index 9957ab2..d51ad83 100644
--- a/src/source/cla-individual.md
+++ b/src/source/cla-individual.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Contributor License Agreement for Individuals #
 
 *Please visit the [code review tool](https://review.source.android.com/#settings,new-agreement)
diff --git a/src/source/code-lines.md b/src/source/code-lines.md
index 67b2c00..1d6d421 100644
--- a/src/source/code-lines.md
+++ b/src/source/code-lines.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Android Code-Lines #
 
 The Android Open Source Project maintains a complete software stack intended
diff --git a/src/source/code-style.md b/src/source/code-style.md
index d3d09bc..f4d34d4 100644
--- a/src/source/code-style.md
+++ b/src/source/code-style.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Code Style Guidelines for Contributors #
 
 The rules below are not guidelines or recommendations, but strict rules.
@@ -17,16 +33,12 @@
 Sometimes it is tempting to write code that completely ignores an exception
 like this:
 
-<!--div style="display: inline-block"> <!-- Just to make the code not overlap the ToC -->
-
     void setServerPort(String value) {
         try {
             serverPort = Integer.parseInt(value);
         } catch (NumberFormatException e) { }
     }
 
-<!-- /div -->
-
 You must never do this. While you may think that your code will never
 encounter this error condition or that it is not important to handle it,
 ignoring exceptions like above creates mines in your code for someone else to
diff --git a/src/source/downloading.md b/src/source/downloading.md
index 835b808..3faaa6b 100644
--- a/src/source/downloading.md
+++ b/src/source/downloading.md
@@ -1,8 +1,24 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Downloading the Source Tree #
 
 ## Installing Repo ##
 
-Repo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see <a href="{@docRoot}source/git-repo.html">Using Repo and Git</a>.</p>
+Repo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see [Version Control](version-control.html).
 
 To install, initialize, and configure Repo, follow these steps:
 
@@ -46,7 +62,7 @@
 
     $ repo sync
 
-The Android source files will be located in your working directory under their project names.  The initial sync operation will take several minutes to complete.  For more about `repo sync` and other Repo commands, see [Using Repo and Git](git-repo.html).
+The Android source files will be located in your working directory under their project names.  The initial sync operation will take several minutes to complete.  For more about `repo sync` and other Repo commands, see [Version Control](version-control.html).
 
 
 ## Verifying Git Tags ##
diff --git a/src/source/flashing.md b/src/source/flashing.md
index fb6c516..80f4979 100644
--- a/src/source/flashing.md
+++ b/src/source/flashing.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Flashing #
 
 To flash a device, you will need to use `fastboot`. Place the device in fastboot mode either manually by holding the appropriate key combination at boot, or from the shell with
diff --git a/src/source/git-resources.md b/src/source/git-resources.md
index 9012872..fc33249 100644
--- a/src/source/git-resources.md
+++ b/src/source/git-resources.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Git Resources #
 
 For further information on Git, check out these excellent off-site resources:
diff --git a/src/source/index.md b/src/source/index.md
index 742a24a..f160dc41 100644
--- a/src/source/index.md
+++ b/src/source/index.md
@@ -1,8 +1,24 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Get Involved #
 
 Thanks for your interest in Android! Here are some ways you can get involved
 and help us improve Android. For background on the Android project and our
-goals, check out the [Project Philosophy page](philosophy.html).
+goals, check out the [Project Philosophy page](/about/philosophy.html).
 
 ## Report Bugs ##
 
diff --git a/src/source/initializing.md b/src/source/initializing.md
index e08a487..af33f1f 100644
--- a/src/source/initializing.md
+++ b/src/source/initializing.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Initializing a Build Environment #
 
 The "Getting Started" section describes how to set up your local work environment, how to use Repo to get the Android files, and how to build the files on your machine.  To build the Android source files, you will need to use Linux or Mac OS. Building under Windows is not currently supported.
diff --git a/src/source/licenses.md b/src/source/licenses.md
index 677abcc..74979f9 100644
--- a/src/source/licenses.md
+++ b/src/source/licenses.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Licenses #
 
 The Android Open Source Project uses a few [open source initiative](http://www.opensource.org/) 
diff --git a/src/source/life-of-a-bug.md b/src/source/life-of-a-bug.md
index 8ed2cae..1dd7d59 100644
--- a/src/source/life-of-a-bug.md
+++ b/src/source/life-of-a-bug.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Life of a Bug #
 
 The Android Open Source project maintains a public issue tracker where you
diff --git a/src/source/life-of-a-patch.md b/src/source/life-of-a-patch.md
index 95cb96d..7799424 100644
--- a/src/source/life-of-a-patch.md
+++ b/src/source/life-of-a-patch.md
@@ -1,7 +1,23 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Life of a Patch #
 
 The Android Open Source Project (AOSP) uses a web-based code review tool
-known as "gerrit". The image below is a flowchart that details what happens to
+known as Gerrit. The image below is a flowchart that details what happens to
 a patch, once it's been written. Though it may appear complex, the majority of
 the steps below are performed in the web application.
 
diff --git a/src/source/overview.md b/src/source/overview.md
index 67394b8..b42c436 100644
--- a/src/source/overview.md
+++ b/src/source/overview.md
@@ -1,35 +1,65 @@
-# Android 2.1 Platform #
+<!--
+   Copyright 2010 The Android Open Source Project 
 
-<p>Our sister site, <a
-href="http://developer.android.com/">http://developer.android.com/</a>, 
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+# Android Platform Overview #
+
+Our sister site, [developer.android.com](http://developer.android.com/), 
 includes feature overviews of the various Android platform versions.
 The links below will take you to developer.android.com where you can view this
-information.</p>
-<p>The links below will navigate you away from this site.</p>
-<h3><a href="http://developer.android.com/sdk/android-2.3-highlights.html">Android 2.3</a></h3>
-<p>Android 2.3 corresponded to the "Gingerbread" milestone branch, and has an API level of 9.</p>
-<h3><a href="http://developer.android.com/sdk/android-2.2-highlights.html">Android 2.2</a></h3>
-<p>Android 2.2 corresponded to the "FroYo" milestone branch, and has an API level of 8.</p>
-<h3><a href="http://developer.android.com/sdk/android-2.0-highlights.html">Android 2.1</a></h3>
-<p>Android 2.1 corresponded to the "Eclair" milestone branch, and has an API level of
-7.</p>
-<p>The Eclair branch was also used for 2.0 and 2.0.1; however, both of those
+information.
+
+The links below will navigate you away from this site.
+
+## [Android 2.3](http://developer.android.com/sdk/android-2.3-highlights.html) ##
+
+Android 2.3 corresponded to the "Gingerbread" milestone branch, and has an API level of 9.
+
+## [Android 2.2](http://developer.android.com/sdk/android-2.2-highlights.html) ##
+
+Android 2.2 corresponded to the "FroYo" milestone branch, and has an API level of 8.
+
+## [Android 2.1](http://developer.android.com/sdk/android-2.0-highlights.html) ##
+
+Android 2.1 corresponded to the "Eclair" milestone branch, and has an API level of 7.
+
+The Eclair branch was also used for 2.0 and 2.0.1; however, both of those
 releases were quickly obsoleted by the version 2.1 Eclair release. As Android
 2.1 includes key bug fixes and improvements not present in 2.0/2.0.1, only
 Android 2.1 should be used for new devices. As there is no compatibility
 program for 2.0 or 2.0.1, the officially compatible Eclair-based release is Android
 2.1. (The linked document refers to Android 2.0, because there were
-no new platform features added in 2.1.)</p>
-<h3><a href="http://developer.android.com/sdk/android-1.6-highlights.html">Android 1.6</a></h3>
-<p>Android 1.6 corresponded to the "Donut" milestone branch, and has an API level of
-4.</p>
-<h3><a href="http://developer.android.com/sdk/android-1.5-highlights.html">Android 1.5</a></h3>
-<p>Android 1.5 corresponded to the "Cupcake" milestone branch, and has an API
-level of 3.</p>
-<h3><a href="http://developer.android.com/sdk/android-1.1.html">Android 1.1</a></h3>
-<p>Android 1.1 has an API level of 2. Android 1.1 was known as
-"Petit Four" internally, though this name was not used officially.</p>
-<h3>Android 1.0</h3>
-<p>was the first release of Android, and has an API
+no new platform features added in 2.1.)
+
+## [Android 1.6](http://developer.android.com/sdk/android-1.6-highlights.html) ##
+
+Android 1.6 corresponded to the "Donut" milestone branch, and has an API level of 4.
+
+## [Android 1.5](http://developer.android.com/sdk/android-1.5-highlights.html) ##
+
+Android 1.5 corresponded to the "Cupcake" milestone branch, and has an API
+level of 3.
+
+## [Android 1.1](http://developer.android.com/sdk/android-1.1.html) ##
+
+Android 1.1 has an API level of 2. Android 1.1 was known as
+"Petit Four" internally, though this name was not used officially.
+
+## Android 1.0 ##
+
+was the first release of Android, and has an API
 level of 1. Since it was the first released version of Android, no platform
-highlights were prepared for this release.</p>
+highlights were prepared for this release.
+
diff --git a/src/source/report-bugs.md b/src/source/report-bugs.md
index 3cca08d..c660b34 100644
--- a/src/source/report-bugs.md
+++ b/src/source/report-bugs.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Report Bugs #
 
 Thanks for your interest in Android! One of the best ways you can help us
diff --git a/src/source/roles.md b/src/source/roles.md
index 1badf26..5e7c62a 100644
--- a/src/source/roles.md
+++ b/src/source/roles.md
@@ -1,7 +1,23 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # People and Roles #
 
 The Android Open Source Project (AOSP) includes individuals working in a variety
-of roles. As noted in [Our Philosophy](about/philosophy.html), Google is responsible for Android product management
+of roles. As noted in [Our Philosophy](philosophy.html), Google is responsible for Android product management
 and the engineering process for the core framework and platform; however,
 the project considers contributions from any source, not just Google. This
 page describes the kinds of roles that interested parties can take on.
@@ -9,7 +25,7 @@
 Anyone who is interested in exploring and contributing to Android can use the
 Android Open Source Project resources. Anyone can join the mailing lists, ask
 questions, contribute patches, report bugs, look at submitted patches, and use
-the tools. To get started with the Android code, see [Get Involved](source/index.html).
+the tools. To get started with the Android code, see [Get Involved](/source/index.html).
 
 ## Contributor ##
 
diff --git a/src/source/submit-patches.md b/src/source/submit-patches.md
index d663727..037aca4 100644
--- a/src/source/submit-patches.md
+++ b/src/source/submit-patches.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Submitting Patches #
 
 This page describes the full process of submitting a patch to the AOSP, including reviewing and tracking changes with Gerrit.
@@ -19,31 +35,84 @@
 - Note that changes to some of the upstream projects used by Android should be
 made directly to that project, as described in [Upstream Projects](#upstream-projects).
 
-## Patch Etiquette ##
+# For contributors #
 
-### Writing patch descriptions ###
+## Start a repo branch ##
 
-Each change list description will be pushed to the public AOSP repository. Please follow our guidelines for writing change descriptions in order to ensure your change is reviewed and approved.
+For each change you intend to make, start a new branch within the relevant git repository:
 
-- Start with a one-line summary, 50-60 characters max, followed by a blank line. This format is used by git and gerrit for various displays.
+    $ repo start NAME
+
+You can start several independent branches at the same time in the same repository. The branch NAME is local to your workspace and will not be included on gerrit or the final source tree.
+
+## Make your change ##
+
+Once you have modified the source files (and validated them, please) commit the changes to your local repository:
+
+    $ git add -A
+    $ git commit -s
+
+Provide a detailed description of the change in your commit message. This description will be pushed to the public AOSP repository, so please follow our guidelines for writing changelist descriptions: 
+
+- Start with a one-line summary (60 characters max), followed by a blank line. This format is used by git and gerrit for various displays. 
+    
+        short description on first line
+        
+        more detailed description of your patch,
+        which is likely to take up multiple lines.
 
 - The description should focus on what issue it solves, and how it solves it. The second part is somewhat optional when implementing new features, though desirable.
 
-- The description should be self-contained. It should not rely on people having access to any other information.
+- Include a brief note of any assumptions or background information that may be important when another contributor works on this feature next year. 
 
-- The description should be reasonably descriptive. You've spent a few hours or a few days working on your change so you can spend 5 minutes writing a proper description. Maybe write it while you do a final compile before submitting.
+A unique change ID and your name and email as provided during `repo init` will be automatically added to your commit message. 
 
-## Using the Gerrit code-review tool ##
+## Upload to gerrit ##
 
-You can open Gerrit by visiting whatever URL is returned to you from the repo upload command, 
-or by visiting [https://review.android.com](https://review.source.android.com)
+Once you have committed your change to your personal history, upload it to gerrit with
 
-### Viewing the status of uploaded changes ###
+    $ repo upload
 
-To check the status of a change that you uploaded, open [Gerrit](https://review.source.android.com/mine), 
-sign in, and click MyChanges.
+If you have started multiple branches in the same repository, you will be prompted to select which one(s) to upload.
 
-### Reviewing a change ###
+After a successful upload, repo will provide you the URL of a new page on [r.android.com](http://review.source.android.com). Visit this link to view your patch on the review server, add comments, or request specific reviewers for your patch. 
+
+## Uploading a replacement patch ##
+
+Suppose a reviewer has looked at your patch and requested a small modification. You can amend your commit within git, which will result in a new patch on gerrit with the same change ID as the original.
+
+*Note that if you have made other commits since uploading this patch, you will need to manually move your git HEAD.*
+
+    $ git add -A
+    $ git commit --amend
+
+When you upload the amended patch, it will replace the original on gerrit and in your local git history.
+
+## Resolving sync conflicts ##
+
+If other patches are submitted to the source tree that conflict with yours, you will need to rebase your patch on top of the new HEAD of the source repository. The easy way to do this is to run
+
+    $ repo sync
+
+This command first fetches the updates from the source server, then attempts to automatically rebase your HEAD onto the new remote HEAD.
+
+If the automatic rebase is unsuccessful, you will have to perform a manual rebase.
+
+    $ git rebase master
+
+Using `git mergetool` may help you deal with the rebase conflict. Once you have successfully merged the conflicting files,
+
+    $ git rebase --continue
+
+After either automatic or manual rebase is complete, run `repo upload` to submit your rebased patch.
+
+## After a submission is approved ##
+
+After a submission makes it through the review and verification process, Gerrit automatically merges the change into the public repository. The change will now be visible in gitweb, and others users will be able to run `repo sync` to pull the update into their local client.
+
+# For reviewers and verifiers #
+
+## Reviewing a change ##
 
 If you are assigned to be the Approver for a change, you need to determine the following:
 
@@ -61,7 +130,7 @@
 
 If you approve of the change, mark it with LGTM ("Looks Good to Me") within Gerrit.
 
-### Verifying a change ###
+## Verifying a change ##
 
 If you are assigned to be the Verifier for a change, you need to do the following:
 
@@ -71,23 +140,7 @@
 
 - Within Gerrit use Publish Comments to mark the commit as "Verified" or "Fails," and add a message explaining what problems were identified.
 
-### Viewing diffs and comments ###
-
-To open the details of the change within Gerrit, click on the "Id number" or "Subject" of a change. To compare the established code with the updated code, click the file name under "Side-by-side diffs."
-
-### Adding comments ###
-
-Anyone in the community can use Gerrit to add inline comments to code submissions. A good comment will be relevant to the line or section of code to which it is attached in Gerrit. It might be a short and constructive suggestion about how a line of code could be improved, or it might be an explanation from the author about why the code makes sense the way it is.
-
-To add an inline comment, double-click the relevant line of the code and write your comment in the text box that opens. When you click Save, only you can see your comment.
-
-To publish your comments so that others using Gerrit will be able to see them, click the Publish Comments button. Your comments will be emailed to all relevant parties for this change, including the change owner, the patch set uploader (if different from the owner), and all current reviewers.
-
-### After a submission is approved ###
-
-After a submission makes it through the review and verification process, Gerrit automatically merges the change into the public repository. The change will now be visible in gitweb, and others users will be able to run `repo sync` to pull the update into their local client.
-
-### Downloading changes from Gerrit ###
+## Downloading changes from Gerrit ##
 
 A submission that has been verified and merged will be downloaded with the next `repo sync`. If you wish to download a specific change that has not yet been approved, run
 
@@ -97,24 +150,36 @@
 change number as listed in [Gerrit](https://review.source.android.com/). For more information, 
 see the [Repo reference](/source/using-repo.html).
 
-### How do I become a Verifier or Approver? ###
+## How do I become a Verifier or Approver? ##
 
 In short, contribute high-quality code to one or more of the Android projects.
 For details about the different roles in the Android Open Source community and
 who plays them, see [Project Roles](/source/roles.html).
 
+## Diffs and comments ##
+
+To open the details of the change within Gerrit, click on the "Id number" or "Subject" of a change. To compare the established code with the updated code, click the file name under "Side-by-side diffs."
+
+## Adding comments ##
+
+Anyone in the community can use Gerrit to add inline comments to code submissions. A good comment will be relevant to the line or section of code to which it is attached in Gerrit. It might be a short and constructive suggestion about how a line of code could be improved, or it might be an explanation from the author about why the code makes sense the way it is.
+
+To add an inline comment, double-click the relevant line of the code and write your comment in the text box that opens. When you click Save, only you can see your comment.
+
+To publish your comments so that others using Gerrit will be able to see them, click the Publish Comments button. Your comments will be emailed to all relevant parties for this change, including the change owner, the patch set uploader (if different from the owner), and all current reviewers.
+
 ## Using GitWeb to track patch histories ##
 
 To view snapshots of the files that are in the public Android repositories and view file histories, use the [Android instance of GitWeb](http://android.git.kernel.org/).
 
 <a name="upstream-projects"></a>
 
-## Upstream Projects ##
+# Upstream Projects #
 
 Android makes use of a number of other open-source projects, such as the Linux kernel and WebKit, as described in
 [Branches and Releases](/source/code-lines.html). For the upstream projects detailed below, changes should be made directly upstream. Such changes will be incorporated into the Android tree as part of the usual process of pulling these projects.
 
-### WebKit ###
+## WebKit ##
 
 All changes to the WebKit project at `external/webkit` should be made
 upstream at [webkit.org](http://www.webkit.org). The process begins by filing a WebKit bug. 
@@ -123,7 +188,7 @@
 attention once a proposed fix is added and tests are included. See
 [Contributing Code to WebKit](http://webkit.org/coding/contributing.html) for details.
 
-### V8 ###
+## V8 ##
 
 All changes to the V8 project at `external/v8` should be submitted upstream at
 [code.google.com/p/v8](http://code.google.com/p/v8). See [Contributing to V8](http://code.google.com/p/v8/wiki/Contributing)
diff --git a/src/source/using-eclipse.md b/src/source/using-eclipse.md
index 21f5618..5af32a8 100644
--- a/src/source/using-eclipse.md
+++ b/src/source/using-eclipse.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Using Eclipse #
 
 This document will help you set up the Eclipse IDE for Android platform development.
diff --git a/src/source/using-repo.md b/src/source/using-repo.md
index d7bcb92..f343639 100644
--- a/src/source/using-repo.md
+++ b/src/source/using-repo.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Repo command reference #
 
 Repo usage takes the following form: 
diff --git a/src/source/version-control.md b/src/source/version-control.md
index 5a4a2a4..623e30f 100644
--- a/src/source/version-control.md
+++ b/src/source/version-control.md
@@ -1,3 +1,19 @@
+<!--
+   Copyright 2010 The Android Open Source Project 
+
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
 # Version Control with Repo and Git #
 
 To work with the Android code, you will need to use both Git and Repo.  In most situations, you can use Git instead of Repo, or mix Repo and Git commands to form complex commands. Using Repo for basic across-network operations will make your work much simpler, however.
diff --git a/templates/footer b/templates/footer
index f41abcd..9e4f297 100644
--- a/templates/footer
+++ b/templates/footer
@@ -16,12 +16,3 @@
   </div>
 </div> 
 
-<!-- script type="text/javascript">
-  init(); /* initialize android-developer-docs.js */
-  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-  document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("UA-5831155-1");
-  pageTracker._trackPageview();
-</script -->
diff --git a/templates/header b/templates/header
index 6324c6f..823053f 100644
--- a/templates/header
+++ b/templates/header
@@ -1,6 +1,3 @@
-<!-- looks like:
-Home | Source | Porting | Compatibility | Community | About -->
-
 <a name="top"/>
 
 <div id="header">
@@ -26,3 +23,4 @@
     </div>
   </div>
 </div>
+
diff --git a/templates/includes b/templates/includes
index 686f609..823e61e 100644
--- a/templates/includes
+++ b/templates/includes
@@ -4,17 +4,5 @@
   <title>$title | Android Open Source</title>
 
   <link href="/assets/main.css" rel="stylesheet" type="text/css" />
-
-<!--  <noscript>
-    <style type="text/css">
-      body{overflow:auto;}
-      #body-content{position:relative; top:0;}
-      #doc-content{overflow:visible;border-left:3px solid #666;}
-      #side-nav{padding:0;}
-      #side-nav .toggle-list ul {display:block;}
-      #resize-packages-nav{border-bottom:3px solid #666;}
-    </style>
-  </noscript> -->
 </head>
 
-
diff --git a/templates/main b/templates/main
index 8698c79..dad5c21 100644
--- a/templates/main
+++ b/templates/main
@@ -2,4 +2,3 @@
   $main
 </div>
 
-
diff --git a/templates/sidebar b/templates/sidebar
index de0c028..a8c7b55 100644
--- a/templates/sidebar
+++ b/templates/sidebar
@@ -2,4 +2,3 @@
   $sidebar
 </div>
 
-
