diff --git a/whats-new/0.1M6/libra-news-0.1M6.html b/whats-new/0.1M6/libra-news-0.1M6.html
deleted file mode 100644
index 01ed2fe..0000000
--- a/whats-new/0.1M6/libra-news-0.1M6.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!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-Language" content="en-us" />
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<title>Eclipse &quot;New and Noteworthy&quot; Template</title>
-</head>
-<body>
-<h1>Eclipse &quot;New and Noteworthy&quot; Template</h1>
-<p>Last revised October 29, 2007</p>
-
-<p>This is the template for the &quot;New and Noteworthy&quot; document that
-  accompanies each Eclipse project milestone build.</p>
-<p>Note: This template document is XHTML 1.0 Transitional. Please use the W3C <a href="http://validator.w3.org/#validate_by_input">XHTML
-    Markup Validation Service</a> to check your document's markup before submitting.
-    This will detect screwed up HTML tags, images without an &quot;alt&quot;
-  attrribute, and other tedious little details. </p>
-<table border="0" width="80%" cellpadding="10" cellspacing="0">
-  <tr>
-
-    <td colspan="2"><hr />
-      <h2>OSGi Bundle Facet</h2>
-      <hr /></td>
-  </tr>
-  <tr id="itemname">
-    <td width="30%" valign="top" align="left"><b>Item title, in bold, no trailing
-        punctuation, with unique id attribute on &lt;tr&gt; </b></td>
-    <td width="70%" valign="top">A blurb pitched to the Eclipse community
-        (not just to members of the Eclipse Platform development team). Tell
-        end users about changes they'll see at the UI. Tell component writers
-        about changes they'll see at the client- and server-side APIs. Try to
-        generate some excitement; save the boring details for the manual. The
-        description should be complete sentences, with trailing punctuation.
-        Stick to the default font and size.
-      <p>If a small image sheds light, place it below the description, in a separate
-        paragraph. Regular screen snapshots should be done on Windows XP. Crop
-        out any extraneous stuff to focus the reader's attention on your new
-        feature. <span style="background-color: #FFFF00">The image should be
-        no more than 466 pixels wide and in PNG-24 format</span> (as opposed
-        to GIF, TIF, BMP, or JPG).</p>
-
-      <p>Microsoft Paint actually saves to PNG on Windows XP and can easily be
-        used to crop and save screenshots:</p>
-      <ul>
-        <li>Arrange the windows for the shot</li>
-        <li>Use the Print Screen key (or Alt+Print Screen) to capture the screen</li>
-        <li>Open Paint (under All Programs &gt; Accessories)</li>
-        <li>Ctrl+V to paste</li>
-
-        <li>Select the area you want to keep</li>
-        <li>Ctrl+C to copy it</li>
-        <li>Ctrl+N to create a new canvas (ok to discard old one)</li>
-        <li>Ctrl+V to paste selected portion</li>
-        <li>Save As PNG</li>
-      </ul>
-
-      <p>Name the file is a way that is appropriate and specific to the item
-        (e.g., key-bindings.png, rather than something generic like image.png).
-        Use all lowercase letters in the image file name, including the &quot;.png&quot; 
-        file extension. As a separator, use hyphen &quot;-&quot; rather than
-        underscore 
-        &quot;_&quot;. </p>
-      <p>Put all the images in a sibling directory named &quot;images&quot;.
-        This gives HTML like &lt;img src=&quot;images/foo.png&quot; alt=&quot;The
-        Foo View&quot; /&gt;. Include a suitable alt property (which is mandatory
-        in XHTML 1.0). Do not embed the width and height of the image.</p>
-
-      <p>The images should be left justified (as opposed to centered). </p>
-      <p>Use the W3C <a href="http://validator.w3.org/#validate_by_input">XHTML
-          Markup Validation Service</a> to check your document's markup before
-          submitting.</p></td>
-  </tr>
-  <tr>
-    <td colspan="2"><hr />
-    </td>
-
-  </tr>
-  <tr id="itemname2">
-    <td width="30%" valign="top" align="left"><b>Another item</b></td>
-    <td width="70%" valign="top">Another blurb</td>
-  </tr>
-  <tr>
-    <td colspan="2"><hr />
-    </td>
-
-  </tr>
-  <tr id="itemname3">
-    <td width="30%" valign="top" align="left"><b>Another item</b></td>
-    <td width="70%" valign="top">Another blurb</td>
-  </tr>
-  <tr>
-    <td colspan="2"><hr />
-    </td>
-
-  </tr>
-  <tr>
-
-    <td colspan="2"><hr />
-      <h2>WAR Products</h2>
-      <hr /></td>
-  </tr>
-  <tr id="itemname">
-    <td width="30%" valign="top" align="left"><b>Item title, in bold, no trailing
-        punctuation, with unique id attribute on &lt;tr&gt; </b></td>
-    <td width="70%" valign="top">A blurb pitched to the Eclipse community
-        (not just to members of the Eclipse Platform development team). Tell
-        end users about changes they'll see at the UI. Tell component writers
-        about changes they'll see at the client- and server-side APIs. Try to
-        generate some excitement; save the boring details for the manual. The
-        description should be complete sentences, with trailing punctuation.
-        Stick to the default font and size.
-      <p>If a small image sheds light, place it below the description, in a separate
-        paragraph. Regular screen snapshots should be done on Windows XP. Crop
-        out any extraneous stuff to focus the reader's attention on your new
-        feature. <span style="background-color: #FFFF00">The image should be
-        no more than 466 pixels wide and in PNG-24 format</span> (as opposed
-        to GIF, TIF, BMP, or JPG).</p>
-
-      <p>Microsoft Paint actually saves to PNG on Windows XP and can easily be
-        used to crop and save screenshots:</p>
-      <ul>
-        <li>Arrange the windows for the shot</li>
-        <li>Use the Print Screen key (or Alt+Print Screen) to capture the screen</li>
-        <li>Open Paint (under All Programs &gt; Accessories)</li>
-        <li>Ctrl+V to paste</li>
-
-        <li>Select the area you want to keep</li>
-        <li>Ctrl+C to copy it</li>
-        <li>Ctrl+N to create a new canvas (ok to discard old one)</li>
-        <li>Ctrl+V to paste selected portion</li>
-        <li>Save As PNG</li>
-      </ul>
-
-      <p>Name the file is a way that is appropriate and specific to the item
-        (e.g., key-bindings.png, rather than something generic like image.png).
-        Use all lowercase letters in the image file name, including the &quot;.png&quot; 
-        file extension. As a separator, use hyphen &quot;-&quot; rather than
-        underscore 
-        &quot;_&quot;. </p>
-      <p>Put all the images in a sibling directory named &quot;images&quot;.
-        This gives HTML like &lt;img src=&quot;images/foo.png&quot; alt=&quot;The
-        Foo View&quot; /&gt;. Include a suitable alt property (which is mandatory
-        in XHTML 1.0). Do not embed the width and height of the image.</p>
-
-      <p>The images should be left justified (as opposed to centered). </p>
-      <p>Use the W3C <a href="http://validator.w3.org/#validate_by_input">XHTML
-          Markup Validation Service</a> to check your document's markup before
-          submitting.</p></td>
-  </tr>
-  <tr>
-    <td colspan="2"><hr />
-    </td>
-
-  </tr>
-  <tr id="itemname2">
-    <td width="30%" valign="top" align="left"><b>Another item</b></td>
-    <td width="70%" valign="top">Another blurb</td>
-  </tr>
-  <tr>
-    <td colspan="2"><hr />
-    </td>
-
-  </tr>
-  <tr id="itemname3">
-    <td width="30%" valign="top" align="left"><b>Another item</b></td>
-    <td width="70%" valign="top">Another blurb</td>
-  </tr>
-  <tr>
-    <td colspan="2"><hr />
-    </td>
-
-  </tr>
-</table>
-</body>
-</html>
