diff --git a/llvm/docs/DeveloperPolicy.html b/llvm/docs/DeveloperPolicy.html
index 8936d57..f3b2c70 100644
--- a/llvm/docs/DeveloperPolicy.html
+++ b/llvm/docs/DeveloperPolicy.html
@@ -12,14 +12,8 @@
 <table class="layout"><tr class="layout"><td class="layout">
 <h2>Contents</h2>
 <ol>
-  <li><a href="#overview">Overview</a></li>
+  <li><a href="#introduction">Introduction</a></li>
   <li><a href="#terms">Terminology</a></li>
-  <li><a href="#candl">Copyright and License</a>
-  <ol>
-    <li><a href="#copyright">Copyright</a></li>
-    <li><a href="#license">License</a></li>
-    <li><a href="#devagree">Developer Agreements</a></li>
-  </ol></li>
   <li><a href="#general">General Policies</a>
   <ol>
     <li><a href="#informed">Stay Informed</a> </li>
@@ -38,6 +32,12 @@
     <li><a href="#c_access">Obtaining Commit Access</a></li>
     <li><a href="#c_new">New Committers</a></li>
   </ol></li>
+  <li><a href="#candl">Copyright and License</a>
+  <ol>
+    <li><a href="#copyright">Copyright</a></li>
+    <li><a href="#license">License</a></li>
+    <li><a href="#devagree">Developer Agreements</a></li>
+  </ol></li>
 </ol>
 <div class="doc_author">Written by LLVM Oversight Team</div>
 </td><td class="layout">
@@ -89,74 +89,6 @@
 </td></tr></table>
 
 <!--=========================================================================-->
-<div class="doc_section"><a name="candl">Copyright and License</a></div>
-<!--=========================================================================-->
-<div class="doc_text">
-  <p>We address here the issues of copyright and license for the LLVM project.
-  A copyright is literally the "right to copy". It is a set of exclusive rights
-  granted to a party regulating the particular expression of information.
-  In this case, the information is LLVM.  A license is something granted by a
-  copyright holder to other parties that controls the use of the information
-  by them. Currently, the University of Illinois is the LLVM copyright holder 
-  and the terms of its license to LLVM users and developers is the 
-  University of Illinois Open Source License (see LICENSE.txt).</p>
-</div>
-<!-- _______________________________________________________________________ -->
-<div class="doc_subsection"><a name="copyright">Copyright</a></div>
-<div class="doc_text">
-  <p>The LLVM project believes in correct attribution of contributions to 
-  their contributors. Developers should, therefore, place their name at the 
-  top of any source file they originate and list their contributions in the
-  CREDITS.TXT file. Furthermore, correct attribution of submitted patches 
-  should be made in the commit comments.</p>
-  <p>However, for consistency and ease of management, the project requires the 
-  copyright for all LLVM software to be held by a single copyright holder.  
-  Although UIUC may assign the copyright of the software to another entity, 
-  the intent for the project is to always have a single entity hold the copy 
-  rights to LLVM at any given time.
-  <p>Having multiple copyright holders for various portions of LLVM is
-  problematic in the management of the software. Having a single copyright 
-  holder is in the best interests of all developers and users as it greatly 
-  reduces the managerial burden for any kind of administrative or technical 
-  decisions about LLVM.</p>
-</div>
-<!-- _______________________________________________________________________ -->
-<div class="doc_subsection"><a name="license">License</a></div>
-<div class="doc_text">
-  <p>LLVM licensing decisions will be made by the LLVM Oversight Group. Any
-  issues, comments or suggestions with the licensing should be sent to 
-  <a href="mailto:oversight@llvm.org">oversight@llvm.org</a>.</p>
-  <p>The LLVM Oversight Group intends to keep LLVM perpetually open source 
-  and to use liberal open source licenses. The current license is the 
-  University of Illinois Open Source License (see LICENSE.TXT), which boils
-  down to this:</p>
-  <ul>
-    <li>You can freely distribute LLVM.</li>
-    <li>You must retain the copyright notice if you redistribute.</li>
-    <li>Binaries derived from LLVM must reproduce the copyright notice.</li>
-    <li>You can't use our names to promote your LLVM derived products.</li>
-    <li>There's no warranty on LLVM at all.</li>
-  </ul>
-  <p>We believe this fosters the widest adoption of LLVM because it allows 
-  commercial products to be derived from LLVM with few restrictions and
-  without a requirement for making any derived works also open source. The 
-  intent of the license is to let people use LLVM freely with only the
-  obligation to be honest about where it came from.</p>
-</div>
-<!-- _______________________________________________________________________ -->
-<div class="doc_subsection"><a name="devagree">Developer Agreements</a></div>
-<div class="doc_text">
-  <p>With regards to the LLVM copyright and licensing, developers agree to:</p>
-  <ul>
-    <li>give up their copy rights to any contribution made so that the entire 
-    software base can be managed by a single copyright holder.</li>
-    <li>allow their contribution(s) to be licensed as open source by the then
-    current or subsequent license chosen by the LLVM Oversight Group.</li>
-    <li>not make LLVM available under any other licensing agreement.</li>
-  </ul>
-</div>
-
-<!--=========================================================================-->
 <div class="doc_section"><a name="general">General Policies</a></div>
 <!--=========================================================================-->
 <div class="doc_text">
