diff --git a/ECA.html b/ECA.html
index 6ada70d..f9da440 100644
--- a/ECA.html
+++ b/ECA.html
@@ -1,125 +1,123 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-  <title>Eclipse Contributor Agreement</title>
-</head>
-<body lang="EN-US">
-  <div id="text1">
-    <h1>Eclipse Contributor Agreement</h1>
-    <p>Version 2.0.0&nbsp;&nbsp;&nbsp;August 22, 2016</p>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+    <title>Eclipse Contributor Agreement</title>
+  </head>
+  <body lang="EN-US">
+    <div id="text1">
+      <h1>Eclipse Contributor Agreement</h1>
 
-    <p id="reference">
-      <strong>This is a reference copy of the terms of the Eclipse Contributor Agreement. 
-      To actually complete and submit an ECA, please go to the <a href="https://accounts.eclipse.org/user/eca">ECA form</a>.</strong>
-    </p>
+      <p>Version 3.0.0&nbsp;&nbsp;&nbsp;October 22, 2018</p>
 
-    <p>
-      Thank you for your interest in one or more projects managed by the Eclipse Foundation, Inc. 
-      (&quot;Eclipse Foundation&quot;). In order for You (as defined below) to make intellectual 
-      property Contributions (as defined below) now or in the future to Eclipse Foundation projects, 
-      You must agree to this Eclipse Contributor Agreement (&quot;ECA&quot;). If You have any 
-      questions about this agreement, licensing, or anything related to intellectual property at the 
-      Eclipse Foundation, please send an email to <a href="mailto:license@eclipse.org">license@eclipse.org</a>.
-    </p>
+      <p id="reference">
+        <strong>This is a reference copy of the terms of the Eclipse Contributor Agreement. To actually complete 
+        and submit an ECA, please go to the <a href="https://accounts.eclipse.org/user/eca">ECA form</a>.</strong>
+      </p>
 
-    <p>
-      Please read this ECA carefully before accepting its terms. By accepting the ECA, You are agreeing 
-      to be bound by its terms. If You want to accept this ECA, complete the form completely, print a 
-      copy for Your records, and when ready, press the &ldquo;Accept&rdquo; button at the end of this form.
-    </p>
+      <p>Thank you for your interest in one or more projects managed by the Eclipse Foundation, Inc.
+      (&quot;Eclipse Foundation&quot;). In order for You (as defined below) to make intellectual property 
+      Contributions (as defined below) now or in the future to Eclipse Foundation projects, 
+      You must agree to this Eclipse Contributor Agreement (&quot;ECA&quot;). 
+      If You have any questions about this agreement, licensing, or anything related to 
+      intellectual property at the Eclipse Foundation, please send an email to 
+      <a href="mailto:license@eclipse.org">license@eclipse.org</a>.</p>
 
-    <p>
-      As used in this ECA: (i) &ldquo;You&quot; (or &quot;Your&quot;) shall mean the entity that is
-      making this Agreement with the Eclipse Foundation; (ii)&quot;Contribution&quot; shall mean any
-      original work of authorship, including any modifications or additions to an existing work, that
-      is submitted by You to the Eclipse Foundation for inclusion in, or documentation of, any of the 
-      Eclipse Foundation projects; and (iii) &ldquo;Submit&rdquo; (or &ldquo;Submitted&rdquo;) means 
-      any form of communication sent to the Eclipse Foundation (e.g. the content You post on electronic 
-      mailing lists, forums, content management systems, source code control systems, code review systems, 
-      issue tracking systems, etc. that are used by the Eclipse Foundation).
-    </p>
+      <p>Please read this ECA carefully before accepting its terms. By accepting the ECA, You are agreeing to 
+      be bound by its terms. If You want to accept this ECA, complete the form completely, print a copy for 
+      Your records, and when ready, press the &ldquo;Accept&rdquo; button at the end of this form.</p>
 
