diff --git a/download.html b/download.html
index 4635b6c..3604bcf 100644
--- a/download.html
+++ b/download.html
@@ -128,7 +128,7 @@
 				</p>
 				<p>
 				
-					<strong><a href="releasenotes.html">Xtend 2.17.0 Release Notes</a></strong>
+					<strong><a href="releasenotes.html">Xtend 2.17.1 Release Notes</a></strong>
 				
 				</p>
 			</div>
diff --git a/feed.xml b/feed.xml
index af2faa2..2f4703c 100644
--- a/feed.xml
+++ b/feed.xml
@@ -6,11 +6,30 @@
 </description>
     <link>http://xtend-lang.org/xtend/</link>
     <atom:link href="http://xtend-lang.org/xtend/feed.xml" rel="self" type="application/rss+xml"/>
-    <pubDate>Mon, 04 Mar 2019 11:56:48 -0500</pubDate>
-    <lastBuildDate>Mon, 04 Mar 2019 11:56:48 -0500</lastBuildDate>
+    <pubDate>Wed, 03 Apr 2019 07:33:40 -0400</pubDate>
+    <lastBuildDate>Wed, 03 Apr 2019 07:33:40 -0400</lastBuildDate>
     <generator>Jekyll v2.5.3</generator>
     
       <item>
+        <title>Xtend 2.17.1 Release Notes</title>
+        <description>&lt;p&gt;This is a hotfix release. Here is the list of fixed issues:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;There was a &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=545343&quot;&gt;bug&lt;/a&gt; in the Xtext Builder that leads to non Xtext projects being built by Xtext.&lt;/li&gt;
+  &lt;li&gt;The &lt;a href=&quot;https://github.com/eclipse/xtext-core/issues/1059&quot;&gt;LSP4J&lt;/a&gt; version in Xtext 2.17.0 did not match the one in Eclipse 2019-03. Upgraded to LSP4J 0.7.0.&lt;/li&gt;
+  &lt;li&gt;The &lt;a href=&quot;https://github.com/eclipse/xtext-xtend/issues/750&quot;&gt;Xtend Batch Compiler&lt;/a&gt; preferred classes found on the classpath over local classes.&lt;/li&gt;
+&lt;/ul&gt;
+</description>
+        <pubDate>Wed, 03 Apr 2019 00:00:00 -0400</pubDate>
+        <link>http://xtend-lang.org/xtend/releasenotes/2019/04/03/version-2-17-1.html</link>
+        <guid isPermaLink="true">http://xtend-lang.org/xtend/releasenotes/2019/04/03/version-2-17-1.html</guid>
+        
+        
+        <category>releasenotes</category>
+        
+      </item>
+    
+      <item>
         <title>Xtend 2.17.0 Release Notes</title>
         <description>&lt;p&gt;This release focuses on the compatibility with Java 11 &amp;amp; Eclipse 2019-03, stability, performance and technical debt reduction.&lt;/p&gt;
 
@@ -481,98 +500,5 @@
         
       </item>
     
