diff --git a/org.eclipse.userstorage.releng/org.eclipse.userstorage.releng.latest.target b/org.eclipse.userstorage.releng/org.eclipse.userstorage.releng.latest.target
new file mode 100644
index 0000000..05449cb
--- /dev/null
+++ b/org.eclipse.userstorage.releng/org.eclipse.userstorage.releng.latest.target
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.8"?>
+<target name="Generated from User Storage SDK" sequenceNumber="1">
+  <locations>
+	  <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="false" type="InstallableUnit">
+		  <repository location="http://download.eclipse.org/releases/latest"/>
+		  <unit id="org.eclipse.sdk.feature.group" version="4.19.0.v20210303-1800"/>
+	  </location>
+	  <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="false" type="InstallableUnit">
+		  <repository location="https://download.eclipse.org/eclipse/jetty/10.0.2/"/>
+		  <unit id="org.eclipse.jetty.server" version="10.0.2"/>
+		  <unit id="slf4j.api" version="2.0.0.alpha1"/>
+	  </location>
+	  <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="false" type="InstallableUnit">
+		  <repository location="http://download.eclipse.org/tools/orbit/downloads/latest-R"/>
+		  <unit id="org.hamcrest" version="1.1.0.v20090501071000"/>
+		  <unit id="org.hamcrest.core" version="1.1.0.v20090501071000"/>
+		  <unit id="org.mockito" version="2.23.0.v20200310-1642"/>
+		  <unit id="org.apache.commons.logging" version="1.1.1.v201101211721"/>
+	  </location>
+  </locations>
+</target>
\ No newline at end of file
diff --git a/org.eclipse.userstorage.tests/META-INF/MANIFEST.MF b/org.eclipse.userstorage.tests/META-INF/MANIFEST.MF
index 680e099..6255c47 100644
--- a/org.eclipse.userstorage.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.userstorage.tests/META-INF/MANIFEST.MF
@@ -10,14 +10,15 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.0.0,4.0.0)",
  org.apache.httpcomponents.httpclient;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
  org.apache.httpcomponents.httpcore;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
+ org.eclipse.jetty.server;bundle-version="[9.0.0,10.1.0)";visibility:=reexport,
+ org.eclipse.jetty.servlet;bundle-version="[9.0.0,10.1.0)";visibility:=reexport,
+ org.eclipse.jetty.http;bundle-version="[9.0.0,10.1.0)";visibility:=reexport,
+ org.eclipse.jetty.io;bundle-version="[9.0.0,10.1.0)";visibility:=reexport,
+ org.eclipse.jetty.util;bundle-version="[9.0.0,10.1.0)";visibility:=reexport,
  org.eclipse.userstorage;bundle-version="[1.0.0,2.0.0)";visibility:=reexport,
- org.eclipse.jetty.server;bundle-version="[9.0.0,10.0.0)";visibility:=reexport,
- org.eclipse.jetty.servlet;bundle-version="[9.0.0,10.0.0)";visibility:=reexport,
- org.eclipse.jetty.http;bundle-version="[9.0.0,10.0.0)";visibility:=reexport,
- org.eclipse.jetty.io;bundle-version="[9.0.0,10.0.0)";visibility:=reexport,
- org.eclipse.jetty.util;bundle-version="[9.0.0,10.0.0)";visibility:=reexport,
- javax.servlet;bundle-version="[3.0.0,4.0.0)";visibility:=reexport,
  org.junit;bundle-version="[4.11.0,5.0.0)";visibility:=reexport
 Export-Package: org.eclipse.userstorage.tests;version="1.0.0";x-internal:=true,
  org.eclipse.userstorage.tests.util;version="1.0.0";x-internal:=true
 Eclipse-RegisterBuddy: org.eclipse.userstorage
