diff --git a/doc/released/README-169.html b/doc/released/README-169.html
new file mode 100644
index 0000000..7e1e5d9
--- /dev/null
+++ b/doc/released/README-169.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html> <head>
+<title>AspectJ 1.6.9 Readme</title>
+<style type="text/css">
+<!--
+  P   { margin-left:  20px; }
+  PRE { margin-left:  20px; }
+  LI  { margin-left:  20px; }
+  H4  { margin-left:  20px; }
+  H3  { margin-left:  10px; }
+-->
+</style>
+</head>
+
+<body>
+<div align="right"><small>
+&copy; Copyright 2010 Contributors.
+All rights reserved.
+</small></div>
+
+<h1>AspectJ 1.6.9 Readme</h1>
+
+<h2>Features of 1.6.9 milestone 1</h2>
+
+<h3>Message inserts for declare warning/error messages</h3>
+
+<p>It is now possible to use joinpoint context in the messages attached to declare warning and declare error constructs.  Some
+examples:</p>
+
+<code><pre>
+declare warning: execution(* A.m(..)): "joinpoint is {joinpoint}";
+declare warning: execution(* A.m(..)): "joinpoint kind is '{joinpoint.kind}'";
+declare warning: get(int *) && within(A): "joinpoint signature is {joinpoint.signature}";
+declare warning: execution(* A.m(..)): "joinpoint declaring type is {joinpoint.signature.declaringType}";
+declare warning: execution(* A.m(..)): "signature name for method is {joinpoint.signature.name}";
+declare warning: execution(* A.m(..)): "joinpoint location is {joinpoint.sourcelocation.sourcefile}:{joinpoint.sourcelocation.line}";
+declare warning: execution(* A.m(..)): "joinpoint line is '{joinpoint.sourcelocation.line}'";
+
+declare warning: get(int *): "warning is from aspect {advice.aspecttype}";
+declare warning: execution(* A.m(..)): "warning sourcelocation is {advice.sourcelocation.sourcefile}:{advice.sourcelocation.line}";
+</pre></code>
+
+<p>The syntax is to enclose the relevant key within curly brackets within the message.  Please raise an enhancement request 
+if you need other keys - the set supported so far are all those shown in the example above.</p>
+
+
+<h3>declare warning/error for type patterns</h3>
+
+<p>It is now possible to use a type pattern with declare warning and declare error.  For example:</p>
+
+<code><pre>
+declare warning: I+ && !hasfield(int i): "Implementations of I are expected to have a int field called i";
+</pre></code>
+
+<h3>Type category type patterns</h3>
+
+<p>This is the ability to narrow the types of interest so that interfaces can be ignored, or inner
+types, or classes or aspects.  There is now a new is() construct that enables this:</p>
+
+<code><pre>
+execution(* (!is(InnerType)).m(..)) {}
+!within(* && is(InnerType)) {}
+</pre></code>
+
+<p>Options for use in is() are: ClassType, AspectType, InterfaceType, InnerType, AnonymousType, EnumType, AnonymousType.</p>
+<p>Note: It is important to understand that "!within(is(InnerType))" and "within(!is(InnerType))" are not the same.  The latter one is
+unlikely to be what you want to use.  For example here:
+<code><pre>
+class Boo {
+  void foo() {}
+  class Bar {
+    void foo() {}
+  }
+}
+</pre></code>
+<p>Bar.foo() will match within(!is(InnerType)) because within considers all surrounding types (so although Bar doesn't match the
+pattern, the surrounding Boo will match it).  Bar.foo() will not match !within(is(InnerType)) because Bar will match the pattern
+and then the result of that match will be negated.</p>
+
+<h3>Intertype fields preserve visibility and name</h3>
+
+<p>Some users always expect this:</p>
+
+<code><pre>
+class C {
+}
+
+aspect X {
+  private int C.someField;
+}
+</pre></code>
+
+<p>To cause a private field called 'someField' to be added to C.  This is conceptually what happens during compilation but if any
+user then later attempts to access someField via reflection or runs a javap against the class file, they will see that isn't
+what happens in practice.  A public member is added with a mangled name.  For code attempting to access someField built with ajc,
+the visibility of the declaration will, of course, be respected.  But for frameworks accessing the code later (typically through
+reflection), it can cause confusion.  With AspectJ 1.6.9 the name and visibility are now preserved.  Compile time semantics
+remain the same, it is only the weaving process that has changed to produce slightly different output.</p>
+<p>Here is the output of javap when that is built with 1.6.8:</p>
+<code><pre>
+class C extends java.lang.Object{
+    public int ajc$interField$X$someField;
+    C();
+}
+</pre></code>
+<p>Here is the output of javap when that is built with 1.6.9:</p>
+<code><pre>
+class C extends java.lang.Object{
+    private int someField;
+    C();
+    public static int ajc$get$someField(C);
+    public static void ajc$set$someField(C, int);
+}
+</pre></code>
+<p>The name 'someField' is preserved.  The visibility is also preserved but because of that we also need to generate some accessors
+to get at the field.</p> 
+
+<h3>AspectJ snapshots in a maven repo</h3>
+
+<p>To ease how AspectJ development builds can be consumed, they are now placed into a maven repo.  When a new version of AspectJ
+is put into AJDT it is also put into the maven.springframework.org repo.  
+The maven compatible repo is <code>maven.springframework.org/snapshot/org/aspectj</code> - and if you browse to it you will 
+see it currently contains 1.6.9 dev builds under the name 1.6.9.BUILD-SNAPSHOT.
+
+The repo is added with this magic:</p>
+
+<code><pre>
+&lt;repository&gt;
+    &lt;id&gt;maven.springframework.org&lt;/id&gt;
+    &lt;name&gt;SpringSource snapshots&lt;/name&gt;
+    &lt;url&gt;http://maven.springframework.org/snapshot&lt;/url&gt;
+&lt;/repository&gt;
+</pre></code>
+<p>
+and then the version to depend upon is:
+
+1.6.9.BUILD-SNAPSHOT</p>
+
+ <hr>
+
+<h4>
+<!-- ============================== -->  
+</body>
+</html>
diff --git a/downloads.php b/downloads.php
index 3f4b090..2e16a00 100644
--- a/downloads.php
+++ b/downloads.php
@@ -177,6 +177,18 @@
   <h3 id="milestones">AspectJ 6</h3>
   <ul>
     <li>