-      <item>
-        <title>Xtend 2.8.0 Release Notes</title>
-        <description>&lt;p&gt;Version 2.8 got many new features, bug fixes, and performance improvements (&lt;a href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;list_id=11217573&amp;amp;query_format=advanced&amp;amp;status_whiteboard=v2.8&amp;amp;status_whiteboard_type=allwordssubstr&quot;&gt;full bugzilla list&lt;/a&gt;).&lt;/p&gt;
-
-&lt;p&gt;The most noteworthy changes are the following.&lt;/p&gt;
-
-&lt;h2 id=&quot;target-java-version&quot;&gt;Target Java Version&lt;/h2&gt;
-
-&lt;p&gt;The new version of the Xbase compiler allows to configure the Java version of the generated code. The default is to use the same version as set for the source compatibility of the Java compiler (&lt;em&gt;Java → Compiler → Source compatibility&lt;/em&gt;), which is in turn usually set to the same version as the &lt;em&gt;compiler compliance level&lt;/em&gt;. The Xbase compiler settings can be configured in the &lt;em&gt;Compiler&lt;/em&gt; preference page or project properties page of your Xbase language.&lt;/p&gt;
-
-&lt;p&gt;&lt;img src=&quot;/xtend/images/releasenotes/2_8_xbase-java-version.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
-
-&lt;p&gt;By unchecking &lt;em&gt;Use source compatibility level from Java settings&lt;/em&gt;, you can choose to generate Java code with a different version than is set for the Java compiler. The actual changes in the generated code are described in the following.&lt;/p&gt;
-
-&lt;h3 id=&quot;java-5&quot;&gt;Java 5&lt;/h3&gt;
-
-&lt;p&gt;Java 5 has been the version level of the Xtend compiler from the beginning, so the generated code is the same as with earlier Xtend versions if you choose this target version.&lt;/p&gt;
-
-&lt;h3 id=&quot;java-6&quot;&gt;Java 6&lt;/h3&gt;
-
-&lt;p&gt;When the Xtend compiler is set to at least Java 6, it generates an &lt;code&gt;@Override&lt;/code&gt; annotation to each method that overrides a method from a superclass or implements an interface method.&lt;/p&gt;
-
-&lt;h3 id=&quot;java-7&quot;&gt;Java 7&lt;/h3&gt;
-
-&lt;p&gt;Xtend expressions like &lt;code&gt;switch (obj) { ... }&lt;/code&gt; where &lt;code&gt;obj&lt;/code&gt; is of type &lt;a href=&quot;http://docs.oracle.com/javase/8/docs/api/java/lang/String.html&quot;&gt;String&lt;/a&gt; are translated to Java &lt;code&gt;switch&lt;/code&gt; statements (see &lt;a href=&quot;http://docs.oracle.com/javase/8/docs/technotes/guides/language/strings-switch.html&quot;&gt;Strings in switch Statements&lt;/a&gt;).&lt;/p&gt;
-
-&lt;p&gt;In Xtend you can write number literals in the form &lt;code&gt;2_147_483_647&lt;/code&gt; to enhance their readability. This is also &lt;a href=&quot;http://docs.oracle.com/javase/8/docs/technotes/guides/language/underscores-literals.html&quot;&gt;supported by Java 7&lt;/a&gt;. When the Xtend compiler is set to at least Java 7, underscores in number literals are retained in the generated code.&lt;/p&gt;
-
-&lt;h3 id=&quot;java-8&quot;&gt;Java 8&lt;/h3&gt;
-
-&lt;p&gt;&lt;a href=&quot;/xtend/documentation/203_xtend_expressions.html#lambdas&quot;&gt;Xtend lambda expressions&lt;/a&gt; like &lt;code&gt;[String s | s.toLowerCase]&lt;/code&gt; are translated to &lt;a href=&quot;http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html&quot;&gt;Java 8 lambda expressions&lt;/a&gt;, e.g. &lt;code&gt;(String s) -&amp;gt; return s.toLowerCase();&lt;/code&gt;. More details on this translation are discussed in &lt;a href=&quot;http://spoenemann.blogspot.de/2015/02/xtend-for-java-8.html&quot;&gt;this blog post&lt;/a&gt;.&lt;/p&gt;
-
-&lt;p&gt;Note that independent of which Java version is chosen for the generated code, Xtend works perfectly with the &lt;a href=&quot;http://docs.oracle.com/javase/8/docs/technotes/guides/language/lambda_api_jdk8.html&quot;&gt;lambda-optimized Java 8 API&lt;/a&gt; because Xtend lambdas are fully compatible with Java 8 lambdas.&lt;/p&gt;
-
-&lt;p&gt;Xtend allows to define non-abstract methods (static or non-static) in interfaces when Java 8 is chosen as target language level. If such a method is non-static, it is translated to a &lt;a href=&quot;http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html&quot;&gt;Java 8 default method&lt;/a&gt;.&lt;/p&gt;
-
-&lt;h2 id=&quot;more-compiler-options&quot;&gt;More Compiler Options&lt;/h2&gt;
-
-&lt;p&gt;You can now disable the automatic generation of &lt;code&gt;@SuppressWarnings&lt;/code&gt; annotations for generated classes. Furthermore, you can enable the generation of &lt;code&gt;@Generated&lt;/code&gt; annotations for all generated types, which can be useful for automatic processing of the source code, e.g. when you want to exclude generated types in code analysis tools. The annotation also allows to attach more information, which can be enabled in the preferences.&lt;/p&gt;
-
-&lt;h2 id=&quot;enhancements-of-the-xtend-editor&quot;&gt;Enhancements of the Xtend Editor&lt;/h2&gt;
-
-&lt;h3 id=&quot;open-generated-file&quot;&gt;Open Generated File&lt;/h3&gt;
-
-&lt;p&gt;You can open the Java file that was generated from Xtend by right-clicking the Xtend editor and selecting &lt;em&gt;Open Generated File&lt;/em&gt;.&lt;/p&gt;
-
-&lt;p&gt;&lt;img src=&quot;/xtend/images/releasenotes/2_8_xbase-open-generated.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
-
-&lt;h3 id=&quot;open-inferred-type&quot;&gt;Open Inferred Type&lt;/h3&gt;
-
-&lt;p&gt;You can open the declaration of the inferred type of a local variable by &lt;em&gt;Ctrl&lt;/em&gt;-clicking (&lt;em&gt;Cmd&lt;/em&gt; on Mac) the variable name.&lt;/p&gt;
-
-&lt;p&gt;&lt;img src=&quot;/xtend/images/releasenotes/2_8_open-inferred-type.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
-
-&lt;h3 id=&quot;improved-hover-for-annotations&quot;&gt;Improved Hover for Annotations&lt;/h3&gt;
-
-&lt;p&gt;Hovers of annotated members have been improved and allow to navigate to annotation values.&lt;/p&gt;
-
-&lt;h3 id=&quot;unique-class-name-validation&quot;&gt;Unique Class Name Validation&lt;/h3&gt;
-
-&lt;p&gt;If your Xtend type’s qualified name collides with another Java or Xtend type in the same project you now get an error.&lt;/p&gt;
-
-&lt;h2 id=&quot;convert-java-to-xtend&quot;&gt;Convert Java to Xtend&lt;/h2&gt;
-
-&lt;p&gt;The new version features a Java-to-Xtend converter. Right-click a Java file, package or source folder in the Package Explorer and select &lt;em&gt;Convert to Xtend&lt;/em&gt;. You can choose to keep the original Java files (though that will lead to errors due to duplicate types), and you are warned if the Java code contains parts that cannot be translated automatically. These are marked with &lt;code&gt;FIXME&lt;/code&gt; comments in the Xtend code. However, the converter is able to convert the majority of Java classes without problems.&lt;/p&gt;
-
-&lt;p&gt;&lt;img src=&quot;/xtend/images/releasenotes/2_8_java-convert-to-xtend.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
-
-&lt;h2 id=&quot;active-annotations&quot;&gt;Active Annotations&lt;/h2&gt;
-
-&lt;h4 id=&quot;constant-field-initializer&quot;&gt;Constant Field Initializer&lt;/h4&gt;
-
-&lt;p&gt;&lt;em&gt;MutableFieldDeclaration&lt;/em&gt; now features a set of methods like &lt;code&gt;setConstantValueAsInt(int value)&lt;/code&gt; for creating static final fields with constant initializers. All primitive values as well as &lt;a href=&quot;http://docs.oracle.com/javase/8/docs/api/java/lang/String.html&quot;&gt;String&lt;/a&gt; are supported.&lt;/p&gt;
-
-&lt;h4 id=&quot;default-methods&quot;&gt;Default Methods&lt;/h4&gt;
-
-&lt;p&gt;If the Xtend compiler is set to Java 8, you can create a method with default implementation in a Java interface by defining a method body and setting the &lt;em&gt;abstract&lt;/em&gt; flag on the &lt;em&gt;MutableMethodDeclaration&lt;/em&gt;.&lt;/p&gt;
-
-&lt;h2 id=&quot;faster-builds-and-more-responsive-ui&quot;&gt;Faster Builds and More Responsive UI&lt;/h2&gt;
-
-&lt;p&gt;Compiling an Xtend resource involves a lot of computation. With 2.8 we store the computed resource state and reload it if no changes have happened. This leads to a significantly faster build.&lt;/p&gt;
-
-&lt;p&gt;Into the bargain, user actions like saving an editor now cancel the auto-build and are no longer blocked by it.&lt;/p&gt;
-</description>
-        <pubDate>Wed, 11 Mar 2015 05:30:28 -0400</pubDate>
-        <link>http://xtend-lang.org/xtend/releasenotes/2015/03/11/version-2-8-0.html</link>
-        <guid isPermaLink="true">http://xtend-lang.org/xtend/releasenotes/2015/03/11/version-2-8-0.html</guid>
-        
-        
-        <category>releasenotes</category>
-        
-      </item>
-    
   </channel>
 </rss>