+Import-Package: javax.servlet;version="[3.1.0,4.0.0]",
+ javax.servlet.http;version="[3.1.0,4.0.0]"
diff --git a/org.eclipse.userstorage.tests/src/org/eclipse/userstorage/tests/util/ServerFixture.java b/org.eclipse.userstorage.tests/src/org/eclipse/userstorage/tests/util/ServerFixture.java
index 470c9ad..4ec332b 100644
--- a/org.eclipse.userstorage.tests/src/org/eclipse/userstorage/tests/util/ServerFixture.java
+++ b/org.eclipse.userstorage.tests/src/org/eclipse/userstorage/tests/util/ServerFixture.java
@@ -19,13 +19,10 @@
 import org.eclipse.userstorage.internal.util.IOUtil;
 import org.eclipse.userstorage.internal.util.StringUtil;
 import org.eclipse.userstorage.spi.ISettings;
-import org.eclipse.userstorage.tests.util.USSServer.NOOPLogger;
 import org.eclipse.userstorage.tests.util.USSServer.User;
 import org.eclipse.userstorage.util.NotFoundException;
 import org.eclipse.userstorage.util.Settings.MemorySettings;
 
-import org.eclipse.jetty.util.log.Log;
-
 import java.io.File;
 import java.io.IOException;
 import java.util.UUID;
@@ -216,7 +213,6 @@
 
   protected void configureServerLogging()
   {
-    Log.setLog(new NOOPLogger());
   }
 
   protected boolean manageBundleLifecycle()
diff --git a/org.eclipse.userstorage.tests/src/org/eclipse/userstorage/tests/util/USSServer.java b/org.eclipse.userstorage.tests/src/org/eclipse/userstorage/tests/util/USSServer.java
index 522634a..cc6c369 100644
--- a/org.eclipse.userstorage.tests/src/org/eclipse/userstorage/tests/util/USSServer.java
+++ b/org.eclipse.userstorage.tests/src/org/eclipse/userstorage/tests/util/USSServer.java
@@ -22,8 +22,6 @@
 import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.eclipse.jetty.util.log.Log;
-import org.eclipse.jetty.util.log.Logger;
 
 import javax.servlet.ServletException;
 import javax.servlet.ServletOutputStream;
@@ -349,7 +347,7 @@
       if (StringUtil.isEmpty(ifMatch) || !ifMatch.equals(etag))
       {
         response.setHeader("ETag", "\"" + etag + "\"");
-        response.sendError(HttpServletResponse.SC_CONFLICT);
+        response.setStatus(HttpServletResponse.SC_CONFLICT);
         return;
       }
     }
@@ -803,94 +801,8 @@
     }
   }
 
