diff --git a/.github/workflows/maven-package.yml b/.github/workflows/maven-package.yml
new file mode 100644
index 0000000..0e68da1
--- /dev/null
+++ b/.github/workflows/maven-package.yml
@@ -0,0 +1,23 @@
+
+name: Jakarta REST CI
+
+on:
+  push:
+    branches: [ master, 4.0-SNAPSHOT ]
+  pull_request:
+    branches: [ master, 4.0-SNAPSHOT ]
+
+jobs:
+  build:
+
+    runs-on: ubuntu-latest
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up JDK 11
+      uses: actions/setup-java@v2
+      with:
+        java-version: '11'
+        distribution: 'adopt'
+    - name: Build with Maven
+      run: mvn -B package --file pom.xml
diff --git a/.travis.yml b/.travis.yml
index 32de347..b41dd78 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,17 +4,11 @@
 
 jdk:
   - oraclejdk8
-  - oraclejdk9
   - oraclejdk11
   - openjdk8
-  - openjdk9
-  - openjdk10
   - openjdk11
-  - openjdk12
-  - openjdk13
-  - openjdk14
-  - openjdk15
   - openjdk16
+  - openjdk17
 
 cache:
   directories:
diff --git a/Jenkinsfile b/Jenkinsfile
index 4157858..be42d9b 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -4,7 +4,7 @@
 		pollSCM('H H * * *')
 	}
 	tools {
-		jdk 'openjdk-latest'
+		jdk 'openjdk-jdk11-latest'
 		maven 'apache-maven-latest'
 	}
 	environment {
diff --git a/etc/config/checkstyle.xml b/etc/config/checkstyle.xml
index be18d17..55b8840 100644
--- a/etc/config/checkstyle.xml
+++ b/etc/config/checkstyle.xml
@@ -52,6 +52,8 @@
         <property name="basedir" value="${basedir}"/>
     -->
 
+    <property name="cacheFile" value="${checkstyle.cache.file}"/>
+
     <!-- Checks that each Java package has a Javadoc file used for commenting. -->
     <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage       -->
     <module name="JavadocPackage" />
@@ -66,6 +68,11 @@
 
     <module name="FileLength"/>
 
+    <module name="LineLength">
+        <property name="max" value="160"/>
+        <property name="ignorePattern" value="@version|@see|@todo|TODO"/>
+    </module>
+
     <!-- Following interprets the header file as regular expressions. -->
     <!-- <module name="RegexpHeader"/>                                -->
 
@@ -79,19 +86,15 @@
     </module>
 
     <module name="TreeWalker">
-        <property name="cacheFile" value="${checkstyle.cache.file}"/>
         <property name="tabWidth" value="4"/>
 
         <!-- Checks for Javadoc comments.                     -->
         <!-- See http://checkstyle.sf.net/config_javadoc.html -->
 
-        <!--
-          - Turned off for now due to https://github.com/checkstyle/checkstyle/issues/5088
-          -
         <module name="JavadocMethod">
-            <property name="scope" value="protected"/>
+            <property name="accessModifiers" value="protected"/>
             <property name="validateThrows" value="false"/>
-        </module -->
+        </module>
 
         <module name="JavadocType">
             <property name="scope" value="protected"/>
@@ -140,10 +143,6 @@
 
         <!-- Checks for Size Violations.                    -->
         <!-- See http://checkstyle.sf.net/config_sizes.html -->
-        <module name="LineLength">
-            <property name="max" value="160"/>
-            <property name="ignorePattern" value="@version|@see|@todo|TODO"/>
-        </module>
         <module name="MethodLength"/>
         <module name="ParameterNumber">
 	   <property name="max" value="11"/>
diff --git a/examples/pom.xml b/examples/pom.xml
index 8e8690f..85825ec 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+    Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
     terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -15,28 +15,22 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <parent>
-        <groupId>net.java</groupId>
-        <artifactId>jvnet-parent</artifactId>
-        <version>1</version>
-    </parent>
-
     <groupId>jakarta.ws.rs</groupId>
     <artifactId>jakarta.ws.rs-examples</artifactId>
     <version>3.1-SNAPSHOT</version>
     <packaging>jar</packaging>
-    <name>jakarta.ws.rs-examples</name>
+    <name>Jakarta RESTful WS Examples</name>
 
     <url>https://github.com/jax-rs/api</url>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <microprofile.config.version>1.3</microprofile.config.version>
+        <microprofile.config.version>3.0-RC1</microprofile.config.version>
     </properties>
 
     <organization>
-        <name>Oracle Corporation</name>
-        <url>http://www.oracle.com/</url>
+        <name>Eclipse Foundation</name>
+        <url>https://www.eclipse.org/org/foundation/</url>
     </organization>
 
     <issueManagement>
@@ -67,14 +61,10 @@
 
     <developers>
         <developer>
-            <email>santiago.pericasgeertsen@oracle.com</email>
-            <id>Santiago</id>
-            <name>Santiago Pericas-Geertsen</name>
-            <organization>Oracle</organization>
-            <roles>
-                <role>JAX-RS Spec Lead</role>
-            </roles>
-            <timezone>EST</timezone>
+            <id>developers</id>
+            <name>JAX-RS API Developers</name>
+            <email>jaxrs-dev@eclipse.org</email>
+            <url>https://github.com/eclipse-ee4j/jaxrs-api/graphs/contributors</url>
         </developer>
     </developers>
 
@@ -82,24 +72,22 @@
         <pluginManagement>
             <plugins>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-compiler-plugin</artifactId>
-                    <version>3.6.1</version>
+                    <version>3.8.1</version>
                     <configuration>
                         <source>1.8</source>
                         <target>1.8</target>
                     </configuration>
                 </plugin>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-jar-plugin</artifactId>
-                    <version>2.5</version>
+                    <version>3.2.0</version>
                 </plugin>
                 <plugin>
                     <!-- This plugin generates the buildNumber property used in maven-bundle-plugin -->
                     <groupId>org.codehaus.mojo</groupId>
                     <artifactId>buildnumber-maven-plugin</artifactId>
-                    <version>1.3</version>
+                    <version>1.4</version>
                     <configuration>
                         <format>{0,date,MM/dd/yyyy hh:mm aa}</format>
                         <items>
@@ -116,9 +104,8 @@
                     </executions>
                 </plugin>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-javadoc-plugin</artifactId>
-                    <version>2.10.3</version>
+                    <version>3.3.0</version>
                     <configuration>
                         <doctitle>JAX-RS ${project.version} API Specification</doctitle>
                         <bottom>
@@ -156,9 +143,8 @@
                     </executions>
                 </plugin>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-source-plugin</artifactId>
-                    <version>2.3</version>
+                    <version>3.2.1</version>
                     <executions>
                         <execution>
                             <id>attach-sources</id>
@@ -169,9 +155,8 @@
                     </executions>
                 </plugin>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-jxr-plugin</artifactId>
-                    <version>2.3</version>
+                    <version>3.1.1</version>
                     <executions>
                         <execution>
                             <goals>
@@ -182,14 +167,20 @@
                     </executions>
                 </plugin>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-checkstyle-plugin</artifactId>
-                    <version>3.0.0</version>
+                    <version>3.1.2</version>
                     <configuration>
                         <outputDirectory>${project.build.directory}/checkstyle</outputDirectory>
                         <outputFile>${project.build.directory}/checkstyle/checkstyle-result.xml</outputFile>
                         <configLocation>${basedir}/../etc/config/checkstyle.xml</configLocation>
                     </configuration>
+                    <dependencies>
+                        <dependency>
+                            <groupId>com.puppycrawl.tools</groupId>
+                            <artifactId>checkstyle</artifactId>
+                            <version>8.44</version>
+                        </dependency>
+                    </dependencies>
                     <executions>
                         <execution>
                             <goals>
@@ -223,31 +214,22 @@
         </pluginManagement>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
             </plugin>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
             </plugin>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>buildnumber-maven-plugin</artifactId>
             </plugin>
-            <!--<plugin>-->
-                <!--<groupId>org.apache.maven.plugins</groupId>-->
-                <!--<artifactId>maven-javadoc-plugin</artifactId>-->
-            <!--</plugin>-->
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-source-plugin</artifactId>
             </plugin>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jxr-plugin</artifactId>
             </plugin>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-checkstyle-plugin</artifactId>
             </plugin>
             <plugin>
@@ -267,25 +249,25 @@
         <dependency>
             <groupId>jakarta.xml.bind</groupId>
             <artifactId>jakarta.xml.bind-api</artifactId>
-            <version>3.0.0-RC3</version>
+            <version>3.0.1</version>
         </dependency>
 
         <dependency>
             <groupId>jakarta.enterprise</groupId>
             <artifactId>jakarta.enterprise.cdi-api</artifactId>
-            <version>3.0.0-M4</version>
+            <version>3.0.0</version>
         </dependency>
 
         <dependency>
             <groupId>jakarta.enterprise.concurrent</groupId>
             <artifactId>jakarta.enterprise.concurrent-api</artifactId>
-            <version>2.0.0-RC2</version>
+            <version>2.0.0</version>
         </dependency>
 
         <dependency>
             <groupId>jakarta.ejb</groupId>
             <artifactId>jakarta.ejb-api</artifactId>
-            <version>4.0.0-RC2</version>
+            <version>4.0.0</version>
         </dependency>
 
         <dependency>
diff --git a/examples/src/main/java/jaxrs/examples/bootstrap/ClientAuthenticationJavaSeBootstrapExample.java b/examples/src/main/java/jaxrs/examples/bootstrap/ClientAuthenticationJavaSeBootstrapExample.java
index 3a78496..23b42a9 100644
--- a/examples/src/main/java/jaxrs/examples/bootstrap/ClientAuthenticationJavaSeBootstrapExample.java
+++ b/examples/src/main/java/jaxrs/examples/bootstrap/ClientAuthenticationJavaSeBootstrapExample.java
@@ -34,11 +34,8 @@
  * (e. g. 443, 8443, or someting completely different). The actual configuration needs to be queried after
  * bootstrapping, otherwise callers would be unaware of the actual chosen port. If the client's certificate is invalid
  * or cannot be validated, the server will reject the connection.
- * </p>
  * <p>
  * This example uses some basic <em>external</em> JSSE configuration:
- * </p>
- * <p>
  * <ul>
  * <li>{@code javax.net.ssl.keyStore=~/.keystore} - HTTPS: Path to a keystore holding an X.509 certificate for
  * {@code CN=localhost}</li>
@@ -46,7 +43,6 @@
  * <li>Client Authentication: The default truststore ({@code $JAVA_HOME/lib/security/cacerts}) must hold the root
  * certificate of the CA and all intermediate certificates used for signing the client's certificate.</li>
  * </ul>
- * </p>
  *
  * @author Markus KARG (markus@headcrashing.eu)
  * @since 3.1
diff --git a/examples/src/main/java/jaxrs/examples/bootstrap/HttpsJavaSeBootstrapExample.java b/examples/src/main/java/jaxrs/examples/bootstrap/HttpsJavaSeBootstrapExample.java
index 481edd0..6cb7e8a 100644
--- a/examples/src/main/java/jaxrs/examples/bootstrap/HttpsJavaSeBootstrapExample.java
+++ b/examples/src/main/java/jaxrs/examples/bootstrap/HttpsJavaSeBootstrapExample.java
@@ -31,17 +31,13 @@
  * {@code https://localhost/} on an implementation-specific default IP port (e. g. 443, 8443, or someting completely
  * different). The actual configuration needs to be queried after bootstrapping, otherwise callers would be unaware of
  * the actual chosen port.
- * </p>
  * <p>
  * This example uses some basic <em>external</em> JSSE configuration:
- * </p>
- * <p>
  * <ul>
  * <li>{@code javax.net.ssl.keyStore=~/.keystore} - HTTPS: Path to a keystore holding an X.509 certificate for
  * {@code CN=localhost}</li>
  * <li>{@code javax.net.ssl.keyStorePassword=...} - HTTPS: Password of that keystore</li>
  * </ul>
- * </p>
  *
  * @author Markus KARG (markus@headcrashing.eu)
  * @since 3.1
diff --git a/examples/src/main/java/jaxrs/examples/link/LinkExamples.java b/examples/src/main/java/jaxrs/examples/link/LinkExamples.java
index 4f725ef..976e68b 100644
--- a/examples/src/main/java/jaxrs/examples/link/LinkExamples.java
+++ b/examples/src/main/java/jaxrs/examples/link/LinkExamples.java
@@ -51,7 +51,7 @@
      * 1-step process: Build Response and add a link directly to it using either a String or a URI.
      *
      * @return response.
-     * @throws URISyntaxException
+     * @throws URISyntaxException if URI is invalid
      */
     public Response example3() throws URISyntaxException {
         Response r;
diff --git a/examples/src/main/java/jaxrs/examples/sse/ItemStoreResource.java b/examples/src/main/java/jaxrs/examples/sse/ItemStoreResource.java
index 00ce69c..82e5336 100644
--- a/examples/src/main/java/jaxrs/examples/sse/ItemStoreResource.java
+++ b/examples/src/main/java/jaxrs/examples/sse/ItemStoreResource.java
@@ -85,7 +85,7 @@
     }
 
     /**
-     * Receive & process commands sent by the test client that control the internal resource state.
+     * Receive &amp; process commands sent by the test client that control the internal resource state.
      * <p>
      * Following is the list of recognized commands:
      * <ul>
diff --git a/jaxrs-api/pom.xml b/jaxrs-api/pom.xml
index 4f500c4..ee4ac50 100644
--- a/jaxrs-api/pom.xml
+++ b/jaxrs-api/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+    Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
     terms of the Eclipse Public License v. 2.0, which is available at
@@ -23,15 +23,17 @@
     <parent>
         <groupId>org.eclipse.ee4j</groupId>
         <artifactId>project</artifactId>
-        <version>1.0.6</version>
+        <version>1.0.7</version>
+        <relativePath/>
     </parent>
 
     <groupId>jakarta.ws.rs</groupId>
     <artifactId>jakarta.ws.rs-api</artifactId>
     <version>3.1-SNAPSHOT</version>
 
+
     <packaging>bundle</packaging>
-    <name>jakarta.ws.rs-api</name>
+    <name>Jakarta RESTful WS API</name>
     <description>Jakarta RESTful Web Services</description>
 
     <url>https://github.com/eclipse-ee4j/jaxrs-api</url>
@@ -199,7 +201,7 @@
             <build>
                 <plugins>
                     <plugin>
-                        <!-- TODO: overriding paren pom (profile jvnet-release) - we should find nicer way -->
+                        <!-- TODO: overriding parent pom (profile jvnet-release) - we should find nicer way -->
                         <!-- 1.8- javadoc cannot handle module-info -->
                         <artifactId>maven-javadoc-plugin</artifactId>
                         <version>${maven.javadoc.plugin.version}</version>
@@ -266,7 +268,7 @@
             <plugins>
                 <plugin>
                     <artifactId>maven-jar-plugin</artifactId>
-                    <version>3.1.0</version>
+                    <version>3.2.0</version>
                 </plugin>
                 <plugin>
                     <!-- This plugin generates the buildNumber property used in maven-bundle-plugin -->
@@ -365,7 +367,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-source-plugin</artifactId>
-                    <version>3.0.1</version>
+                    <version>3.2.1</version>
                     <executions>
                         <execution>
                             <id>attach-sources</id>
@@ -379,7 +381,7 @@
                     <!-- Adding files to jar-->
                     <groupId>org.codehaus.mojo</groupId>
                     <artifactId>build-helper-maven-plugin</artifactId>
-                    <version>3.0.0</version>
+                    <version>3.2.0</version>
                     <executions>
                         <execution>
                             <id>add-legal-resource</id>
@@ -404,7 +406,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-jxr-plugin</artifactId>
-                    <version>2.5</version>
+                    <version>3.1.1</version>
                     <executions>
                         <execution>
                             <goals>
@@ -416,13 +418,20 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-checkstyle-plugin</artifactId>
-                    <version>3.0.0</version>
+                    <version>3.1.2</version>
                     <configuration>
                         <outputDirectory>${project.build.directory}/checkstyle</outputDirectory>
                         <outputFile>${project.build.directory}/checkstyle/checkstyle-result.xml</outputFile>
                         <configLocation>${basedir}/../etc/config/checkstyle.xml</configLocation>
                         <excludes>**/module-info.java</excludes>
                     </configuration>
+                    <dependencies>
+                        <dependency>
+                            <groupId>com.puppycrawl.tools</groupId>
+                            <artifactId>checkstyle</artifactId>
+                            <version>8.44</version>
+                        </dependency>
+                    </dependencies>
                     <executions>
                         <execution>
                             <goals>
@@ -515,7 +524,7 @@
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-api</artifactId>
-            <version>5.7.0</version>
+            <version>5.8.0-M1</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -527,7 +536,7 @@
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
-            <version>3.6.0</version>
+            <version>3.11.1</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
@@ -536,19 +545,19 @@
         <apidocs.title>Jakarta RESTful Web Services ${spec.version} API Specification ${spec.version.revision}</apidocs.title>
         <java.version>1.8</java.version>
 
-        <maven.bundle.plugin.version>3.5.0</maven.bundle.plugin.version>
-        <maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version>
-        <maven.javadoc.plugin.version>3.1.0</maven.javadoc.plugin.version>
+        <maven.bundle.plugin.version>5.1.2</maven.bundle.plugin.version>
+        <maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
+        <maven.javadoc.plugin.version>3.3.0</maven.javadoc.plugin.version>
 
         <api.package>jakarta.ws.rs</api.package>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <skip.release.tests>false</skip.release.tests>
-        <spec.version>3.0</spec.version>
+        <spec.version>3.1</spec.version>
         <spec.version.revision /> <!-- e.g. (Rev a) -->
 
-        <jaxb.api.version>3.0.0</jaxb.api.version>
-        <jaxb.impl.version>3.0.0-M4</jaxb.impl.version>
-        <activation.api.version>2.0.0</activation.api.version>
+        <jaxb.api.version>3.0.1</jaxb.api.version>
+        <jaxb.impl.version>3.0.2-b01</jaxb.impl.version>
+        <activation.api.version>2.0.1</activation.api.version>
         <legal.doc.folder>${project.basedir}/..</legal.doc.folder>
     </properties>
 
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/core/EntityPart.java b/jaxrs-api/src/main/java/jakarta/ws/rs/core/EntityPart.java
index a138aea..4334838 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/core/EntityPart.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/core/EntityPart.java
@@ -129,8 +129,11 @@
      * an {@code IllegalStateException} if it is called after calling
      * {@link #getContent} or {@link #getContent(GenericType)}.
      * 
+     * @param <T> type parameter of the value returned
+     * 
      * @param type the {@code Class} that the implementation should convert this
      *             part to
+     * @param <T> the entity type
      * @return an instance of the specified {@code Class} representing the content
      *         of this part
      * @throws IllegalArgumentException if no
@@ -164,9 +167,12 @@
      * result in an {@code IllegalStateException}. Likewise this method will throw
      * an {@code IllegalStateException} if it is called after calling
      * {@link #getContent} or {@link #getContent(Class)}.
+     *
+     * @param <T> type parameter of the value returned
      * 
      * @param type the generic type that the implementation should convert this part
      *             to
+     * @param <T> the entity type
      * @return an instance of the specified generic type representing the content of
      *         this part
      * @throws IllegalArgumentException if no
@@ -207,7 +213,7 @@
      * 
      * @since 3.1
      */
-    public interface Builder {
+    interface Builder {
 
         /**
          * Sets the media type for the EntityPart. This will also set the
@@ -217,7 +223,7 @@
          * @return the updated builder
          * @throws IllegalArgumentException if {@code mediaType} is {@code null}
          */
-        public Builder mediaType(MediaType mediaType) throws IllegalArgumentException;
+        Builder mediaType(MediaType mediaType) throws IllegalArgumentException;
 
         /**
          * Convenience method for setting the media type for the EntityPart. This will
@@ -230,7 +236,7 @@
          * @throws IllegalArgumentException if {@code mediaTypeString} cannot be parsed
          *                                  or is {@code null}
          */
-        public Builder mediaType(String mediaTypeString) throws IllegalArgumentException;
+        Builder mediaType(String mediaTypeString) throws IllegalArgumentException;
 
         /**
          * Adds a new header or replaces a previously added header and sets the header
@@ -241,7 +247,7 @@
          * @return the updated builder
          * @throws IllegalArgumentException if {@code headerName} is {@code null}
          */
-        public Builder header(String headerName, String... headerValues) throws IllegalArgumentException;
+        Builder header(String headerName, String... headerValues) throws IllegalArgumentException;
 
         /**
          * Adds new headers or replaces previously added headers. The behavior of this
@@ -252,7 +258,7 @@
          * @return the updated builder
          * @throws IllegalArgumentException if {@code newHeaders} is {@code null}
          */
-        public Builder headers(MultivaluedMap<String, String> newHeaders) throws IllegalArgumentException;
+        Builder headers(MultivaluedMap<String, String> newHeaders) throws IllegalArgumentException;
 
         /**
          * Sets the file name for this part. The file name will be specified as an
@@ -264,7 +270,7 @@
          * @return the updated builder
          * @throws IllegalArgumentException if {@code fileName} is {@code null}
          */
-        public Builder fileName(String fileName) throws IllegalArgumentException;
+        Builder fileName(String fileName) throws IllegalArgumentException;
 
         /**
          * Sets the content for this part. The content of this builder must be specified
@@ -279,7 +285,7 @@
          * @return the updated builder
          * @throws IllegalArgumentException if {@code content} is {@code null}
          */
-        public Builder content(InputStream content) throws IllegalArgumentException;
+        Builder content(InputStream content) throws IllegalArgumentException;
 
         /**
          * Convenience method, equivalent to calling
@@ -290,7 +296,7 @@
          * @return the updated builder.
          * @throws IllegalArgumentException if either parameter is {@code null}.
          */
-        public default Builder content(String fileName, InputStream content) throws IllegalArgumentException {
+        default Builder content(String fileName, InputStream content) throws IllegalArgumentException {
             return this.fileName(fileName).content(content);
         }
 
@@ -307,14 +313,16 @@
          * {@link #header(String, String...)} or {@link #headers(MultivaluedMap)}
          * methods.
          * </p>
-         * 
+         *
+         * @param <T> type parameter of the content
          * @param content the object to be used as the content
          * @param type    the type of this object which will be used when selecting the
          *                appropriate {@link jakarta.ws.rs.ext.MessageBodyWriter}
+         * @param <T>     the entity type
          * @return the updated builder.
          * @throws IllegalArgumentException if {@code content} is {@code null}
          */
-        public <T> Builder content(T content, Class<? extends T> type) throws IllegalArgumentException;
+        <T> Builder content(T content, Class<? extends T> type) throws IllegalArgumentException;
 
         /**
          * Sets the content for this part. The content of this builder must be specified
@@ -335,9 +343,11 @@
          * </p>
          * 
          * @param content the object to be used as the content
+         * @return the updated builder.
          * @throws IllegalArgumentException if {@code content} is {@code null}
+         * @return the updated builder.
          */
-        public default Builder content(Object content) throws IllegalArgumentException {
+        default Builder content(Object content) throws IllegalArgumentException {
             return this.content(content, content.getClass());
         }
 
@@ -354,15 +364,17 @@
          * {@link #header(String, String...)} or {@link #headers(MultivaluedMap)}
          * methods.
          * </p>
-         * 
+         *
+         * @param <T> type parameter of the content
          * @param content the object to be used as the content
          * @param type    the generic type of this object which will be used when
          *                selecting the appropriate
          *                {@link jakarta.ws.rs.ext.MessageBodyWriter}
+         * @param <T> the entity type
          * @return the updated builder.
          * @throws IllegalArgumentException if {@code content} is {@code null}
          */
-        public <T> Builder content(T content, GenericType<T> type) throws IllegalArgumentException;
+        <T> Builder content(T content, GenericType<T> type) throws IllegalArgumentException;
 
         /**
          * Builds a new EntityPart instance using the provided property values.
@@ -379,6 +391,6 @@
          *                                 {@link jakarta.ws.rs.ext.MessageBodyWriter}
          *                                 throws a {@code WebApplicationException}
          */
-        public EntityPart build() throws IllegalStateException, IOException, WebApplicationException;
+        EntityPart build() throws IllegalStateException, IOException, WebApplicationException;
     }
 }
diff --git a/jaxrs-spec/pom.xml b/jaxrs-spec/pom.xml
index 18da165..1e2e60a 100644
--- a/jaxrs-spec/pom.xml
+++ b/jaxrs-spec/pom.xml
@@ -22,19 +22,20 @@
     <artifactId>jakarta.ws.rs-spec</artifactId>
     <version>3.1-SNAPSHOT</version>
     <packaging>pom</packaging>
-    <name>Jakarta RESTful Web Services Specification</name>
+    <name>Jakarta RESTful WS Specification</name>
 
     <properties>
         <site.output.dir>${project.build.directory}/staging</site.output.dir>
         <maven.site.skip>true</maven.site.skip>
-        <asciidoctor.maven.plugin.version>2.0.0-RC.1</asciidoctor.maven.plugin.version>
-        <asciidoctorj.version>2.0.0</asciidoctorj.version>
-        <asciidoctorj.pdf.version>1.5.0-alpha.17</asciidoctorj.pdf.version>
-        <jruby.version>9.2.7.0</jruby.version>
+        <asciidoctor.maven.plugin.version>2.1.0</asciidoctor.maven.plugin.version>
+        <asciidoctorj.version>2.5.1</asciidoctorj.version>
+        <asciidoctorj.pdf.version>1.6.0</asciidoctorj.pdf.version>
+        <jruby.version>9.2.19.0</jruby.version>
         <!-- status: DRAFT, BETA, etc., or blank for final -->
-        <status></status>
+        <status>DRAFT</status>
         <maven.build.timestamp.format>MMMM dd, yyyy</maven.build.timestamp.format>
         <revisiondate>${maven.build.timestamp}</revisiondate>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
     <scm>
@@ -90,6 +91,7 @@
                         <configuration>
                             <backend>xhtml</backend>
                             <attributes>
+				<imagesdir>images</imagesdir>
                                 <revnumber>${project.version}</revnumber>
                                 <revremark>${status}</revremark>
                                 <revdate>${revisiondate}</revdate>
@@ -115,6 +117,7 @@
                         <configuration>
                             <backend>pdf</backend>
                             <attributes>
+				<imagesdir>images</imagesdir>
                                 <pdf-stylesdir>${project.basedir}/src/theme</pdf-stylesdir>
                                 <pdf-style>jakartaee</pdf-style>
                                 <revnumber>${project.version}</revnumber>
diff --git a/jaxrs-spec/src/main/asciidoc/chapters/appendix/_changes-since-3.0-release.adoc b/jaxrs-spec/src/main/asciidoc/chapters/appendix/_changes-since-3.0-release.adoc
index 31a9f0c..e343c6f 100644
--- a/jaxrs-spec/src/main/asciidoc/chapters/appendix/_changes-since-3.0-release.adoc
+++ b/jaxrs-spec/src/main/asciidoc/chapters/appendix/_changes-since-3.0-release.adoc
@@ -23,7 +23,7 @@
 default exception mappers.
 * <<resource_field>>: Array types may be specified for `@CookieParam`,
 `@FormParam`, `@HeaderParam`, `@MatrixParam` and `@QueryParam` parameters.
-* Deprecated Link.JaxbLink and Link.JaxbAdapter inner classes.
+* Deprecated `Link.JaxbLink` and `Link.JaxbAdapter` inner classes.
 * New method `#hasProperty(String)` wherever `#getProperty(String)` exists
 * `Response.created(URI)` now resolves relative URIs into an absolute URI
 against the *base* URI, not against the *request* URI anymore.
diff --git a/jaxrs-spec/src/main/asciidoc/chapters/introduction/_project_team.adoc b/jaxrs-spec/src/main/asciidoc/chapters/introduction/_project_team.adoc
index c92cb6f..ef39db7 100644
--- a/jaxrs-spec/src/main/asciidoc/chapters/introduction/_project_team.adoc
+++ b/jaxrs-spec/src/main/asciidoc/chapters/introduction/_project_team.adoc
@@ -17,8 +17,6 @@
 
 The following are the current committers of the Jakarta RESTful Web Services specification project:
 
--- Sebastian Daschner (IBM)
-
 -- Christian Kaltepoth (individual)
 
 -- Markus Karg (individual)
diff --git a/jaxrs-spec/src/main/asciidoc/chapters/introduction/_status.adoc b/jaxrs-spec/src/main/asciidoc/chapters/introduction/_status.adoc
index f905fc2..e5d67bd 100644
--- a/jaxrs-spec/src/main/asciidoc/chapters/introduction/_status.adoc
+++ b/jaxrs-spec/src/main/asciidoc/chapters/introduction/_status.adoc
@@ -11,7 +11,7 @@
 [[status]]
 === Status
 
-This is the final release of version 3.1. The issue tracking system for
+This is a draft of version 3.1. The issue tracking system for
 this release can be found at:
 
 https://github.com/eclipse-ee4j/jaxrs-api/issues
diff --git a/jaxrs-tck/pom.xml b/jaxrs-tck/pom.xml
index fd020d6..c7ee0a9 100644
--- a/jaxrs-tck/pom.xml
+++ b/jaxrs-tck/pom.xml
@@ -24,7 +24,7 @@
     <artifactId>jakarta.ws.rs-tck</artifactId>
     <version>3.1-SNAPSHOT</version>
 
-    <name>Jakarta REST TCK</name>
+    <name>Jakarta RESTful WS TCK</name>
     <description>Technology Compatibility Kit for Jakarta RESTful Web Services</description>
     <url>https://github.com/eclipse-ee4j/jaxrs-api</url>
 
diff --git a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/sebootstrap/SeBootstrapIT.java b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/sebootstrap/SeBootstrapIT.java
index 356f63f..23a5d14 100644
--- a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/sebootstrap/SeBootstrapIT.java
+++ b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/sebootstrap/SeBootstrapIT.java
@@ -264,7 +264,7 @@
      */
     @Test
     public final void shouldBootInstanceUsingSelfDetectedFreeIpPort()
-            throws InterruptedException, ExecutionException, IOException {
+            throws InterruptedException, ExecutionException {
         // given
         final int expectedResponse = mockInt();
         final Application application = new StaticApplication(expectedResponse);
@@ -300,7 +300,7 @@
      */
     @Test
     public final void shouldBootInstanceUsingImplementationsDefaultIpPort()
-            throws InterruptedException, ExecutionException, IOException {
+            throws InterruptedException, ExecutionException {
         // given
         final int expectedResponse = mockInt();
         final Application application = new StaticApplication(expectedResponse);
diff --git a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/uribuilder/UriBuilderIT.java b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/uribuilder/UriBuilderIT.java
index 98290a2..6271869 100644
--- a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/uribuilder/UriBuilderIT.java
+++ b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/uribuilder/UriBuilderIT.java
@@ -49,7 +49,7 @@
      */
     @Test
     public final void shouldBuildValidInstanceFromScratch()
-            throws InterruptedException, ExecutionException, URISyntaxException {
+            throws InterruptedException, ExecutionException {
         // given
         final UriBuilder uriBuilder = UriBuilder.newInstance();
 
diff --git a/jersey-tck/pom.xml b/jersey-tck/pom.xml
index 35dad66..1699011 100644
--- a/jersey-tck/pom.xml
+++ b/jersey-tck/pom.xml
@@ -7,7 +7,7 @@
     <version>3.1-SNAPSHOT</version>
     <packaging>pom</packaging>
 
-    <name>Jakarta REST Compliance</name>
+    <name>Jakarta RESTful WS Compliance</name>
     <description>This test verifies the compliance of Eclipse Jersey with Jakarta REST</description>
 
     <properties>
diff --git a/pom.xml b/pom.xml
index b2a8775..a5c553a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,13 +19,13 @@
     <artifactId>all</artifactId>
     <version>3.1-SNAPSHOT</version>
     <packaging>pom</packaging>
-    <name>Jakarta RESTful Web Service Multi-Module Project</name>
+    <name>Jakarta RESTful WS Project</name>
 
     <modules>
-	<module>jaxrs-api</module>
-	<module>jaxrs-spec</module>
-	<module>jaxrs-tck</module>
-	<module>examples</module>
-	<module>jersey-tck</module>
+        <module>jaxrs-api</module>
+        <module>jaxrs-spec</module>
+        <module>jaxrs-tck</module>
+        <module>examples</module>
+        <module>jersey-tck</module>
     </modules>
 </project>