+    <b>AspectJ 1.6.9, Released 16th April, 2010</b>
+    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+    <tr>
+      <td><ul>AspectJ compiler, browser, documentation tool, Ant tasks, and documentation.</ul></td>
+      <td width="30%" align="right">
+          <a href="http://www.eclipse.org/downloads/download.php?file=/tools/aspectj/aspectj-1.6.9M1.jar">aspectj-1.6.9M1.jar</a> (~12M)<br>
+          <a href="http://www.eclipse.org/downloads/download.php?file=/tools/aspectj/aspectj-1.6.9M1-src.jar">aspectj-1.6.9M1-src.jar</a>
+      </td>
+    </tr>
+    </table>
+    </li>
+    <li>
     <b>AspectJ 1.6.8, Released 8th January, 2010</b>
     <table border="0" cellspacing="0" cellpadding="0" width="100%">
     <tr>
diff --git a/index.php b/index.php
index bd8d50b..2287153 100644
--- a/index.php
+++ b/index.php
@@ -88,6 +88,13 @@
 			<h3>News and Events</h3>
    <ul>
    
+   <li>AspectJ 1.6.9 milestone 1 is now <a href="downloads.php">available for download</a>.
+   Please try it out!  See the <a href="doc/released/README-169.html">readme</a>
+   for more information.  There are several new features in this release, please
+   see the readme for more info.
+   <br><div align="right"><span class="dates"><i>posted 16-Apr-10</i></span></div>
+   </li>
+
    <li>AspectJ 1.6.8 is now <a href="downloads.php">available for download</a>.
    Please try it out!  See the <a href="doc/released/README-168.html">readme</a>
    for more information.  There are two fixes in 1.6.8 beyond what was in 1.6.7, 