-  /**
-   * @author Eike Stepper
-   */
-  public static class NOOPLogger implements Logger
-  {
-    @Override
-    public String getName()
-    {
-      return "noop";
-    }
-
-    @Override
-    public void warn(String msg, Object... args)
-    {
-    }
-
-    @Override
-    public void warn(Throwable thrown)
-    {
-    }
-
-    @Override
-    public void warn(String msg, Throwable thrown)
-    {
-    }
-
-    @Override
-    public void info(String msg, Object... args)
-    {
-    }
-
-    @Override
-    public void info(Throwable thrown)
-    {
-    }
-
-    @Override
-    public void info(String msg, Throwable thrown)
-    {
-    }
-
-    @Override
-    public boolean isDebugEnabled()
-    {
-      return false;
-    }
-
-    @Override
-    public void setDebugEnabled(boolean enabled)
-    {
-    }
-
-    @Override
-    public void debug(String msg, Object... args)
-    {
-    }
-
-    @Override
-    public void debug(Throwable thrown)
-    {
-    }
-
-    @Override
-    public void debug(String msg, Throwable thrown)
-    {
-    }
-
-    @Override
-    public void debug(String msg, long value)
-    {
-    }
-
-    @Override
-    public Logger getLogger(String name)
-    {
-      return this;
-    }
-
-    @Override
-    public void ignore(Throwable ignored)
-    {
-    }
-  }
-
   public static void main(String[] args) throws Exception
   {
-    Log.setLog(new NOOPLogger());
-
     USSServer server = new USSServer(8080, new File(System.getProperty("java.io.tmpdir"), "uss-server"));
     server.addUser(FixedCredentialsProvider.DEFAULT_CREDENTIALS);
 
diff --git a/pom.xml b/pom.xml
index db778c3..ee14874 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <tycho.scmUrl>scm:git:https://git.eclipse.org/r/p/usssdk/org.eclipse.usssdk.git</tycho.scmUrl>
-    <tycho-version>1.6.0</tycho-version>
+    <tycho-version>2.2.0</tycho-version>
     <jarsigner-version>1.3.1</jarsigner-version>
 
     <!-- OS-specific JVM flags, empty for the default case but redefined below -->
@@ -89,6 +89,7 @@
         <artifactId>tycho-surefire-plugin</artifactId>
         <configuration>
           <useUIHarness>false</useUIHarness>
+          <trimStackTrace>false</trimStackTrace>
           <appArgLine>
             -consoleLog
             -eclipse.keyring /dev/null
@@ -148,22 +149,6 @@
         </plugin>
         <plugin>
           <groupId>org.eclipse.tycho</groupId>
-          <artifactId>target-platform-configuration</artifactId>
-          <version>${tycho-version}</version>
-          <configuration>
-            <target>
-              <artifact>
-                <groupId>org.eclipse.userstorage</groupId>
-                <artifactId>org.eclipse.userstorage.releng</artifactId>
-                <version>1.0.0-SNAPSHOT</version>
-              </artifact>
-            </target>
-            <!--executionEnvironmentDefault>JavaSE-${javaVersion}</executionEnvironmentDefault-->
-            <includePackedArtifacts>true</includePackedArtifacts>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-surefire-plugin</artifactId>
           <version>${tycho-version}</version>
         </plugin>
@@ -301,6 +286,99 @@
       </build>
     </profile>
 
+    <profile>
+      <id>eclipse-target-4.5</id>
+      <activation>
+        <property>
+          <name>!eclipse.target</name>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.eclipse.tycho</groupId>
+            <artifactId>target-platform-configuration</artifactId>
+            <version>${tycho-version}</version>
+            <configuration>
+              <target>
+                <artifact>
+                  <groupId>org.eclipse.userstorage</groupId>
+                  <artifactId>org.eclipse.userstorage.releng</artifactId>
+                  <version>1.0.0-SNAPSHOT</version>
+                </artifact>
+              </target>
+              <!--executionEnvironmentDefault>JavaSE-${javaVersion}</executionEnvironmentDefault-->
+              <includePackedArtifacts>true</includePackedArtifacts>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+    <profile>
+      <!-- this target should only be used for testing purposes -->
+      <id>target-eclipse-release</id>
+      <activation>
+        <property>
+          <name>eclipse.target</name>
+        </property>
+      </activation>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <groupId>org.eclipse.tycho</groupId>
+              <artifactId>tycho-compiler-plugin</artifactId>
+              <version>${tycho-version}</version>
+              <configuration>
+		<!--
+                  tycho-compiler-plugin's useProjectSettings
+		  defaults to true, such that it will use the JDT
+                  compiler source and target settings.  These are
+                  currently set to JavaSE 1.6.  This setting causes
+                  issues for Eclipse Neon (Platform 4.6) or later
+                  as they target JavaSE 1.8 and so their .class files
+                  result in version errors.  Fix this problem by
+                  forcing a later target.
+                -->
+                <target>11</target>
+              </configuration>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+      </build>
+      <repositories>
+        <repository>
+          <id>eclipse-named</id>
+          <layout>p2</layout>
+          <url>http://download.eclipse.org/releases/${eclipse.target}</url>
+        </repository>
+        <repository>
+          <id>orbit-latest</id>
+          <layout>p2</layout>
+          <url>http://download.eclipse.org/tools/orbit/downloads/latest-R</url>
+        </repository>
+      </repositories>
+    </profile>
+
+    <profile>
+      <!-- this target should only be used for testing purposes -->
+      <id>eclipse-target-latest</id>
+      <activation>
+        <property>
+          <name>eclipse.target</name>
+          <value>latest</value>
+        </property>
+      </activation>
+      <repositories>
+        <repository>
+          <id>eclipse-jetty-10</id>
+          <layout>p2</layout>
+          <url>https://download.eclipse.org/eclipse/jetty/10.0.2/</url>
+        </repository>
+      </repositories>
+    </profile>
+
   </profiles>
 
 </project>