@@ -173,18 +105,19 @@
   anything more than just casual work on LLVM, it is highly suggested that you 
   also subscribe to the llvm-commits list and pay attention to changes being 
   made by others.</p>
-  <p>Active developers must register an email account with bugzilla 
-  (<a href="http://llvm.org/bugs/">http://llvm.org/bugs/</a>) and preferably
-  subscribe to the llvm-bugs email list to keep track of bugs occurring in
-  LLVM.</p>
+  <p>We recommend that active developers register an email account with 
+  <a href="http://llvm.org/bugs/">LLVM Bugzilla</a> and preferably subscribe to
+  the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs">llvm-bugs</a>
+  email list to keep track of bugs and enhancements occurring in LLVM.</p>
 </div>
 
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsection"> <a name="newwork">Starting New Work</a></div>
 <div class="doc_text">
-  <p>When a developer begins new work with the aim of contributing it back to
-  LLVM, s/he must inform the community with an email to llvm-dev email list, 
-  to the extent possible. The reason for this is to:
+  <p>When a developer begins a major new project with the aim of contributing 
+  it back to LLVM, s/he should inform the community with an email to 
+  the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvm-dev</a> 
+  email list, to the extent possible. The reason for this is to:
   <ul>
     <li>keep the community informed about future changes to LLVM, </li>
     <li>avoid duplication of effort by having multiple parties working on the
@@ -192,6 +125,10 @@
     <li>ensure that any issues around the proposed work are discussed and
     resolved before any significant work is accomplished.</li>
   </ul>
+  <p>The design of LLVM is carefully controlled to ensure that all the pieces
+  fit together well. If you plan to make a major change to the way LLVM works or
+  a major new extension, it is a good idea to get consensus with the development
+  community before you start working on it.</p>
 </div>
 
 <!-- _______________________________________________________________________ -->
@@ -409,6 +346,100 @@
 </div>
 
 <!--=========================================================================-->
+<div class="doc_section"><a name="candl">Copyright and License</a></div>
+<!--=========================================================================-->
+<div class="doc_text">
+  <p>We address here the issues of copyright and license for the LLVM project.
+  The object of the copyright and license is the LLVM source and documentation.
+  Currently, the University of Illinois is the LLVM copyright holder and the 
+  terms of its license to LLVM users and developers is the 
+  <a href="http://www.opensource.org/licenses/UoI-NCSA.php">University of 
+    Illinois/NCSA Open Source License</a>.
+</div>
+
+<div class="doc_notes">
+  <p>NOTE: This section deals with legal matters but does not provide legal
+  advice. It is intended only as a general guideline.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsection"><a name="copyright">Attribution</a></div>
+<div class="doc_text">
+  <p>The LLVM project believes in correct attribution of contributions to 
+  their contributors, as follows:</p>
+  <ol>
+    <li>Developers who originate new files in LLVM should place their name at
+    the top of the file per the 
+    <a href="CodingStandards.html">Coding Standards</a>.</li>
+    <li>There should be only one name at the top of the file and it should be
+    the person who created the file.</li>
+    <li>Placing your name in the file does not imply copyright but does
+    correctly attribute the file to its author.</li>
+    <li>Developers should be aware that after some time has passed, the name at
+    the top of a file may become meaningless as maintenance/ownership of files
+    changes.</li>
+    <li>Developers should submit or commit patches to the 
+    <a href="http://llvm.org/cvsweb/cvsweb.cgi/llvm/CREDITS.TXT?rev=1.67&content-type=text/x-cvsweb-markup">CREDITS.txt</a> 
+    file to summarize their contributions.</li>
+    <li>Commit comments should contain correct attribution of the person who s
+    submitted the patch if that person is not the committer (i.e. when a 
+    developer with commit privileges commits a patch for someone else).</li>
+  </ol>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsection"><a name="copyright">Copyright</a></div>
+<div class="doc_text">
+  <p>
+  <p>However, for consistency and ease of management, the project requires the 
+  copyright for all LLVM software to be held by a single copyright holder.  
+  Although UIUC may assign the copyright of the software to another entity, 
+  the intent for the project is to always have a single entity hold the copy 
+  rights to LLVM at any given time.
+  <p>Having multiple copyright holders for various portions of LLVM is
+  problematic in the management of the software. Having a single copyright 
+  holder is in the best interests of all developers and users as it greatly 
+  reduces the managerial burden for any kind of administrative or technical 
+  decisions about LLVM.</p>
+</div>
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsection"><a name="license">License</a></div>
+<div class="doc_text">
+  <p>LLVM licensing decisions will be made by the LLVM Oversight Group. Any
+  issues, comments or suggestions with the licensing should be sent to 
+  <a href="mailto:oversight@llvm.org">oversight@llvm.org</a>.</p>
+  <p>The LLVM Oversight Group intends to keep LLVM perpetually open source 
+  and to use liberal open source licenses. The current license is the 
+  University of Illinois Open Source License (see LICENSE.TXT), which boils
+  down to this:</p>
+  <ul>
+    <li>You can freely distribute LLVM.</li>
+    <li>You must retain the copyright notice if you redistribute LLVM.</li>
+    <li>Binaries derived from LLVM must reproduce the copyright notice.</li>
+    <li>You can't use our names to promote your LLVM derived products.</li>
+    <li>There's no warranty on LLVM at all.</li>
+  </ul>
+  <p>We believe this fosters the widest adoption of LLVM because it allows 
+  commercial products to be derived from LLVM with few restrictions and
+  without a requirement for making any derived works also open source. We
+  suggest that you read the 
+  <a href="http://www.opensource.org/licenses/UoI-NCSA.php">License</a> if
+  further clarification is needed.</p>
+</div>
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsection"><a name="devagree">Developer Agreements</a></div>
+<div class="doc_text">
+  <p>With regards to the LLVM copyright and licensing, developers agree to:</p>
+  <ul>
+    <li>assign their copy rights to UIUC for any contribution made so that 
+    the entire software base can be managed by a single copyright holder.</li>
+    <li>allow their contribution(s) to be licensed as open source by the then
+    current license chosen by the LLVM Oversight Group.</li>
+    <li>not make LLVM available under any other licensing agreement.</li>
+  </ul>
+</div>
+
+<!--=========================================================================-->
 <div class="doc_section"><a name="notes">Policy Notes</a></div>
 <!--=========================================================================-->
 <div class="doc_text">