diff --git a/releasenotes.html b/releasenotes.html
index b7f324f..2c8e883 100644
--- a/releasenotes.html
+++ b/releasenotes.html
@@ -123,6 +123,8 @@
 					<h3>Table of Contents</h3>
 					<ul>
 						
+							<li><p><a href="#/releasenotes/2019/04/03/version-2-17-1">Xtend 2.17.1 Release Notes &mdash; Apr 3, 2019</a></p>
+						
 							<li><p><a href="#/releasenotes/2019/03/05/version-2-17-0">Xtend 2.17.0 Release Notes &mdash; Mar 5, 2019</a></p>
 						
 							<li><p><a href="#/releasenotes/2018/12/04/version-2-16-0">Xtend 2.16.0 Release Notes &mdash; Dec 4, 2018</a></p>
@@ -141,12 +143,24 @@
 						
 							<li><p><a href="#/releasenotes/2014/09/02/version-2-7-0">Xtend 2.7.0 Release Notes &mdash; Sep 2, 2014</a></p>
 						
-							<li><p><a href="#/releasenotes/2014/05/21/version-2-6-0">Xtend 2.6.0 Release Notes &mdash; May 21, 2014</a></p>
-						
 					</ul>
 				</div>
 				
 				  <hr/>
+				  <section id="/releasenotes/2019/04/03/version-2-17-1">
+				  	<h1>Xtend 2.17.1 Release Notes<small>&nbsp;&nbsp;Apr 3, 2019</small></h1>
+				    <br/>
+				    <p>This is a hotfix release. Here is the list of fixed issues:</p>
+
+<ul>
+  <li>There was a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=545343">bug</a> in the Xtext Builder that leads to non Xtext projects being built by Xtext.</li>
+  <li>The <a href="https://github.com/eclipse/xtext-core/issues/1059">LSP4J</a> version in Xtext 2.17.0 did not match the one in Eclipse 2019-03. Upgraded to LSP4J 0.7.0.</li>
+  <li>The <a href="https://github.com/eclipse/xtext-xtend/issues/750">Xtend Batch Compiler</a> preferred classes found on the classpath over local classes.</li>
+</ul>
+
+				  </section>
+				
+				  <hr/>
 				  <section id="/releasenotes/2019/03/05/version-2-17-0">
 				  	<h1>Xtend 2.17.0 Release Notes<small>&nbsp;&nbsp;Mar 5, 2019</small></h1>
 				    <br/>