-    <p>
-      This agreement applies to all Contributions You Submit.
-    </p>
+      <p>As used in this ECA: (i) &ldquo;You&quot; (or &quot;Your&quot;) shall mean the entity that
+      is making this Agreement with the Eclipse Foundation; (ii)&quot;Contribution&quot; shall mean
+      any original work of authorship, including any modifications or additions to an existing work,
+      that is submitted by You to the Eclipse Foundation for inclusion in, or documentation of, any of
+      the Eclipse Foundation projects; and (iii) &ldquo;Submit&rdquo; (or &ldquo;Submitted&rdquo;) means
+      any form of communication sent to the Eclipse Foundation (e.g. the content You post on electronic
+      mailing lists, forums, content management systems, source code control systems, code review systems,
+      issue tracking systems, etc. that are used by the Eclipse Foundation).</p>
 
-    <p>
-      This ECA, and the license(s) associated with the particular Eclipse Foundation projects 
-      You are contributing to, provides a license to Your Contributions to the Eclipse Foundation 
-      and downstream consumers, but You still own Your Contributions, and except for the licenses 
-      provided for in this ECA, You reserve all right, title and interest in Your Contributions.
-    </p>
+      <p>This agreement applies to all Contributions You Submit.</p>
 
-    <p>
-      The Eclipse Foundation requires that each Contribution You Submit now or in the future to comply 
-      with the following commitments documented in the Developer Certificate of Origin (DCO). 
-      To confirm that You have read and agreed to each, please click on the box beside each one.
-    </p>
-  </div>
-  <div id="text2">
-    <h2>Developer Certificate of Origin</h2>
-    <p>Version 1.1</p>
-  
-    <p>
-      Copyright (C) 2004, 2006 The Linux Foundation and its contributors.<br/> 
-      660 York Street, Suite 102,<br/> 
-      San Francisco, CA 94110 USA<br/> 
-    </p>
-  
-    <p>
-      Everyone is permitted to copy and distribute verbatim copies of this license document, 
-      but changing it is not allowed.
-    </p>
-  
-    <h3>Developer's Certificate of Origin 1.1</h3>
-  
-    <p>By making a contribution to this project, I certify that: </p>
-  </div>
+      <p>This ECA, and the license(s) associated with the particular Eclipse Foundation projects You 
+      are contributing to, provides a license to Your Contributions to the Eclipse Foundation and 
+      downstream consumers, but You still own Your Contributions, and except for the licenses provided 
+      for in this ECA, You reserve all right, title and interest in Your Contributions. 
+      In addition to the above, You grant a non- exclusive, worldwide, perpetual, royalty-free 
+      license of all necessary rights under Your copyright in and to Your Contributions (the &ldquo;Specification 
+      Grant&rdquo;): (a) for the Eclipse Foundation (and its contributors solely as a part of foundation projects) 
+      to create, reproduce, prepare derivative works of, publicly display, publicly perform, distribute and 
+      sublicense specifications subject to the terms of the then-current Eclipse Foundation Specification 
+      License, based on or derived from the Specification Content (as defined below) and (b) for recipients of 
+      such specifications to create, reproduce, and distribute implementations thereof based on the portion of 
+      Your Contributions or material derived from them in the specifications, subject to the terms of 
+      the then-current Eclipse Foundation Specification License.</p>
 
-  <ol style="list-style-type: lower-alpha;">
+      <p>&ldquo;Specification Content&rdquo; is the collection of interface definitions for the Application 
+      or User interfaces (&ldquo;Interfaces&rdquo;) provided by the work to which Your Contribution was made,
+      descriptions of the structure and semantic behavior of those Interfaces, and data formats and protocols
+      associated with those Interfaces, all of which as are reasonably necessary to enable the development of 
+      independent implementations of those Interfaces. For the sake of clarity, Specification Content does 
+      not include implementation detail of how the Eclipse project code or Your Contribution implements the 
+      Interfaces in the Specification and the Specification Grant provide above would not cover such additional 
+      material.</p>
 