@@ -816,212 +830,6 @@
 
 				  </section>
 				
-				  <hr/>
-				  <section id="/releasenotes/2014/05/21/version-2-6-0">
-				  	<h1>Xtend 2.6.0 Release Notes<small>&nbsp;&nbsp;May 21, 2014</small></h1>
-				    <br/>
-				    <p>
-  Version 2.6 got many bug fixes and performance improvements (<a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&status_whiteboard=v2.6">full bugzilla list</a>). The new features are the following.
-</p>
-
-<section id="anonymous_classes" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Anonymous Classes</h3>
-	<p>Xtend supports using lambdas to implement anonymous classes with just one abstract method since its inception. 
-	For interfaces and abstract classes with more than one method you can now also use the an anonymous class using the following syntax:</p>
-
-<pre class="prettyprint lang-xtend linenums">
-val tabListener = new ActionBar.TabListener() {
-
-    override onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
-        // show the given tab
-    }
-
-    override onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
-        // hide the given tab
-    }
-
-    override onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
-        // probably ignore this event
-    }
-};
-</pre>     
-</section>
-<section id="static_nested_classes" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Static Nested Classes</h3>
-	<p>Xtend now supports static nested classes.</p>
-<pre class="prettyprint lang-xtend linenums">
-class A {
-    static class NestedClass {
-    }
-}
-</pre>
-</section>
-<section id="operator_declaration" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Operator Declarations</h3>
-	<p>In addition to overloading operators by adhering to the name mappings, listed in <a href="/xtend/documentation/203_xtend_expressions.html#operators">the documentation</a>, 
-	one can now use the actual operator in the declaration as well.</p>
-<pre class="prettyprint lang-xtend linenums">
-class Money {
-    def + (Money other) { ... }
-    def - (Money other) { ... }
-    def * (BigDecimal times) { ... }
-    ...
-}
-</pre>
-</section>
-<section id="synchronized_expression" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Synchronized Expression</h3>
-	<p>
-		The synchronized expression works basically like Java's synchronized statement.
-	</p>
-<pre class="prettyprint lang-xtend linenums">
-synchronized(lock) {
-    // do stuff
-}
-</pre>
-	<p>
-		But of course it is an expression, as everything in Xtend/Xbase. So you can write the following as well:
-	</p>
-<pre class="prettyprint lang-xtend linenums">
-someMethodCall(synchronized(lock) { ... })
-</pre>
-</section>
-<section id="qualified_static_imports" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Qualified Static Imports</h3>
-	<p>It is now possible to import features in a fully qualified way. This works for regular static imports as well as for extension imports.</p>
-<pre class="prettyprint lang-xtend linenums">
-// static import
-import static java.util.Collections.singleton
-// extension import
-import static extension java.util.Collections.min
-import static extension java.util.Collections.max
-</pre>
-</section>
-<section id="switch_fall_through" style="padding-top: 68px; margin-top: -68px;">
-<h3>Switch Fall Through</h3>
-	<p>The switch expression now supports a kind of fall through. Here's an example</p>
-	<pre class="prettyprint lang-xtend linenums">
-	switch myOperator {
-		case '+',
-		case '-' : handlePlusMinus()    
-		case '*',
-		case '/' : handleDivMultiply()
-		default : throw new IllegalStateException
-	}
-	</pre>
-</section>
-<section id="compound_assignments" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Compound Assignments</h3>
-	<p>Xtend now supports compound assignment operators.</p>
-<pre class="prettyprint lang-xtend linenums">
-var i = 0
-i += 42
-</pre>
-	<p>Compound operators work on overloaded operators as well. That is you don't need to declare '+=' if you have '+' defined. 
-	Example:</p>
-<pre class="prettyprint lang-xtend linenums">
-var distance = 15.km
-distance += 5.km
-</pre>
-</section>
-<section id="postfix_operators" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Postfix Operators</h3>
-	<p>Postfix operators for incrementing and decrementing numbers have been added.</p>
-<pre class="prettyprint lang-xtend linenums">
-var i = 0
-while (condition()) {
-    i++
-}
-</pre>
-</section>
-<section id="traditional_for_loop" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Traditional For-Loop</h3>
-	<p>The traditional for-loop from Java is now available in Xtend, too.</p>
-<pre class="prettyprint lang-xtend linenums">
-for (var i = 0; i < 99; i++) {
-    println(''+i+' bottles of beer on the wall.')
-}
-</pre>
-</section>
-<section id="multivalued_annotation_sugar" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Multivalued Annotations Sugar</h3>
-	<p>Instead of writing </p>
-<pre class="prettyprint lang-xtend linenums">
-@SurpressWarnings(#["unused", "unchecked"])
-</pre>
-	<p> you can write</p>
-<pre class="prettyprint lang-xtend linenums">
-@SurpressWarnings("unused", "unchecked")
-</pre>
-</section>
-<section id="active_annotation_mark_as_read" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Active Annotations - Flag fields as read resp. initialized</h3>
-	<p>When initializing a final field within a synthetic constructor, the control flow analysis couldn't detect it was in fact initialized and would raise an error. Another typical solution was a warning when a private field was only accessed through methods added by an active annotation (e.g. a setter or getter). You can now mark a field as read resp. initialized.</p>
-</section><section id="style_checks" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Style Checks</h3>
-	<p>2.6 adds the following optional compiler checks (inactive by default):</p>
-    <h4>Force return expression</h4>
-    <img class="image_between_p" src="images/releasenotes/2_6_0_validation-explicit-return.png"/>
-    <h4>Force declare return types</h4>
-    <img class="image_between_p" src="images/releasenotes/2_6_0_validation-explicit-return-declaration.png"/>
-    <h4>Force empty parenthesis on method invocation</h4>
-    <img class="image_between_p" src="images/releasenotes/2_6_0_validation-empty-parenthesis.png"/>
-</section>
-<section id="task_tags" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Task Tags</h3>
-	<p>TODO, FIXME, and XXX markers in comments are now recognized by the IDE as task markers.
-	The Xtend editor picks up the preference of JDT for adding new kind of markers or removing existing ones.</p>
-	<img class="image_between_p" src="images/releasenotes/2_6_0_task_markers.png"/>
-</section>
-<section id="open_implementation" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Open Implementation</h3>
-	<p>In addition to the "Go to declaration"-action, you can now navigate to existing implementations of a method. It works just like in JDT</p>
-	<img class="image_between_p" src="images/releasenotes/2_6_0_open_implementation.png"/>
-</section>
-<section id="debug_hover" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Debug Hover Shows Inspect Dialog</h3>
-	<p>In a debug session, when hovering over a local variable or a visible field, the popo up shows the inspection tree of the hovered value.</p>
-	<img class="image_between_p" src="images/releasenotes/2_6_0_debug_hover_variable.png"/>
-</section>
-<section id="hover_annotations" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Hover Shows Annotations</h3>
-	<p>The declaration hover now includes the annotations.</p>
-	<img class="image_between_p" src="images/releasenotes/2_6_0_annotations_in_hover.png"/>
-</section>
-<section id="gradle_plugin" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Gradle Plug-in</h3>
-	<p>A gradle plug-in for easy integration of the Xtend compiler in any gradle based Java projects is now available.
-	The gradle plug-in even also works with the new Android buildsystem developed by Google. <br/>
-	The gradle plug-in is hosted <a href="https://github.com/oehme/xtend-gradle-plugin">at github</a>. </p>
-<pre class="prettyprint lang-xtend linenums">
-buildscript {
-  repositories {
-    mavenCentral()
-  }
-  dependencies {
-    classpath 'org.xtend:xtend-gradle-plugin:0.0.8'
-  }
-}
-apply plugin: 'xtend'
-repositories {
-    mavenCentral()
-}
-dependencies {
-  //or testCompile if you only want to use Xtend for some tests
-  compile 'org.eclipse.xtend:org.eclipse.xtend.lib:2.6.0'
-}
-</pre>
-</section>
-<section id="android_lib" style="padding-top: 68px; margin-top: -68px;">
-	<h3>Treeshaken Lib for Android</h3>
-	<p>For large Android projects there is a need to have as little code packaged as possible. 
-	Usually this is achieved by proguarding cour code and the dependencies during the build. 
-	For people who find that tedious and want to work with a reduced lib from the get go, we offer a treeshaken version of the library, which is only 300k small.</p>
-	<p>The library can be <a href="http://search.maven.org/#search%7Cga%7C1%7Corg.eclipse.xtext.xbase.lib.slim">downloaded from maven central</a>.</p>
-</section>
-
-				  </section>
-				
 			
 		</div>
   	</div>
diff --git a/releasenotes/2019/04/03/version-2-17-1.html b/releasenotes/2019/04/03/version-2-17-1.html
new file mode 100644
index 0000000..2831d85
--- /dev/null
+++ b/releasenotes/2019/04/03/version-2-17-1.html
@@ -0,0 +1,207 @@
+<!DOCTYPE html>
+<html>
+
+  <head>
+	<meta charset="UTF-8">
+	<title>Xtend - Xtend 2.17.1 Release Notes</title>
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
+	<meta name="description"
+		content="Xtend is a statically typed programming language sitting on top of Java.">
+	<meta name="author" content="Sven Efftinge">
+	<meta name="author" content="Miro Spoenemann">
+	<!--  styles -->
+	<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
+	<!--[if lt IE 9]>
+	  <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+	<![endif]-->
+	
+	<!-- Le fav and touch icons -->
+	
+	<link rel="shortcut icon" href="/xtend/images/favicon.png">
+	
+	<link href="/xtend/css/bootstrap.css" rel="stylesheet" type='text/css'>
+	<link href="/xtend/css/bootstrap-responsive.css" rel="stylesheet" type='text/css'>
+	<link href="/xtend/css/shield-responsive.css" rel="stylesheet" type='text/css'>
+	<link href='/xtend/css/fonts.css' rel='stylesheet' type='text/css'>
+	<link href="/xtend/css/prettyPhoto.css" rel="stylesheet" media="screen" type='text/css'>
+	<link href="/xtend/css/prettify.css" type="text/css" rel="stylesheet"/>
+	<link href="/xtend/css/style.css" rel="stylesheet" type='text/css'>
+	
+	<!--[if lt IE 9]>
+	<link href="css/iebugs.css" rel="stylesheet" type='text/css'>
+	<![endif]-->
+
+	<!-- BEGIN Cookie Consent
+	<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.css" />
+	<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js"></script>
+	<script>
+	window.addEventListener("load", function(){
+	window.cookieconsent.initialise({
+		"palette": {
+		"popup": {
+		  "background": "#000"
+		},
+		"button": {
+		  "background": "#f1d600"
+		}
+		},
+		"theme": "edgeless",
+		"type": "opt-in",
+		onInitialise: function (status) {
+		  var type = this.options.type;
+		  var didConsent = this.hasConsented();
+		  if (type == 'opt-in' && didConsent) {
+		    // TODO: enable cookies
+		  }
+		  if (type == 'opt-out' && !didConsent) {
+		    // TODO: disable cookies
+		  }
+		},
+		onStatusChange: function(status, chosenBefore) {
+		  var type = this.options.type;
+		  var didConsent = this.hasConsented();
+		  if (type == 'opt-in' && didConsent) {
+		    // TODO: enable cookies
+		  }
+		  if (type == 'opt-out' && !didConsent) {
+		    // TODO: disable cookies
+		  }
+		}, 
+		onRevokeChoice: function() {
+		  var type = this.options.type;
+		  if (type == 'opt-in') {
+		    // TODO: disable cookies
+		  }
+		  if (type == 'opt-out') {
+		    // TODO: enable cookies
+		  }
+		},
+		"content": {
+		"href": "http://www.eclipse.org/legal/privacy.php"
+		}
+	})});
+	</script>
+	END Cookie Consent -->
+</head>
+
+
+  <body>
+
+    <!-- Navbar -->
+  <div class="navbar navbar-fixed-top"
+    style="border-bottom: 1px solid #000;">
+    <div class="navbar-inner">
+      <div class="container">
+        <a class="btn btn-navbar" data-toggle="collapse"
+          data-target=".nav-collapse"> <span class="icon-bar"></span> <span
+          class="icon-bar"></span> <span class="icon-bar"></span>
+        </a> <a class="brand" href="/xtend/index.html"></a>
+        <div class="nav-collapse collapse" style="height: 0px;">
+          <ul class="nav">
+            <li ><a href="/xtend/download.html">Download</a></li>
+            <li ><a href="/xtend/documentation/index.html">Documentation</a></li>
+            <li ><a href="/xtend/community.html">Community</a></li>
+            <li ><a href="http://xtext.org">Xtext</a></li>
+            <li ><a href="http://www.eclipse.org">Eclipse.org</a></li>
+          </ul>
+              <!--div class="btn-group pull-right">
+                <div class="g-plusone" data-href="http://www.xtend-lang.org"></div>
+              </div-->
+        </div>
+        <!--/.nav-collapse -->
+      </div>
+    </div>
+  </div>
+  <!-- Navbar End -->
+
+
+    <div class="post">
+
+  <header class="post-header">
+    <h1 class="post-title">Xtend 2.17.1 Release Notes</h1>
+    <p class="post-meta">Apr 3, 2019</p>
+  </header>
+
+  <article class="post-content">
+    <p>This is a hotfix release. Here is the list of fixed issues:</p>
+
+<ul>
+  <li>There was a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=545343">bug</a> in the Xtext Builder that leads to non Xtext projects being built by Xtext.</li>
+  <li>The <a href="https://github.com/eclipse/xtext-core/issues/1059">LSP4J</a> version in Xtext 2.17.0 did not match the one in Eclipse 2019-03. Upgraded to LSP4J 0.7.0.</li>
+  <li>The <a href="https://github.com/eclipse/xtext-xtend/issues/750">Xtend Batch Compiler</a> preferred classes found on the classpath over local classes.</li>
+</ul>
+
+  </article>
+
+</div>
+
+    
+    <footer class="site-footer">
+  <div id="extra">
+    <div class="container inner-footer">
+      <div class="row">
+        <div class="span6">
+          <h3 class="footer-links-header">Quick Links</h3>
+          <ul class="footer-links clearfix">
+            <li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
+            <li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
+            <li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
+            <li><a href="http://www.eclipse.org/legal/">Legal</a></li>
+          </ul>
+          <ul class="footer-links clearfix">
+            <li><a href="http://www.eclipse.org">Eclipse Home</a></li>
+            <li><a href="http://marketplace.eclipse.org/">Market Place</a></li>
+            <li><a href="http://live.eclipse.org/">Eclipse Live</a></li>
+            <li><a href="http://www.planeteclipse.org/">Eclipse Planet</a></li>
+          </ul>
+        </div>
+        <div class="span6">
+            <!-- Social Media Links -->
+            <h3 class="footer-links-header"">Social Media</h3>
+            <ul class="footer-links clearfix">
+              <li>
+                <a href="https://twitter.com/xtendlang"><img src="/xtend/images/Twitter-bird-darkgray.png" class="img-responsive" style="margin-right: 5px;height: 1em;" alt="Twitter icon">@xtendlang on Twitter</a>
+              </li>
+            </ul>
+          </div>
+
+      </div>
+    </div>
+  </div>
+  <a href="#" class="scrollup fadeOutRight animated" style="display: none;">ScrollUp</a>
+  <a href="http://dryicons.com/">Icons by http://dryicons.com</a>
+  <!-- Le javascript
+      ================================================== -->
+  <!-- Placed at the end of the document so the pages load faster -->
+  <script src="/xtend/js/jquery-1.7.1.min.js" type="text/javascript"></script>
+  <script src="/xtend/js/bootstrap.min.js" type="text/javascript"></script>
+  
+  <!-- include pretty-print files -->
+  <script src="/xtend/js/prettify.js" type="text/javascript" ></script>
+  <script src="/xtend/js/lang-xtend.js" type="text/javascript"></script>
+  
+  <!-- Include the plug-in -->
+  <script src="/xtend/js/jquery.prettyPhoto.js" type="text/javascript"></script>
+  <script src="/xtend/js/jquery.easing.1.3.js" type="text/javascript"></script>
+  <script src="/xtend/js/custom.js" type="text/javascript"></script>
+  <!--script src="https://apis.google.com/js/platform.js" async defer></script-->
+  <!--script type="text/javascript">
+    var _gaq = _gaq || [];  
+      _gaq.push([ '_setAccount', 'UA-2429174-4' ]);
+    _gaq.push([ '_trackPageview' ]);
+    (function() {
+      var ga = document.createElement('script');
+      ga.type = 'text/javascript';
+      ga.async = true;
+      ga.src = ('https:' == document.location.protocol ? 'https://ssl'
+          : 'http://www')
+          + '.google-analytics.com/ga.js';
+      var s = document.getElementsByTagName('script')[0];
+      s.parentNode.insertBefore(ga, s);
+    })();
+  </script-->
+</footer>
+
+  </body>
+
+</html>