-    <li id="question1">
-      The contribution was created in whole or in part by me and I have the right to submit
-      it under the open source license indicated in the file or
-    </li>
-
-    <li id="question2">
-      The contribution is based upon previous work that, to the best of my knowledge, is
-      covered under an appropriate open source license and I have the right under that
-      license to submit that work with modifications, whether created in whole or in part by
-      me, under the same open source license (unless I am permitted to submit under a
-      different license), as indicated in the file or 
-    </li>
-
-    <li id="question3">
-      The contribution was provided directly to me by some other person who certified (a),
-      (b) or (c) and I have not modified it.
-    </li>
-
-    <li id="question4">
-      I understand and agree that this project and the contribution are public and that a
-      record of the contribution (including all personal information I submit with it, including
-      my signoff) is maintained indefinitely and may be redistributed consistent with this
-      project or the open source license(s) involved.
-    </li>
-  </ol>
-  <div id="text3">
-    <p>
-      You will promptly notify the Eclipse Foundation if You become aware of any facts or circumstances
-      that would make these commitments inaccurate in any way. To do so, please send an email to 
-      <a href="mailto:license@eclipse.org">license@eclipse.org</a>
-    </p>
-  
-    <p>
-      The Eclipse Foundation takes intellectual property very seriously, so we are going to ask 
-      You to re&shy;-confirm this ECA every three years.
-    </p> 
-  </div>
-  <div id="text4">
-    <p>
-      You represent that the information provided below is accurate.
-    </p> 
-  </div>
-</body>
+      <p>The Eclipse Foundation requires that each Contribution You Submit now or in the future to comply with 
+      the following commitments documented in the Developer Certificate of Origin (DCO). To confirm that 
+      You have read and agreed to each, please click on the box beside each one.</p>
+    </div>
+    <div id="text2">
+      <h2>Developer Certificate of Origin</h2>
+      <p>Version 1.1</p>
+      <p>
+        Copyright (C) 2004, 2006 The Linux Foundation and its contributors.<br/> 
+        660 York Street, Suite 102,<br/> 
+        San Francisco, CA 94110 USA<br/> 
+      </p>
+      <p>
+        Everyone is permitted to copy and distribute verbatim copies of this license document, 
+        but changing it is not allowed.
+      </p>
+      <h3>Developer's Certificate of Origin 1.1</h3>
+      <p>By making a contribution to this project, I certify that: </p>
+    </div>
+    <ol style="list-style-type: lower-alpha;">
+      <li id="question1">
+        The contribution was created in whole or in part by me and I have the right to submit
+        it under the open source license indicated in the file or
+      </li>
+      <li id="question2">
+        The contribution is based upon previous work that, to the best of my knowledge, is
+        covered under an appropriate open source license and I have the right under that
+        license to submit that work with modifications, whether created in whole or in part by
+        me, under the same open source license (unless I am permitted to submit under a
+        different license), as indicated in the file or 
+      </li>
+      <li id="question3">
+        The contribution was provided directly to me by some other person who certified (a),
+        (b) or (c) and I have not modified it.
+      </li>
+      <li id="question4">
+        I understand and agree that this project and the contribution are public and that a
+        record of the contribution (including all personal information I submit with it, including
+        my signoff) is maintained indefinitely and may be redistributed consistent with this
+        project or the open source license(s) involved.
+      </li>
+    </ol>
+    <div id="text3">
+      <p>
+        You will promptly notify the Eclipse Foundation if You become aware of any facts or circumstances
+        that would make these commitments inaccurate in any way. To do so, please send an email to 
+        <a href="mailto:license@eclipse.org">license@eclipse.org</a>
+      </p>
+      <p>
+        The Eclipse Foundation takes intellectual property very seriously, so we are going to ask 
+        You to re&shy;-confirm this ECA every three years.
+      </p>
+    </div>
+    <div id="text4">
+      <p>
+        You represent that the information provided below is accurate.
+      </p>
+    </div>
+  </body>
 </html>
\ No newline at end of file
