diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanProperty.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanProperty.java
index dad4122..dd4cff0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanProperty.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanProperty.java
@@ -26,7 +26,7 @@
  * This annotation is applied to public fields and public getter/setter methods of beans.
  *
  * <ul class='seealso'>
- * 	<li class='link'>{@doc juneau-marshall.Transforms.BeanPropertyAnnotation}
+ * 	<li class='link'>{@doc juneau-marshall.Transforms.BeanpAnnotation}
  * </ul>
  *
  * @deprecated Use {@link Beanp}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
index f60b649..2e81f8b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
@@ -26,7 +26,7 @@
  * This annotation is applied to public fields and public getter/setter methods of beans.
  *
  * <ul class='seealso'>
- * 	<li class='link'>{@doc juneau-marshall.Transforms.BeanPropertyAnnotation}
+ * 	<li class='link'>{@doc juneau-marshall.Transforms.BeanpAnnotation}
  * </ul>
  */
 @Documented
diff --git a/juneau-doc/docs/Fragments/about.html b/juneau-doc/docs/Fragments/about.html
deleted file mode 100644
index 55ee3e0..0000000
--- a/juneau-doc/docs/Fragments/about.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--
-/***************************************************************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *  
- *  http://www.apache.org/licenses/LICENSE-2.0
- *  
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations under the License.
- ***************************************************************************************************************************/
- -->
-<p>
-	Apache Juneau&trade; is a single cohesive Java ecosystem consisting of the following parts:
-</p>
-<table class='styled w800'>
-	<tr>
-		<th>Group</th><th>Component</th><th>Description</th>
-	</tr>
-	<tr class='dark bb'>
-		<td rowspan="5" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-core</td>
-		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-marshall'>juneau-marshall</a></td>
-		<td>
-			A universal toolkit for marshalling POJOs to a wide variety of content types using a common framework with no external library dependencies.
-		</td>
-	</tr>
-	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html##juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
-		<td>
-			Extended marshalling support for RDF languages.				
-		</td>
-	</tr>
-	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html##juneau-dto'>juneau-dto</a></td>
-		<td>
-			A variety of predefined DTOs for serializing and parsing languages such as HTML5, Swagger and ATOM.
-		</td>
-	</tr>
-	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html##juneau-config'>juneau-config</a></td>
-		<td>
-			A sophisticated configuration file API.
-		</td>
-	</tr>
-	<tr class='light bb'>
-		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-rest</td>
-		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html##juneau-rest-server'>juneau-rest-server</a></td>
-		<td>
-			A universal REST server API for creating Swagger-based self-documenting REST interfaces using POJOs, simply deployed as 
-			one or more top-level servlets in any Servlet 3.1.0+ container.
-		</td>
-	</tr>
-	<tr class='light bb'>
-		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html##juneau-rest-server-springboot'>juneau-rest-server-springboot</a></td>
-		<td>
-			Spring Boot integration support
-		</td>
-	</tr>
-	<tr class='light bb'>
-		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html##juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</a></td>
-		<td>
-			JAX/RS integration support.
-		</td>
-	</tr>
-	<tr class='light bb'>
-		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html##juneau-rest-client'>juneau-rest-client</a></td>
-		<td>
-			A universal REST client API for interacting with Juneau or 3rd-party REST interfaces using POJOs and proxy interfaces.
-		</td>
-	</tr>
-</table>
diff --git a/juneau-doc/docs/ReleaseNotes/5.1.0.09.html b/juneau-doc/docs/ReleaseNotes/5.1.0.09.html
index ad159cc..6997546 100644
--- a/juneau-doc/docs/ReleaseNotes/5.1.0.09.html
+++ b/juneau-doc/docs/ReleaseNotes/5.1.0.09.html
@@ -35,7 +35,7 @@
 			<li>References to <c>org.apache.juneau.rest.RestException</c> in {@link oaj.encoders.Encoder} class changed to <c>IOException</c>.
 		</ul>
 	<li>Changed configuration names for consistency with Jazz Framework.
-	<li>New {@link oajrc.RestClient#execute(HttpUriRequest)} method that allows subclasses to handle their own HTTP request execution.
+	<li><dc>RestClient.execute(HttpUriRequest)</dc> method that allows subclasses to handle their own HTTP request execution.
 	<li>Changes in <c>JazzRestClient</c> to handle introduction of SSO support in v6.
 	<li><c>&amp;plainText</c> debug feature was broken.
 	<li>Removed double-buffering in <c>RestRequest</c>.
diff --git a/juneau-doc/docs/ReleaseNotes/8.1.2.html b/juneau-doc/docs/ReleaseNotes/8.1.2.html
index 3f0d65b..6e379fe 100644
--- a/juneau-doc/docs/ReleaseNotes/8.1.2.html
+++ b/juneau-doc/docs/ReleaseNotes/8.1.2.html
@@ -16,7 +16,7 @@
 8.1.2 (TBD)
 
 <p>
-	Juneau 8.1.2 is ...
+	Juneau 8.1.2 is a minor release with mostly bug fixes.  Improvements around specifying bean properties have also been made.
 </p>
 
 <h5 class='topic w800'>juneau-marshall</h5>
@@ -24,10 +24,10 @@
 	<li>
 		Support for read-only and write-only properties.
 		<ul>
-			<li class='ja'>{@link oaja.Bean#bpro()}
-			<li class='ja'>{@link oaja.Bean#bpwo()}
-			<li class='ja'>{@link oaja.Beanp#ro()}
-			<li class='ja'>{@link oaja.Beanp#wo()}
+			<li class='ja'>{@link oaj.annotation.Bean#bpro()}
+			<li class='ja'>{@link oaj.annotation.Bean#bpwo()}
+			<li class='ja'>{@link oaj.annotation.Beanp#ro()}
+			<li class='ja'>{@link oaj.annotation.Beanp#wo()}
 			<li class='jf'>{@link oaj.BeanContext#BEAN_bpro}
 			<li class='jf'>{@link oaj.BeanContext#BEAN_bpwo}
 			<li class='jm'>{@link oaj.BeanContextBuilder#bpro(Map)}
@@ -36,8 +36,8 @@
 	<li>
 		New convenience methods:
 		<ul>	
-			<li class='jm'>{@link oaj.ObjectMap.parse(String)}
-			<li class='jm'>{@link oaj.ObjectList.parse(String)}
+			<li class='jm'>{@link oaj.ObjectMap#parse(CharSequence)}
+			<li class='jm'>{@link oaj.ObjectList#parse(CharSequence)}
 		</ul>
 	<li>
 		{@link oaj.marshall.CharMarshall} and {@link oaj.marshall.StreamMarshall} now have public constructors.
@@ -50,7 +50,7 @@
 <h5 class='topic w800'>juneau-rest-server</h5>
 <ul class='spaced-list'>
 	<li>
-		New method {@link oajr.RestResponse.setHeaderSafe(String,String)} to strip invalid characters from header values.
+		New method {@link oajr.RestResponse#setHeaderSafe(String,String)} to strip invalid characters from header values.
 	<li>
 		Fixed issues related to invalid characters being set on HTTP header values.
 </ul>
@@ -58,14 +58,10 @@
 <h5 class='topic w800'>juneau-rest-client</h5>
 <ul class='spaced-list'>
 	<li>
-		{@link oajr.RestClient} is now extendible.  The constructor has been made public and simplified to:
-		{@link oajr.RestClient(RestClientBuilder)}.
+		{@link oajrc.RestClient} is now extendible.  The constructor has been made public and simplified to:
+		{@link oajrc.RestClient#RestClient(RestClientBuilder)}.
 	<li>
-		Duplicate methods between {@link oajr.RestClientBuilder} and {@link org.apache.http.impl.client.HttpClientBuilder}
+		Duplicate methods between {@link oajrc.RestClientBuilder} and {@link org.apache.http.impl.client.HttpClientBuilder}
 		have been made deprecated on the former.  This eliminates the need to try to keep the two builder classes in
 		sync.
 </ul>
-
-<h5 class='topic w800'>juneau-examples</h5>
-<ul class='spaced-list'>
-</ul>
diff --git a/juneau-doc/docs/Topics/01.Introduction.html b/juneau-doc/docs/Topics/01.Introduction.html
index f50d1d8..5c53c77 100644
--- a/juneau-doc/docs/Topics/01.Introduction.html
+++ b/juneau-doc/docs/Topics/01.Introduction.html
@@ -22,83 +22,92 @@
 	<tr>
 		<th>Group</th><th>Component</th><th>Description</th>
 	</tr>
+	
 	<tr class='dark bb'>
-		<td rowspan="5" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-core</td>
-		<td class='code'><a class='doclink' href='#juneau-marshall'>juneau-marshall</a></td>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;'>Juneau Core</td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-marshall'>juneau-marshall</a></td>
 		<td>
 			A universal toolkit for marshalling POJOs to a wide variety of content types using a common framework with no external library dependencies.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
 		<td>
 			Extended marshalling support for RDF languages.				
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#juneau-dto'>juneau-dto</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-dto'>juneau-dto</a></td>
 		<td>
 			A variety of predefined DTOs for serializing and parsing languages such as HTML5, Swagger and ATOM.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#juneau-config'>juneau-config</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-config'>juneau-config</a></td>
 		<td>
 			A sophisticated configuration file API.
 		</td>
 	</tr>
+	
 	<tr class='light bb'>
-		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-rest</td>
-		<td class='code'><a class='doclink' href='#juneau-rest-server'>juneau-rest-server</a></td>
+		<td rowspan="5" style='text-align:center;font-weight:bold;padding:20px;'>Juneau REST</td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-server'>juneau-rest-server</a></td>
 		<td>
 			A universal REST server API for creating Swagger-based self-documenting REST interfaces using POJOs, simply deployed as 
 			one or more top-level servlets in any Servlet 3.1.0+ container.
 		</td>
 	</tr>
 	<tr class='light bb'>
-		<td class='code'><a class='doclink' href='#juneau-rest-server-springboot'>juneau-rest-server-springboot</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-server-springboot'>juneau-rest-server-springboot</a></td>
 		<td>
-			Spring Boot integration support
+			Spring boot integration support.
 		</td>
 	</tr>
 	<tr class='light bb'>
-		<td class='code'><a class='doclink' href='#juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</a></td>
 		<td>
 			JAX/RS integration support.
 		</td>
 	</tr>
 	<tr class='light bb'>
-		<td class='code'><a class='doclink' href='#juneau-rest-client'>juneau-rest-client</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-client'>juneau-rest-client</a></td>
 		<td>
 			A universal REST client API for interacting with Juneau or 3rd-party REST interfaces using POJOs and proxy interfaces.
 		</td>
 	</tr>
-	<tr class='dark bb'>
-		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-microservice</td>
-		<td class='code'><a class='doclink' href='#juneau-microservice-core'>juneau-microservice-core</a></td>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-mock'>juneau-rest-mock</a></td>
 		<td>
-			A base framework for defining microservices.
+			Mocking APIs for server-less end-to-end testing of REST server and client APIs.
+		</td>
+	</tr>
+
+	<tr class='dark bb'>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;'>Examples</td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-examples-core'>juneau-examples-core</a></td>
+		<td>
+			Juneau Core API examples.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#juneau-microservice-jetty'>juneau-microservice-jetty</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-examples-rest'>juneau-examples-rest</a></td>
 		<td>
-			A REST microservice API that combines all the features above with a simple configurable Jetty server for 
-			creating lightweight standalone REST interfaces that start up in milliseconds.
+			Juneau REST API examples.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#my-jetty-microservice'>my-jetty-microservice</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-examples-rest-jetty'>juneau-examples-rest-jetty</a></td>
 		<td>
-			Starter project template for Jetty-based microservices.
+			Juneau REST API examples using Jetty deployment.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#my-springboot-microservice'>my-springboot-microservice</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-examples-rest-springboot'>juneau-examples-rest-springboot</a></td>
 		<td>
-			Starter project template for Spring-boot-based microservices.
+			Juneau REST API examples using Spring Boot deployment.
 		</td>
 	</tr>
+
 </table>
 <p>
 	Questions via email to <a class='doclink' href='mailto:dev@juneau.apache.org?Subject=Apache%20Juneau%20question'>dev@juneau.apache.org</a> are always welcome.
diff --git a/juneau-doc/docs/Topics/01.Introduction/02.Components.html b/juneau-doc/docs/Topics/01.Introduction/02.Components.html
index 3df95ff..72d0ec4 100644
--- a/juneau-doc/docs/Topics/01.Introduction/02.Components.html
+++ b/juneau-doc/docs/Topics/01.Introduction/02.Components.html
@@ -26,7 +26,7 @@
 		<th>Category</th><th>Maven Artifacts</th><th>Description</th><th>Prereqs</th>
 	</tr>
 	<tr class='dark bb'>
-		<td rowspan="5" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-core</td>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-core</td>
 		<td class='code'><a class='doclink' href='#juneau-marshall'>juneau-marshall</a></td>
 		<td>Serializers and parsers for:
 			<ul style='margin:0px 10px;'>
diff --git a/juneau-doc/docs/Topics/11.juneau-microservice-core.html b/juneau-doc/docs/Topics/11.juneau-microservice-core.html
index b5ffb01..971ccc4 100644
--- a/juneau-doc/docs/Topics/11.juneau-microservice-core.html
+++ b/juneau-doc/docs/Topics/11.juneau-microservice-core.html
@@ -15,6 +15,11 @@
 
 juneau-microservice-core
 
+<div class='warn'>
+	The Juneau Microservice libraries are likely to be removed in Juneau 9.0 due to the popularity of the Spring Boot
+	framework for creating microservices.
+</div>
+
 <h5 class='figure'>Maven Dependency</h5>
 <p class='bpcode w500'>
 	<xt>&lt;dependency&gt;</xt>
diff --git a/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html b/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
index f961d00..b9fe542 100644
--- a/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
+++ b/juneau-doc/docs/Topics/12.juneau-microservice-jetty.html
@@ -15,6 +15,11 @@
 
 juneau-microservice-jetty
 
+<div class='warn'>
+	The Juneau Microservice libraries are likely to be removed in Juneau 9.0 due to the popularity of the Spring Boot
+	framework for creating microservices.
+</div>
+
 <h5 class='figure'>Maven Dependency</h5>
 <p class='bpcode w500'>
 	<xt>&lt;dependency&gt;</xt>
diff --git a/juneau-doc/docs/Topics/13.my-jetty-microservice.html b/juneau-doc/docs/Topics/13.my-jetty-microservice.html
index 5213f62..ba4bac1 100644
--- a/juneau-doc/docs/Topics/13.my-jetty-microservice.html
+++ b/juneau-doc/docs/Topics/13.my-jetty-microservice.html
@@ -15,6 +15,11 @@
 
 my-jetty-microservice
 
+<div class='warn'>
+	The Juneau Microservice libraries are likely to be removed in Juneau 9.0 due to the popularity of the Spring Boot
+	framework for creating microservices.
+</div>
+
 <h5 class='figure'>Starter Project Zip</h5>
 <p class='bpcode w500'>
 	my-jetty-microservice-{@property juneauVersion}.zip 
diff --git a/juneau-doc/docs/Topics/17.juneau-examples-rest-jetty.html b/juneau-doc/docs/Topics/17.juneau-examples-rest-jetty.html
index cecc824..a6eacc0 100644
--- a/juneau-doc/docs/Topics/17.juneau-examples-rest-jetty.html
+++ b/juneau-doc/docs/Topics/17.juneau-examples-rest-jetty.html
@@ -15,6 +15,11 @@
 
 juneau-examples-rest-jetty
 
+<div class='warn'>
+	The Juneau Microservice libraries are likely to be removed in Juneau 9.0 due to the popularity of the Spring Boot
+	framework for creating microservices.
+</div>
+
 <h5 class='figure'>Starter Project Zip</h5>
 <p class='bpcode w500'>
 	juneau-examples-rest-jetty-{@property juneauVersion}.zip 
diff --git a/juneau-doc/docs/overview_template.html b/juneau-doc/docs/overview_template.html
index 6b5b81b..61e0217 100644
--- a/juneau-doc/docs/overview_template.html
+++ b/juneau-doc/docs/overview_template.html
@@ -66,7 +66,100 @@
 		}
 	}
 </script>
-{@fragment about.html}
+<p>
+	Apache Juneau&trade; is a single cohesive Java ecosystem consisting of the following parts:
+</p>
+<table class='styled w800'>
+	<tr>
+		<th>Group</th><th>Component</th><th>Description</th>
+	</tr>
+	
+	<tr class='dark bb'>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;'>Juneau Core</td>
+		<td class='code'><a class='doclink' href='#juneau-marshall'>juneau-marshall</a></td>
+		<td>
+			A universal toolkit for marshalling POJOs to a wide variety of content types using a common framework with no external library dependencies.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
+		<td>
+			Extended marshalling support for RDF languages.				
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-dto'>juneau-dto</a></td>
+		<td>
+			A variety of predefined DTOs for serializing and parsing languages such as HTML5, Swagger and ATOM.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-config'>juneau-config</a></td>
+		<td>
+			A sophisticated configuration file API.
+		</td>
+	</tr>
+	
+	<tr class='light bb'>
+		<td rowspan="5" style='text-align:center;font-weight:bold;padding:20px;'>Juneau REST</td>
+		<td class='code'><a class='doclink' href='#juneau-rest-server'>juneau-rest-server</a></td>
+		<td>
+			A universal REST server API for creating Swagger-based self-documenting REST interfaces using POJOs, simply deployed as 
+			one or more top-level servlets in any Servlet 3.1.0+ container.
+		</td>
+	</tr>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='#juneau-rest-server-springboot'>juneau-rest-server-springboot</a></td>
+		<td>
+			Spring boot integration support.
+		</td>
+	</tr>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='#juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</a></td>
+		<td>
+			JAX/RS integration support.
+		</td>
+	</tr>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='#juneau-rest-client'>juneau-rest-client</a></td>
+		<td>
+			A universal REST client API for interacting with Juneau or 3rd-party REST interfaces using POJOs and proxy interfaces.
+		</td>
+	</tr>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='#juneau-rest-mock'>juneau-rest-mock</a></td>
+		<td>
+			Mocking APIs for server-less end-to-end testing of REST server and client APIs.
+		</td>
+	</tr>
+
+	<tr class='dark bb'>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;'>Examples</td>
+		<td class='code'><a class='doclink' href='#juneau-examples-core'>juneau-examples-core</a></td>
+		<td>
+			Juneau Core API examples.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-examples-rest'>juneau-examples-rest</a></td>
+		<td>
+			Juneau REST API examples.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-examples-rest-jetty'>juneau-examples-rest-jetty</a></td>
+		<td>
+			Juneau REST API examples using Jetty deployment.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-examples-rest-springboot'>juneau-examples-rest-springboot</a></td>
+		<td>
+			Juneau REST API examples using Spring Boot deployment.
+		</td>
+	</tr>
+
+</table>
 
 <a href='#TOC' id='TOC'></a><h5 class='toc'>Table of Contents</h5>
 {TOC-CONTENTS}
diff --git a/juneau-doc/juneau-doc.jar b/juneau-doc/juneau-doc.jar
index 54f1b90..2786447 100644
--- a/juneau-doc/juneau-doc.jar
+++ b/juneau-doc/juneau-doc.jar
Binary files differ
diff --git a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/DocGenerator.java b/juneau-doc/src/main/java/org/apache/juneau/doc/internal/DocGenerator.java
index d3100b8..3d05c1d 100644
--- a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/DocGenerator.java
+++ b/juneau-doc/src/main/java/org/apache/juneau/doc/internal/DocGenerator.java
@@ -173,9 +173,6 @@
 			String tocRn2 = new StringBuilder().append("<!--").append(COPYRIGHT).append("\n-->\n").append(tocRn).toString();
 			IOUtils.writeFile("src/main/javadoc/resources/fragments/rntoc.html", tocRn2);
 
-			for (File f : new File("docs/Fragments").listFiles())
-				Files.copy(f.toPath(), Paths.get("src/main/javadoc/resources/fragments", f.getName()), StandardCopyOption.REPLACE_EXISTING);
-
 			info("Copied doc-files in {0}ms", System.currentTimeMillis()-startTime);
 
 		} catch (IOException e) {
diff --git a/juneau-doc/src/main/javadoc/overview.html b/juneau-doc/src/main/javadoc/overview.html
index 079dee4..1f89a53 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -66,7 +66,100 @@
 		}
 	}
 </script>
-{@fragment about.html}
+<p>
+	Apache Juneau&trade; is a single cohesive Java ecosystem consisting of the following parts:
+</p>
+<table class='styled w800'>
+	<tr>
+		<th>Group</th><th>Component</th><th>Description</th>
+	</tr>
+	
+	<tr class='dark bb'>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;'>Juneau Core</td>
+		<td class='code'><a class='doclink' href='#juneau-marshall'>juneau-marshall</a></td>
+		<td>
+			A universal toolkit for marshalling POJOs to a wide variety of content types using a common framework with no external library dependencies.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
+		<td>
+			Extended marshalling support for RDF languages.				
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-dto'>juneau-dto</a></td>
+		<td>
+			A variety of predefined DTOs for serializing and parsing languages such as HTML5, Swagger and ATOM.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-config'>juneau-config</a></td>
+		<td>
+			A sophisticated configuration file API.
+		</td>
+	</tr>
+	
+	<tr class='light bb'>
+		<td rowspan="5" style='text-align:center;font-weight:bold;padding:20px;'>Juneau REST</td>
+		<td class='code'><a class='doclink' href='#juneau-rest-server'>juneau-rest-server</a></td>
+		<td>
+			A universal REST server API for creating Swagger-based self-documenting REST interfaces using POJOs, simply deployed as 
+			one or more top-level servlets in any Servlet 3.1.0+ container.
+		</td>
+	</tr>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='#juneau-rest-server-springboot'>juneau-rest-server-springboot</a></td>
+		<td>
+			Spring boot integration support.
+		</td>
+	</tr>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='#juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</a></td>
+		<td>
+			JAX/RS integration support.
+		</td>
+	</tr>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='#juneau-rest-client'>juneau-rest-client</a></td>
+		<td>
+			A universal REST client API for interacting with Juneau or 3rd-party REST interfaces using POJOs and proxy interfaces.
+		</td>
+	</tr>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='#juneau-rest-mock'>juneau-rest-mock</a></td>
+		<td>
+			Mocking APIs for server-less end-to-end testing of REST server and client APIs.
+		</td>
+	</tr>
+
+	<tr class='dark bb'>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;'>Examples</td>
+		<td class='code'><a class='doclink' href='#juneau-examples-core'>juneau-examples-core</a></td>
+		<td>
+			Juneau Core API examples.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-examples-rest'>juneau-examples-rest</a></td>
+		<td>
+			Juneau REST API examples.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-examples-rest-jetty'>juneau-examples-rest-jetty</a></td>
+		<td>
+			Juneau REST API examples using Jetty deployment.
+		</td>
+	</tr>
+	<tr class='dark bb'>
+		<td class='code'><a class='doclink' href='#juneau-examples-rest-springboot'>juneau-examples-rest-springboot</a></td>
+		<td>
+			Juneau REST API examples using Spring Boot deployment.
+		</td>
+	</tr>
+
+</table>
 
 <a href='#TOC' id='TOC'></a><h5 class='toc'>Table of Contents</h5>
 <ol class='toc'>
@@ -103,7 +196,7 @@
 			<li><p class=''><a class='doclink' href='#juneau-marshall.Transforms.TemplatedSwaps'>Templated Swaps</a></p>
 			<li><p class=''><a class='doclink' href='#juneau-marshall.Transforms.SurrogateClasses'>Surrogate Classes</a></p>
 			<li><p class=''><a class='doclink' href='#juneau-marshall.Transforms.BeanAnnotation'>@Bean Annotation</a></p>
-			<li><p class=''><a class='doclink' href='#juneau-marshall.Transforms.BeanPropertyAnnotation'>@BeanProperty Annotation</a></p>
+			<li><p class='updated'><a class='doclink' href='#juneau-marshall.Transforms.BeanpAnnotation'>@Beanp Annotation</a></p>
 			<li><p class=''><a class='doclink' href='#juneau-marshall.Transforms.BeanConstructorAnnotation'>@BeanConstructor Annotation</a></p>
 			<li><p class=''><a class='doclink' href='#juneau-marshall.Transforms.BeanIgnoreAnnotation'>@BeanIgnore Annotation</a></p>
 			<li><p class=''><a class='doclink' href='#juneau-marshall.Transforms.NamePropertyAnnotation'>@NameProperty Annotation</a></p>
@@ -488,83 +581,92 @@
 	<tr>
 		<th>Group</th><th>Component</th><th>Description</th>
 	</tr>
+	
 	<tr class='dark bb'>
-		<td rowspan="5" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-core</td>
-		<td class='code'><a class='doclink' href='#juneau-marshall'>juneau-marshall</a></td>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;'>Juneau Core</td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-marshall'>juneau-marshall</a></td>
 		<td>
 			A universal toolkit for marshalling POJOs to a wide variety of content types using a common framework with no external library dependencies.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-marshall-rdf'>juneau-marshall-rdf</a></td>
 		<td>
 			Extended marshalling support for RDF languages.				
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#juneau-dto'>juneau-dto</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-dto'>juneau-dto</a></td>
 		<td>
 			A variety of predefined DTOs for serializing and parsing languages such as HTML5, Swagger and ATOM.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#juneau-config'>juneau-config</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-config'>juneau-config</a></td>
 		<td>
 			A sophisticated configuration file API.
 		</td>
 	</tr>
+	
 	<tr class='light bb'>
-		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-rest</td>
-		<td class='code'><a class='doclink' href='#juneau-rest-server'>juneau-rest-server</a></td>
+		<td rowspan="5" style='text-align:center;font-weight:bold;padding:20px;'>Juneau REST</td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-server'>juneau-rest-server</a></td>
 		<td>
 			A universal REST server API for creating Swagger-based self-documenting REST interfaces using POJOs, simply deployed as 
 			one or more top-level servlets in any Servlet 3.1.0+ container.
 		</td>
 	</tr>
 	<tr class='light bb'>
-		<td class='code'><a class='doclink' href='#juneau-rest-server-springboot'>juneau-rest-server-springboot</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-server-springboot'>juneau-rest-server-springboot</a></td>
 		<td>
-			Spring Boot integration support
+			Spring boot integration support.
 		</td>
 	</tr>
 	<tr class='light bb'>
-		<td class='code'><a class='doclink' href='#juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-server-jaxrs'>juneau-rest-server-jaxrs</a></td>
 		<td>
 			JAX/RS integration support.
 		</td>
 	</tr>
 	<tr class='light bb'>
-		<td class='code'><a class='doclink' href='#juneau-rest-client'>juneau-rest-client</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-client'>juneau-rest-client</a></td>
 		<td>
 			A universal REST client API for interacting with Juneau or 3rd-party REST interfaces using POJOs and proxy interfaces.
 		</td>
 	</tr>
-	<tr class='dark bb'>
-		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-microservice</td>
-		<td class='code'><a class='doclink' href='#juneau-microservice-core'>juneau-microservice-core</a></td>
+	<tr class='light bb'>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-rest-mock'>juneau-rest-mock</a></td>
 		<td>
-			A base framework for defining microservices.
+			Mocking APIs for server-less end-to-end testing of REST server and client APIs.
+		</td>
+	</tr>
+
+	<tr class='dark bb'>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;'>Examples</td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-examples-core'>juneau-examples-core</a></td>
+		<td>
+			Juneau Core API examples.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#juneau-microservice-jetty'>juneau-microservice-jetty</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-examples-rest'>juneau-examples-rest</a></td>
 		<td>
-			A REST microservice API that combines all the features above with a simple configurable Jetty server for 
-			creating lightweight standalone REST interfaces that start up in milliseconds.
+			Juneau REST API examples.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#my-jetty-microservice'>my-jetty-microservice</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-examples-rest-jetty'>juneau-examples-rest-jetty</a></td>
 		<td>
-			Starter project template for Jetty-based microservices.
+			Juneau REST API examples using Jetty deployment.
 		</td>
 	</tr>
 	<tr class='dark bb'>
-		<td class='code'><a class='doclink' href='#my-springboot-microservice'>my-springboot-microservice</a></td>
+		<td class='code'><a class='doclink' href='http://juneau.apache.org/site/apidocs-{@property juneauVersion}/overview-summary.html#juneau-examples-rest-springboot'>juneau-examples-rest-springboot</a></td>
 		<td>
-			Starter project template for Spring-boot-based microservices.
+			Juneau REST API examples using Spring Boot deployment.
 		</td>
 	</tr>
+
 </table>
 <p>
 	Questions via email to <a class='doclink' href='mailto:dev@juneau.apache.org?Subject=Apache%20Juneau%20question'>dev@juneau.apache.org</a> are always welcome.
@@ -636,7 +738,7 @@
 		<th>Category</th><th>Maven Artifacts</th><th>Description</th><th>Prereqs</th>
 	</tr>
 	<tr class='dark bb'>
-		<td rowspan="5" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-core</td>
+		<td rowspan="4" style='text-align:center;font-weight:bold;padding:20px;' class='code'>juneau-core</td>
 		<td class='code'><a class='doclink' href='#juneau-marshall'>juneau-marshall</a></td>
 		<td>Serializers and parsers for:
 			<ul style='margin:0px 10px;'>
@@ -1425,9 +1527,10 @@
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_beansRequireSettersForGetters BEAN_beansRequireSettersForGetters}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_beansRequireSomeProperties BEAN_beansRequireSomeProperties}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_beanTypePropertyName BEAN_beanTypePropertyName}
+		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_bpi BEAN_bpi}
+		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_bpx BEAN_bpx}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_debug BEAN_debug}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_examples BEAN_examples}
-		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_excludeProperties BEAN_excludeProperties}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_fluentSetters BEAN_fluentSetters}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_ignoreInvocationExceptionsOnGetters BEAN_ignoreInvocationExceptionsOnGetters}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_ignoreInvocationExceptionsOnSetters BEAN_ignoreInvocationExceptionsOnSetters}
@@ -1435,7 +1538,6 @@
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_ignoreUnknownBeanProperties BEAN_ignoreUnknownBeanProperties}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_ignoreUnknownNullBeanProperties BEAN_ignoreUnknownNullBeanProperties}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_implClasses BEAN_implClasses}
-		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_includeProperties BEAN_includeProperties}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_locale BEAN_locale}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_mediaType BEAN_mediaType}
 		<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_notBeanClasses BEAN_notBeanClasses}
@@ -1546,7 +1648,7 @@
 		properties={
 			<ja>@Property</ja>(name=<jsf>WSERIALIZER_quoteChar</jsf>, value=<js>"'"</js>),
 			<ja>@Property</ja>(name=<jsf>RDF_rdfxml_tab</jsf>, value=<js>"5"</js>),
-			<ja>@Property</ja>(name<jsf>RDF_addRootProperty</jsf>, value=<js>"true"</js>),
+			<ja>@Property</ja>(name=<jsf>RDF_addRootProperty</jsf>, value=<js>"true"</js>),
 			<ja>@Property</ja>(name=<jsf>BEAN_examples</jsf>, value=<js>"{'org.apache.juneau.dto.atom.Feed': $F{AtomFeedResource_example.json}}"</js>)
 		}
 		...
@@ -2291,7 +2393,7 @@
 	 * A simple HTML form template whose serialized form is an HTML5 Form object.
 	 * This time with parsing support.
 	 */</jd>
-	<ja>@Bean</ja>(beanDictionary=HtmlBeanDictionary.<jk>class</jk>)
+	<ja>@Bean</ja>(dictionary=HtmlBeanDictionary.<jk>class</jk>)
 	<jk>public class</jk> FormTemplate {
 		
 		<jk>private</jk> String <jf>action</jf>;
@@ -2538,7 +2640,7 @@
 		<jk>private</jk> MyPojo <jf>myPojo</jf>;
 	
 		<jc>// Swap applied to bean property.	
-		<ja>@BeanProperty</ja>(swap=MyPojoSwap.<jk>class</jk>)
+		<ja>@Beanp</ja>(swap=MyPojoSwap.<jk>class</jk>)
 		<jk>public</jk> MyPojo getMyPojo() {
 			<jk>return</jk> <jf>myPojo</jf>;
 		}
@@ -2553,7 +2655,7 @@
 <p class='bpcode w800'>
 	<jk>public class</jk> MyBean {
 
-		<ja>@BeanProperty</ja>(swap=MyPojoSwap.<jk>class</jk>)
+		<ja>@Beanp</ja>(swap=MyPojoSwap.<jk>class</jk>)
 		<jk>private</jk> MyPojo <jf>myPojo</jf>;
 	
 		<jk>public</jk> MyPojo getMyPojo() {
@@ -2691,17 +2793,17 @@
 <p class='bpcode w800'>
 	<jc>// Address class with only street/city/state properties (in that order).</jc>
 	<jc>// All other properties are ignored.</jc>
-	<ja>@Bean</ja>(properties=<js>"street,city,state"</js>)
+	<ja>@Bean</ja>(bpi=<js>"street,city,state"</js>)
 	<jk>public class</jk> Address { ... }
 </p>
 <p> 
-	Bean properties can be excluded using the {@link org.apache.juneau.annotation.Bean#excludeProperties() @Bean(excludeProperties)}
+	Bean properties can be excluded using the {@link org.apache.juneau.annotation.Bean#bpx() @Bean(bpx)}
 	annotation.
 </p>
 <p class='bpcode w800'>
 	<jc>// Address class with only street/city/state properties (in that order).</jc>
 	<jc>// All other properties are ignored.</jc>
-	<ja>@Bean</ja>(excludeProperties=<js>"city,state"</js>})
+	<ja>@Bean</ja>(bpx=<js>"city,state"</js>})
 	<jk>public class</jk> Address { ... }
 </p>
 <p>
@@ -2816,19 +2918,19 @@
 
 <!-- ==================================================================================================== -->
 
-<h4 class='topic ' onclick='toggle(this)'><a href='#juneau-marshall.Transforms.BeanPropertyAnnotation' id='juneau-marshall.Transforms.BeanPropertyAnnotation'>2.11.10 - @BeanProperty Annotation</a></h4>
-<div class='topic'><!-- START: 2.11.10 - juneau-marshall.Transforms.BeanPropertyAnnotation -->
+<h4 class='topic updated' onclick='toggle(this)'><a href='#juneau-marshall.Transforms.BeanpAnnotation' id='juneau-marshall.Transforms.BeanpAnnotation'>2.11.10 - @Beanp Annotation</a></h4>
+<div class='topic'><!-- START: 2.11.10 - juneau-marshall.Transforms.BeanpAnnotation -->
 <p>
-	The {@link org.apache.juneau.annotation.BeanProperty @BeanProperty} annotation is used to tailor how 
+	The {@link org.apache.juneau.annotation.Beanp @Beanp} annotation is used to tailor how 
 	individual bean properties are interpreted by the framework.
 </p>
 <p>
-	The {@link org.apache.juneau.annotation.BeanProperty#name() @BeanProperty(name)} annotation
+	The {@link org.apache.juneau.annotation.Beanp#name() @Beanp(name)} annotation
 	is used to override the name of the bean property.
 </p>
 <p class='bpcode w800'>
 	<jk>public class</jk> MyBean {
-		<ja>@BeanProperty</ja>(name=<js>"Bar"</js>)
+		<ja>@Beanp</ja>(name=<js>"Bar"</js>)
 		<jk>public</jk> String getFoo() {...}
 	}
 </p>
@@ -2848,7 +2950,7 @@
 </p>
 <p class='bpcode w800'>
 	<jk>public class</jk> MyBean {
-		<ja>@BeanProperty</ja>
+		<ja>@Beanp</ja>
 		<jk>protected</jk> String getFoo() {...}
 	}
 </p>
@@ -2868,7 +2970,7 @@
 	<jc>// The field name can be anything.</jc>
 	<jk>public class</jk> BeanWithDynaField {
 
-		<ja>@BeanProperty</ja>(name=<js>"*"</js>)
+		<ja>@Beanp</ja>(name=<js>"*"</js>)
 		<jk>public</jk> Map&lt;String,Object&gt; extraStuff = <jk>new</jk> LinkedHashMap&lt;String,Object&gt;();
 	}
 
@@ -2878,12 +2980,12 @@
 	<jc>// Setter must take in two arguments, a String and Object.</jc>
 	<jk>public class</jk> BeanWithDynaMethods {
 
-		<ja>@BeanProperty</ja>(name=<js>"*"</js>)
+		<ja>@Beanp</ja>(name=<js>"*"</js>)
 		<jk>public</jk> Map&lt;String,Object&gt; getMyExtraStuff() {
 			...
 		}
 
-		<ja>@BeanProperty</ja>(name=<js>"*"</js>)
+		<ja>@Beanp</ja>(name=<js>"*"</js>)
 		<jk>public void</jk> setAnExtraField(String name, Object value) {
 			...
 		}
@@ -2893,7 +2995,7 @@
 	<jc>// Properties will be added through the getter.</jc>
 	<jk>public class</jk> BeanWithDynaGetterOnly {
 
-		<ja>@BeanProperty</ja>(name=<js>"*"</js>)
+		<ja>@Beanp</ja>(name=<js>"*"</js>)
 		<jk>public</jk> Map&lt;String,Object&gt; getMyExtraStuff() {
 			...
 		}
@@ -2907,7 +3009,7 @@
 	<jc>// A serializable type other than Object.</jc>
 	<jk>public class</jk> BeanWithDynaFieldWithListValues {
 
-		<ja>@BeanProperty</ja>(name=<js>"*"</js>)
+		<ja>@Beanp</ja>(name=<js>"*"</js>)
 		<jk>public</jk> Map&lt;String,List&lt;String&gt;&gt; getMyExtraStuff() {
 			...
 		}
@@ -2916,7 +3018,7 @@
 	<jc>// A swapped value.</jc>
 	<jk>public class</jk> BeanWithDynaFieldWithSwappedValues {
 
-		<ja>@BeanProperty</ja>(name=<js>"*"</js>, swap=TemporalCalendarSwap.IsoOffsetDateTime.<jk>class</jk>)
+		<ja>@Beanp</ja>(name=<js>"*"</js>, swap=TemporalCalendarSwap.IsoOffsetDateTime.<jk>class</jk>)
 		<jk>public</jk> Map&lt;String,Calendar&gt; getMyExtraStuff() {
 			...
 		}
@@ -2928,20 +3030,20 @@
 	that don't fit into existing properties.
 </div>
 <p>
-	The {@link org.apache.juneau.annotation.BeanProperty#value() @BeanProperty(value)} annotation
-	is a synonym for {@link org.apache.juneau.annotation.BeanProperty#name() @BeanProperty(name)}.
+	The {@link org.apache.juneau.annotation.Beanp#value() @Beanp(value)} annotation
+	is a synonym for {@link org.apache.juneau.annotation.Beanp#name() @Beanp(name)}.
 	Use it in cases where you're only specifying a name so that you can shorten your annotation.
 </p>
 <p>
 	The following annotations are equivalent:
 </p>
 <p class='bpcode w800'>
-	<ja>@BeanProperty</ja>(name=<js>"foo"</js>)
+	<ja>@Beanp</ja>(name=<js>"foo"</js>)
 
-	<ja>@BeanProperty</ja>(<js>"foo"</js>)
+	<ja>@Beanp</ja>(<js>"foo"</js>)
 </p>
 <p>
-	The {@link org.apache.juneau.annotation.BeanProperty#type() @BeanProperty(type)} annotation
+	The {@link org.apache.juneau.annotation.Beanp#type() @Beanp(type)} annotation
 	is used to identify a specialized class type for a generalized property.
 	Normally the type is inferred through reflection of the field type or getter return type.
 	However, you'll want to specify this value if you're parsing beans where the bean property class 
@@ -2955,12 +3057,12 @@
 	<jk>public class</jk> MyBean {
 
 		<jc>// Identify concrete type as a HashMap.</jc>
-		<ja>@BeanProperty</ja>(type=HashMap.<jk>class</jk>)
+		<ja>@Beanp</ja>(type=HashMap.<jk>class</jk>)
 		<jk>public</jk> Map <jf>p1</jf>;
 	}
 </p>
 <p>
-	The {@link org.apache.juneau.annotation.BeanProperty#params() @BeanProperty(params)} annotation
+	The {@link org.apache.juneau.annotation.BeanProperty#params() @Beanp(params)} annotation
 	is for bean properties of type map or collection.
 	It's used to identify the class types of the contents of the bean property object when
 	the general parameter types are interfaces or abstract classes.
@@ -2969,12 +3071,12 @@
 	<jk>public class</jk> MyBean {
 
 		<jc>// This is a HashMap&lt;String,Integer&gt;.</jc>
-		<ja>@BeanProperty</ja>(type=HashMap.<jk>class</jk>, params={String.<jk>class</jk>,Integer.<jk>class</jk>})
+		<ja>@Beanp</ja>(type=HashMap.<jk>class</jk>, params={String.<jk>class</jk>,Integer.<jk>class</jk>})
 		<jk>public</jk> Map <jf>p1</jf>;
 	}
 </p>
 <p>
-	The {@link org.apache.juneau.annotation.BeanProperty#properties() @BeanProperty(properties)} 
+	The {@link org.apache.juneau.annotation.Beanp#bpi() @Beanp(bpi)} 
 	annotation is used to limit which child properties are rendered by the serializers.
 	It can be used on any of the following bean property types:
 </p>
@@ -2988,7 +3090,7 @@
 	<jk>public class</jk> MyClass {
 
 		<jc>// Only render 'f1' when serializing this bean property.</jc>
-		<ja>@BeanProperty</ja>(properties={<js>"f1"</js>})
+		<ja>@Beanp</ja>(bpi={<js>"f1"</js>})
 		<jk>public</jk> MyChildClass x1 = <jk>new</jk> MyChildClass();
 	}
 
@@ -3001,15 +3103,15 @@
 	String json = JsonSerializer.<jsf>DEFAULT</jsf>.serialize(<jk>new</jk> MyClass());
 </p>
 <p>
-	The {@link org.apache.juneau.annotation.BeanProperty#format() @BeanProperty(format)} 
+	The {@link org.apache.juneau.annotation.Beanp#format() @Beanp(format)} 
 	annotation specifies a String format for converting a bean property value to a formatted string.
 </p>
 <p class='bpcode w800'>
 	<jc>// Serialize a float as a string with 2 decimal places.</jc>
-	<ja>@BeanProperty</ja>(format=<js>"$%.2f"</js>)
+	<ja>@Beanp</ja>(format=<js>"$%.2f"</js>)
 	<jk>public float</jk> <jf>price</jf>;
 </p>
-</div><!-- END: 2.11.10 - juneau-marshall.Transforms.BeanPropertyAnnotation -->
+</div><!-- END: 2.11.10 - juneau-marshall.Transforms.BeanpAnnotation -->
 
 <!-- ==================================================================================================== -->
 
@@ -3219,13 +3321,13 @@
 			
 			<jc>// Bean property setters.</jc>
 			
-			<ja>@BeanProperty</ja>
+			<ja>@Beanp</ja>
 			<jk>public</jk> MyBeanBuilder foo(String foo) {
 				<jk>this</jk>.<jf>foo</jf> = foo;
 				<jk>return this</jk>;
 			}
 			
-			<ja>@BeanProperty</ja>
+			<ja>@Beanp</ja>
 			<jk>public</jk> MyBeanBuilder bar(<jk>int</jk> bar) {
 				<jk>this</jk>.<jf>bar</jf> = bar;
 				<jk>return this</jk>;
@@ -3294,7 +3396,7 @@
 </p>
 <p>
 	In practice, it's usually simpler to use the {@link org.apache.juneau.annotation.Bean @Bean} and 
-	{@link org.apache.juneau.annotation.BeanProperty @BeanProperty} annotations on your bean classes.
+	{@link org.apache.juneau.annotation.Beanp @Beanp} annotations on your bean classes.
 	However, bean filters make it possible to accomplish the same when you can't add annotations
 	to existing code.
 </p>
@@ -3305,7 +3407,7 @@
 	In the previous examples, we defined this bean annotation:
 </p>
 <p class='bpcode w800'>
-	<ja>@Bean</ja>(properties=<js>"street,city,state"</js>)
+	<ja>@Bean</ja>(bpi=<js>"street,city,state"</js>)
 	<jk>public class</jk> Address { ... }
 </p>
 <p>
@@ -3316,7 +3418,7 @@
 		
 		<jc>// Must provide a no-arg constructor!</jc>
 		<jk>public</jk> AddressFilter() {
-			includeProperties(<js>"street,city,state"</js>);  <jc>// The properties we want exposed.</jc>
+			bpi(<js>"street,city,state"</js>);  <jc>// The properties we want exposed.</jc>
 		}
 	}	
 </p>		
@@ -3604,7 +3706,7 @@
  	<ja>@Bean</ja>(typeName=<js>"foo"</js>)
  	<jk>public class</jk> Foo {
  		<jc>// A bean property where the object types cannot be inferred since it's an Object[].</jc>
- 		<ja>@BeanProperty</ja>(beanDictionary={Bar.<jk>class</jk>,Baz.<jk>class</jk>})
+ 		<ja>@Beanp</ja>(dictionary={Bar.<jk>class</jk>,Baz.<jk>class</jk>})
  		<jk>public</jk> Object[] x = <jk>new</jk> Object[]{<jk>new</jk> Bar(), <jk>new</jk> Baz()};
  	}
  		
@@ -3647,13 +3749,13 @@
 	Bean dictionaries are registered through the following:
 </p>
 <ul class='javatree'>
-	<li class='ja'>{@link org.apache.juneau.annotation.BeanProperty#beanDictionary() BeanProperty(beanDictionary)} 
+	<li class='ja'>{@link org.apache.juneau.annotation.Beanp#dictionary() Beanp(dictionary)} 
 		- On individual bean properties through the annotation.
-	<li class='ja'>{@link org.apache.juneau.annotation.Bean#beanDictionary() Bean(beanDictionary)} 
+	<li class='ja'>{@link org.apache.juneau.annotation.Bean#dictionary() Bean(dictionary)} 
 		- On all properties on a bean and all subclasses.
 	<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_beanDictionary} 
 		- Configuration property on serializers and parsers.
-	<li class='jm'>{@link org.apache.juneau.BeanContextBuilder#beanDictionary(Object...)}
+	<li class='jm'>{@link org.apache.juneau.BeanContextBuilder#dictionary(Object...)}
 		- Builder method on serializers and parsers.
 </ul>
 <p>
@@ -3669,7 +3771,7 @@
 	<jc>// Create a parser and tell it which classes to try to resolve.</jc>
 	ReaderParser p = JsonParser
 		.<jsm>create</jsm>()
-		.beanDictionary(Foo.<jk>class</jk>, Bar.<jk>class</jk>)
+		.dictionary(Foo.<jk>class</jk>, Bar.<jk>class</jk>)
 		.build();
 	
 	<jc>// Same, but use property.</jc>
@@ -3682,7 +3784,7 @@
 	<jc>// Use the predefined HTML5 bean dictionary which is a BeanDictionaryList.</jc>
 	ReaderParser p = HtmlParser
 		.<jsm>create</jsm>()
-		.beanDictionary(HtmlBeanDictionary.<jk>class</jk>)
+		.dictionary(HtmlBeanDictionary.<jk>class</jk>)
 		.build();
 </p>
 <p>
@@ -3701,7 +3803,7 @@
 	be inherited by all subclasses.
 </p>
 <p class='bpcode w800'>
-	<ja>@Bean</ja>(typePropertyName=<js>"mytype"</js>, beanDictionary={MyClass1.<jk>class</jk>,MyClass2.<jk>class</jk>})
+	<ja>@Bean</ja>(typePropertyName=<js>"mytype"</js>, dictionary={MyClass1.<jk>class</jk>,MyClass2.<jk>class</jk>})
 	<jk>public interface</jk> MyInterface {...}
 
 	<ja>@Bean</ja>(typeName=<js>"C1"</js>)
@@ -3751,7 +3853,7 @@
 <p class='bpcode w800'>
 	<jc>// Abstract superclass</jc>
 	<ja>@Bean</ja>(
-		beanDictionary={A1.<jk>class</jk>, A2.<jk>class</jk>}
+		dictionary={A1.<jk>class</jk>, A2.<jk>class</jk>}
 	)
 	<jk>public abstract class</jk> A {
 		<jk>public</jk> String <jf>f0</jf> = <js>"f0"</js>;
@@ -4245,7 +4347,7 @@
 			<br><ja>@JsonSetter</ja>
 		</td>
 		<td>
-			{@link org.apache.juneau.annotation.BeanProperty @BeanProperty}
+			{@link org.apache.juneau.annotation.Beanp @Beanp}
 		</td>
 	</tr>
 	<tr>
@@ -4254,7 +4356,7 @@
 			<br><ja>@JsonAnySetter</ja>
 		</td>
 		<td>
-			{@link org.apache.juneau.annotation.BeanProperty#name() @BeanProperty(name="*")}
+			{@link org.apache.juneau.annotation.Beanp#name() @Beanp(name="*")}
 		</td>
 	</tr>
 	<tr>
@@ -4269,7 +4371,7 @@
 	<tr>
 		<td><c><ja>@JsonIgnoreProperties</ja>({...})</c></td>
 		<td>
-			{@link org.apache.juneau.annotation.Bean#excludeProperties @Bean(excludeProperties="...")}
+			{@link org.apache.juneau.annotation.Bean#bpx @Bean(bpx="...")}
 		</td>
 	</tr>
 	<tr>
@@ -4320,7 +4422,7 @@
 	<tr>
 		<td><ja>@JsonPropertyOrder</ja></td>
 		<td>
-			{@link org.apache.juneau.annotation.Bean#properties @Bean(properties="...")}
+			{@link org.apache.juneau.annotation.Bean#properties @Bean(bpi="...")}
 			<br>{@link org.apache.juneau.annotation.Bean#sort @Bean(sort=x)}
 		</td>
 	</tr>
@@ -5796,8 +5898,8 @@
 </div>
 <p>
 	Beans with type names are often used in conjunction with the 
-	{@link org.apache.juneau.annotation.Bean#beanDictionary() @Bean(beanDictionary)} and 
-	{@link org.apache.juneau.annotation.BeanProperty#beanDictionary() @BeanProperty(beanDictionary)} 
+	{@link org.apache.juneau.annotation.Bean#dictionary() @Bean(dictionary)} and 
+	{@link org.apache.juneau.annotation.Beanp#dictionary() @Beanp(dictionary)} 
 	annotations so that the beans can be resolved at parse time.  
 	These annotations are not necessary during serialization, but are needed during parsing in order to 
 	resolve the bean types.
@@ -5817,7 +5919,7 @@
 	</tr>
 	<tr>
 		<td class='code'>
-	<ja>@Bean</ja>(beanDictionary={BeanX.<jk>class</jk>})
+	<ja>@Bean</ja>(dictionary={BeanX.<jk>class</jk>})
 	<jk>class</jk> BeanWithArrayPropertiesWithTypeNames {
 		<jk>public</jk> BeanX[] b1 = <jk>new</jk> BeanX[]{ 
 			<jk>new</jk> BeanX() 
@@ -5852,7 +5954,7 @@
 	</tr>				
 	<tr>
 		<td class='code'>
-	<ja>@Bean</ja>(beanDictionary={BeanX.<jk>class</jk>})
+	<ja>@Bean</ja>(dictionary={BeanX.<jk>class</jk>})
 	<jk>class</jk> BeanWith2dArrayPropertiesWithTypeNames {
 		<jk>public</jk> BeanX[][] b1 = <jk>new</jk> BeanX[][]{{
 			<jk>new</jk> BeanX()
@@ -5893,7 +5995,7 @@
 	</tr>		
 	<tr>
 		<td class='code'>
-	<ja>@Bean</ja>(beanDictionary={BeanX.<jk>class</jk>})
+	<ja>@Bean</ja>(dictionary={BeanX.<jk>class</jk>})
 	<jk>class</jk> BeanWithMapPropertiesWithTypeNames {
 		<jk>public</jk> Map&lt;String,BeanX&gt; b1 = <jk>new</jk> HashMap&lt;&gt;() {{ 
 			put(<js>"k1"</js>, <jk>new</jk> BeanX()); 
@@ -5930,7 +6032,7 @@
 	</tr>
 	<tr>
 		<td class='code'>
-	<ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
+	<ja>@Bean</ja>(dictionary={A.<jk>class</jk>})
 	<jk>class</jk> BeanWithAbstractFields {
 		<jk>public</jk> A a = <jk>new</jk> A();
 		<jk>public</jk> IA ia = <jk>new</jk> A();
@@ -5966,7 +6068,7 @@
 	</tr>
 	<tr>
 		<td class='code'>
-	<ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
+	<ja>@Bean</ja>(dictionary={A.<jk>class</jk>})
 	<jk>class</jk> BeanWithAbstractArrayFields {
 		<jk>public</jk> A[] a = <jk>new</jk> A[]{<jk>new</jk> A()};
 		<jk>public</jk> IA[] ia1 = <jk>new</jk> A[]{<jk>new</jk> A()};
@@ -6019,7 +6121,7 @@
 	</tr>
 	<tr>
 		<td class='code'>
-	<ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
+	<ja>@Bean</ja>(dictionary={A.<jk>class</jk>})
 	<jk>class</jk> BeanWithAbstractMapFields {
 		<jk>public</jk> Map&lt;String,A&gt; a = <jk>new</jk> HashMap&lt;&gt;() {{
 			put(<js>"k1"</js>, <jk>new</jk> A());
@@ -6054,7 +6156,7 @@
 	</tr>
 	<tr>
 		<td class='code'>
-	<ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
+	<ja>@Bean</ja>(dictionary={A.<jk>class</jk>})
 	<jk>class</jk> BeanWithAbstractMapArrayFields {
 		<jk>public</jk> Map&lt;String,A[]&gt; a = <jk>new</jk> LinkedHashMap&lt;&gt;() {{
 			put(<js>"a1"</js>, <jk>new</jk> A[]{<jk>new</jk> A()});
@@ -6150,7 +6252,7 @@
 		<td class='code'>
 	<ja>@Bean</ja>(typeName=<js>"  \b\f\n\t\r  "</js>)
 	<jk>class</jk> BeanWithNamesWithSpecialCharacters {
-		<ja>@BeanProperty</ja>(name=<js>"  \b\f\n\t\r  "</js>)
+		<ja>@Beanp</ja>(name=<js>"  \b\f\n\t\r  "</js>)
 		<jk>public</jk> String a = <js>"  \b\f\n\t\r  "</js>;
 	}
 		</td>
@@ -6576,7 +6678,7 @@
 		<td class='code'>
 	<jk>class</jk> MyBean {
 		<ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED</jsf>)
-		<ja>@BeanProperty</ja>(beanDictionary={MyBeanX.<jk>class</jk>, MyBeanY.<jk>class</jk>})	
+		<ja>@Beanp</ja>(dictionary={MyBeanX.<jk>class</jk>, MyBeanY.<jk>class</jk>})	
 		<jk>public</jk> Object[] a;
 	}
 	
@@ -10709,7 +10811,7 @@
 </p>
 <p>
 	In the following code, we're adding 2 new properties.
-	The first property is annotated with <ja>@BeanProperty</ja> to identify that this property is the resource 
+	The first property is annotated with <ja>@Beanp</ja> to identify that this property is the resource 
 	identifier for this bean.
 	The second un-annotated property is interpreted as a reference to another resource.
 </p>
@@ -24692,6 +24794,11 @@
 
 <h2 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-core' id='juneau-microservice-core'>11 - juneau-microservice-core</a></h2>
 <div class='topic'><!-- START: 11 - juneau-microservice-core -->
+<div class='warn'>
+	The Juneau Microservice libraries are likely to be removed in Juneau 9.0 due to the popularity of the Spring Boot
+	framework for creating microservices.
+</div>
+
 <h5 class='figure'>Maven Dependency</h5>
 <p class='bpcode w500'>
 	<xt>&lt;dependency&gt;</xt>
@@ -25518,6 +25625,11 @@
 
 <h2 class='topic ' onclick='toggle(this)'><a href='#juneau-microservice-jetty' id='juneau-microservice-jetty'>12 - juneau-microservice-jetty</a></h2>
 <div class='topic'><!-- START: 12 - juneau-microservice-jetty -->
+<div class='warn'>
+	The Juneau Microservice libraries are likely to be removed in Juneau 9.0 due to the popularity of the Spring Boot
+	framework for creating microservices.
+</div>
+
 <h5 class='figure'>Maven Dependency</h5>
 <p class='bpcode w500'>
 	<xt>&lt;dependency&gt;</xt>
@@ -26345,6 +26457,11 @@
 
 <h2 class='topic ' onclick='toggle(this)'><a href='#my-jetty-microservice' id='my-jetty-microservice'>13 - my-jetty-microservice</a></h2>
 <div class='topic'><!-- START: 13 - my-jetty-microservice -->
+<div class='warn'>
+	The Juneau Microservice libraries are likely to be removed in Juneau 9.0 due to the popularity of the Spring Boot
+	framework for creating microservices.
+</div>
+
 <h5 class='figure'>Starter Project Zip</h5>
 <p class='bpcode w500'>
 	my-jetty-microservice-{@property juneauVersion}.zip 
@@ -27664,6 +27781,11 @@
 
 <h2 class='topic ' onclick='toggle(this)'><a href='#juneau-examples-rest-jetty' id='juneau-examples-rest-jetty'>17 - juneau-examples-rest-jetty</a></h2>
 <div class='topic'><!-- START: 17 - juneau-examples-rest-jetty -->
+<div class='warn'>
+	The Juneau Microservice libraries are likely to be removed in Juneau 9.0 due to the popularity of the Spring Boot
+	framework for creating microservices.
+</div>
+
 <h5 class='figure'>Starter Project Zip</h5>
 <p class='bpcode w500'>
 	juneau-examples-rest-jetty-{@property juneauVersion}.zip 
@@ -28664,6 +28786,7 @@
 <li><p><a class='doclink' href='{OVERVIEW_URL}#8.0.0'>8.0.0 (Jan 01, 2019)</a></p>
 <li><p><a class='doclink' href='{OVERVIEW_URL}#8.1.0'>8.1.0 (Aug 21, 2019)</a></p>
 <li><p><a class='doclink' href='{OVERVIEW_URL}#8.1.1'>8.1.1 (Sept 20, 2019)</a></p>
+<li><p><a class='doclink' href='{OVERVIEW_URL}#8.1.2'>8.1.2 (TBD)</a></p>
 </ul>
 
 	
@@ -28996,7 +29119,7 @@
 		Enhancements to {@link org.apache.juneau.BeanContext}:
 		<ul>
 			<li>
-				Ability to mark bean properties as hidden using <c>@BeanProperty(hidden)</c> so that they don't get serialized.
+				Ability to mark bean properties as hidden using <dc>@BeanProperty(hidden)</dc> so that they don't get serialized.
 			</li>
 			<li>
 				Simplified <c>ClassType</c> {@link org.apache.juneau.ClassMeta} API.<br>
@@ -29017,7 +29140,7 @@
 				Used by RDF/XML serializer to construct <c>rdf:resource</c> attributes.
 			</li>
 			<li>
-				New {@link org.apache.juneau.annotation.BeanProperty#properties() @BeanProperty(properties)} annotation.
+				New <dc>BeanProperty.properties()</dc> annotation.
 				Used for limiting properties on child elements.
 			</li>	
 		</ul>
@@ -29197,7 +29320,7 @@
 <h5 class='topic w800'>Core API changes</h5>
 <ul class='spaced-list'>
 	<li>
-		Relaxed method naming conventions when using {@link org.apache.juneau.annotation.BeanProperty @BeanProperty} annotation.<br>
+		Relaxed method naming conventions when using <dc>@BeanProperty</dc> annotation.<br>
 		Methods with zero parameters are interpreted as getters, and methods with one parameter are interpreted as setters.<br>
 		Eliminated the <c>BeanProperty.method</c> annotation, since it's now unnecessary.
 			</li>
@@ -30206,14 +30329,14 @@
 		</ul>
 		Removed <c>BeanContext.<jsf>INCLUDE_BEAN_FIELD_PROPERTIES</jsf></c> and <c>BeanContext.<jsf>INCLUDE_BEAN_METHOD_PROPERTIES</jsf></c> properties, since ignoring fields and methods
 		can be accomplished by setting the appropriate properties above to {@link org.apache.juneau.Visibility#NONE NONE}.
-		Also, the {@link org.apache.juneau.annotation.BeanProperty @BeanProperty} annotation can now be used on non-public fields/getters/setters to override
+		Also, the <dc>@BeanProperty</dc> annotation can now be used on non-public fields/getters/setters to override
 		the default behavior defined by the <c>VISIBILITY</c> properties identified above.  This is a convenient way of identifying protected or
 		private fields or methods as bean properties.  Previously, you could only identify public fields/getters/setters using this annotation.
 	</li>
 	<li>New {@link org.apache.juneau.BeanContext#BEAN_useJavaBeanIntrospector} property that lets Juno use the Java bean <c>Introspector</c>
 		class to determine bean properties.  In the previous release, the method for determining bean properties was a mixture of Juno-based and Introspector-based.
 		Now it's either pure Juno-based or pure Introspector-based.  The result is considerably cleaner code and consistent behavior.
-	<li>New {@link org.apache.juneau.annotation.BeanIgnore @BeanIgnore} annotation.  Replaces the previous <c><ja>@BeanProperty</ja>(hidden=<jk>true</jk>)</c> annotation
+	<li>New {@link org.apache.juneau.annotation.BeanIgnore @BeanIgnore} annotation.  Replaces the previous <dc>@BeanProperty(hidden=true)</dc> annotation
 		for ignoring bean properties.  Can also be used on classes that look like beans so that they're not treated as beans.
 	<li>Support for parsing into non-static member classes.  This applies to all parsers.
 	<li>New {@link org.apache.juneau.json.annotation.Json#wrapperAttr() @Json(wrapperAttr)}	annotation that automatically wraps beans and objects in a wrapper
@@ -30396,7 +30519,7 @@
 			<li>References to <c>org.apache.juneau.rest.RestException</c> in {@link org.apache.juneau.encoders.Encoder} class changed to <c>IOException</c>.
 		</ul>
 	<li>Changed configuration names for consistency with Jazz Framework.
-	<li>New {@link org.apache.juneau.rest.client.RestClient#execute(HttpUriRequest)} method that allows subclasses to handle their own HTTP request execution.
+	<li><dc>RestClient.execute(HttpUriRequest)</dc> method that allows subclasses to handle their own HTTP request execution.
 	<li>Changes in <c>JazzRestClient</c> to handle introduction of SSO support in v6.
 	<li><c>&amp;plainText</c> debug feature was broken.
 	<li>Removed double-buffering in <c>RestRequest</c>.
@@ -31571,7 +31694,7 @@
 			<li>{@link org.apache.juneau.BeanContext#BEAN_beanDictionary} - List of bean classes that make up the bean dictionary for lookup
 				during parsing. 
 			<li>{@link org.apache.juneau.BeanContext#BEAN_beanTypePropertyName} - The overridable type property name.  Default is <js>"_type"</js>.
-			<li>{@link org.apache.juneau.annotation.BeanProperty#beanDictionary() @BeanProperty(beanDictionary)} - Define a type dictionary
+			<li><dc>@BeanProperty(beanDictionary)</dc> - Define a type dictionary
 				for a particular bean property value.  This overrides the value specified using {@link org.apache.juneau.BeanContext#BEAN_beanDictionary}.
 			<li><dc>SerializerContext.SERIALIZER_addBeanTypeProperties</dc> - Controls whether type properties are serialized.
 		</ul>
@@ -31876,9 +31999,9 @@
 				of classes annotated with {@link org.apache.juneau.annotation.Bean#typeName() @Bean(typeName)}.
 			<li>New {@link org.apache.juneau.BeanDictionaryMap} class can be used for defining reusable sets of bean dictionaries consisting
 				of classes not annotated with {@link org.apache.juneau.annotation.Bean#typeName() @Bean(typeName)}.
-			<li>New {@link org.apache.juneau.annotation.Bean#beanDictionary() @Bean(beanDictionary)} annotation.
+			<li>New <dc>@Bean(beanDictionary)</dc> annotation.
 		</ul>
-	<li>Removed restriction on getters and setters to be prefixed with "getX/setX/isX" if a {@link org.apache.juneau.annotation.BeanProperty#name() @BeanProperty(name)} annotation is used.
+	<li>Removed restriction on getters and setters to be prefixed with "getX/setX/isX" if a <dc>@BeanProperty(name)</dc> annotation is used.
 	<li>Improvements to ATOM DTO:
 		<ul>
 			<li>New {@link org.apache.juneau.dto.atom.AtomBuilder} class.
@@ -31908,7 +32031,7 @@
 		<br>Equivalently, the {@link org.apache.juneau.parser.InputStreamParser#parse(Object,Class)} method can now 
 			read the output from this method.
 	<li>Eliminated the <c><ja>@Bean</ja>(subTypeProperty)</c> and <c><ja>@Bean</ja>(subTypes)</c> annotations
-		and replaced them with the ability to define subtypes using the existing {@link org.apache.juneau.annotation.Bean#beanDictionary() @Bean(beanDictionary)}
+		and replaced them with the ability to define subtypes using the existing <dc>@Bean(beanDictionary)</dc>
 		annotation on parent classes and interfaces.
 		<br>This has the added benefit of simplifying the overall code.
 	<li>The <dc>SerializerContext.SERIALIZER_addBeanTypeProperties</dc> setting is now enabled by default.
@@ -32253,7 +32376,7 @@
 	<li>
 		New package:  {@link org.apache.juneau.http}.
 	<li>
-		Support for dynamic beans.  See {@link org.apache.juneau.annotation.BeanProperty#name() @BeanProperty(name)}.
+		Support for dynamic beans.  See <dc>@BeanProperty(name)</dc>.
 	<li>
 		New doc: <dc>2.8 - Virtual Beans</dc>
 	<li>
@@ -32283,7 +32406,7 @@
 			<li><dc>ConfigFile.getObjectWithDefault(String,Parser,Object,Class)</dc> 
 		</ul>
 	<li>New ability to interact with config file sections with proxy interfaces with new method <dc>ConfigFile.getSectionAsInterface(String,Class)</dc>.
-	<li>{@link org.apache.juneau.annotation.BeanProperty @BeanProperty} annotation can now be applied to getters
+	<li><dc>@BeanProperty</dc> annotation can now be applied to getters
 		and setters defined on interfaces.
 	<li>New methods on {@link org.apache.juneau.serializer.SerializerSession} and {@link org.apache.juneau.parser.ParserSession}
 		for retrieving context and runtime-override properties:
@@ -32341,7 +32464,7 @@
 				<li><dc>SerializerContext.SERIALIZER_uriResolution</dc>
 				<li><dc>SerializerContext.SERIALIZER_maxIndent</dc>
 		</ul>
-	<li>New annotation property: {@link org.apache.juneau.annotation.BeanProperty#value() @BeanProperty(value)}.
+	<li>New annotation property: <dc>@BeanProperty(value)</dc>.
 		<br>The following two annotations are considered equivalent:
 		<p class='bcode w800'>
 	<ja>@BeanProperty</ja>(name=<js>"foo"</js>)
@@ -32396,10 +32519,10 @@
 		can now be applied to fields.  
 	<li>New properties on {@link org.apache.juneau.BeanContext}:
 		<ul>
-			<li>{@link org.apache.juneau.BeanContext#BEAN_includeProperties BEAN_includeProperties}
-			<li>{@link org.apache.juneau.BeanContext#BEAN_excludeProperties BEAN_excludeProperties}
+			<li><dc>BEAN_includeProperties</dc>
+			<li><dc>BEAN_excludeProperties</dc>
 		</ul>
-	<li>New annotation property: {@link org.apache.juneau.annotation.BeanProperty#format() @BeanProperty(format)}.
+	<li>New annotation property: <dc>@BeanProperty(format)</dc>.
 </ul>
 
 <h5 class='topic w800'>org.apache.juneau.rest</h5>
@@ -32667,7 +32790,7 @@
 		New <dc>RemoteMethod.returns()</dc> annotation.
 		<br>Allows you to specify whether the remote method returns the HTTP body or status code.
 	<li>
-		Fixed bugs with {@link org.apache.juneau.BeanContext#BEAN_includeProperties} and {@link org.apache.juneau.BeanContext#BEAN_excludeProperties} settings.
+		Fixed bugs with <dc>BEAN_includeProperties</dc> and <dc>BEAN_excludeProperties</dc> settings.
 	<li>
 		New/modified settings in <dc>HtmlDocSerializerContext</dc>:
 		<ul>
@@ -33057,7 +33180,7 @@
 		Improvements to swap support.
 		<ul>
 			<li>New {@link org.apache.juneau.annotation.Swap @Swap} annotation.
-				<br>Replaces the <c>@Pojo</c> and <c>@BeanProperty(swap)</c> annotations.
+				<br>Replaces the <c>@Pojo</c> and <dc>@BeanProperty(swap)</dc> annotations.
 			<li>Support for per-media-type swaps.
 				<br>Programmatic example:
 				<p class='bcode w800'>
@@ -34056,7 +34179,7 @@
 	<li>
 		Fixed bug where parsers could report the wrong line number when an error occurred.
 	<li>
-		A runtime exception is now thrown if you define a <c><ja>@BeanProperty</ja>(name)</c> but forget to
+		A runtime exception is now thrown if you define a <dc>@BeanProperty(name)</dc> but forget to
 		add it to your <c><ja>@Bean</ja>(properties)</c> annotation.
 	<li>
 		<c><ja>@Html</ja>(asXml)</c> and <c><ja>@Html</ja>(asPlainText)</c> replaced with
@@ -34624,7 +34747,7 @@
 	<li>
 		Annotations typically used on bean properties (getters/setters/public fields) can now be used on private fields.
 		This is inline with behavior on JPA-annotated beans.
-		These include:  <ja>@Swap</ja>, <ja>@Html</ja>, <ja>@Xml</ja>, <ja>@BeanProperty</ja>.
+		These include:  <ja>@Swap</ja>, <ja>@Html</ja>, <ja>@Xml</ja>, <jd>@BeanProperty</jd>.
 </ul>
 
 <h5 class='topic w800'>juneau-rest-server</h5>
@@ -35240,5 +35363,61 @@
 </ul>
 </div><!-- END: 8.1.1 -->
 
+<!-- ==================================================================================================== -->
+
+<h3 class='topic' onclick='toggle(this)'><a href='#8.1.2' id='8.1.2'>8.1.2 (TBD)</a></h3>
+<div class='topic'><!-- START: 8.1.2 -->
+<p>
+	Juneau 8.1.2 is a minor release with mostly bug fixes.  Improvements around specifying bean properties have also been made.
+</p>
+
+<h5 class='topic w800'>juneau-marshall</h5>
+<ul class='spaced-list'>
+	<li>
+		Support for read-only and write-only properties.
+		<ul>
+			<li class='ja'>{@link org.apache.juneau.annotation.Bean#bpro()}
+			<li class='ja'>{@link org.apache.juneau.annotation.Bean#bpwo()}
+			<li class='ja'>{@link org.apache.juneau.annotation.Beanp#ro()}
+			<li class='ja'>{@link org.apache.juneau.annotation.Beanp#wo()}
+			<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_bpro}
+			<li class='jf'>{@link org.apache.juneau.BeanContext#BEAN_bpwo}
+			<li class='jm'>{@link org.apache.juneau.BeanContextBuilder#bpro(Map)}
+			<li class='jm'>{@link org.apache.juneau.BeanContextBuilder#bpwo(Map)}
+		</ul>
+	<li>
+		New convenience methods:
+		<ul>	
+			<li class='jm'>{@link org.apache.juneau.ObjectMap#parse(CharSequence)}
+			<li class='jm'>{@link org.apache.juneau.ObjectList#parse(CharSequence)}
+		</ul>
+	<li>
+		{@link org.apache.juneau.marshall.CharMarshall} and {@link org.apache.juneau.marshall.StreamMarshall} now have public constructors.
+	<li>
+		{@link org.apache.juneau.annotation.Beanp @Beanp} replaces {@link org.apache.juneau.annotation.BeanProperty @BeanProperty} with shorter syntax.
+	<li>
+		Shortened names for {@link org.apache.juneau.annotation.Bean#dictionary @Bean(dictionary)} and {@link org.apache.juneau.BeanContextBuilder#dictionary(Class...)}.
+</ul>
+
+<h5 class='topic w800'>juneau-rest-server</h5>
+<ul class='spaced-list'>
+	<li>
+		New method {@link org.apache.juneau.rest.RestResponse#setHeaderSafe(String,String)} to strip invalid characters from header values.
+	<li>
+		Fixed issues related to invalid characters being set on HTTP header values.
+</ul>
+
+<h5 class='topic w800'>juneau-rest-client</h5>
+<ul class='spaced-list'>
+	<li>
+		{@link org.apache.juneau.rest.client.RestClient} is now extendible.  The constructor has been made public and simplified to:
+		{@link org.apache.juneau.rest.client.RestClient#RestClient(RestClientBuilder)}.
+	<li>
+		Duplicate methods between {@link org.apache.juneau.rest.client.RestClientBuilder} and {@link org.apache.http.impl.client.HttpClientBuilder}
+		have been made deprecated on the former.  This eliminates the need to try to keep the two builder classes in
+		sync.
+</ul>
+</div><!-- END: 8.1.2 -->
+
 </div>
 </body>								
diff --git a/juneau-doc/src/main/javadoc/resources/docs.txt b/juneau-doc/src/main/javadoc/resources/docs.txt
index 26aca36..f37f2fe 100644
--- a/juneau-doc/src/main/javadoc/resources/docs.txt
+++ b/juneau-doc/src/main/javadoc/resources/docs.txt
@@ -182,7 +182,7 @@
 juneau-marshall.Transforms.BeanConstructorAnnotation = #juneau-marshall.Transforms.BeanConstructorAnnotation, Overview > juneau-marshall > Transforms > @BeanConstructor Annotation
 juneau-marshall.Transforms.BeanFilters = #juneau-marshall.Transforms.BeanFilters, Overview > juneau-marshall > Transforms > BeanFilter Class
 juneau-marshall.Transforms.BeanIgnoreAnnotation = #juneau-marshall.Transforms.BeanIgnoreAnnotation, Overview > juneau-marshall > Transforms > @BeanIgnore Annotation
-juneau-marshall.Transforms.BeanPropertyAnnotation = #juneau-marshall.Transforms.BeanPropertyAnnotation, Overview > juneau-marshall > Transforms > @BeanProperty Annotation
+juneau-marshall.Transforms.BeanpAnnotation = #juneau-marshall.Transforms.BeanpAnnotation, Overview > juneau-marshall > Transforms > @Beanp Annotation
 juneau-marshall.Transforms.BypassSerialization = #juneau-marshall.Transforms.BypassSerialization, Overview > juneau-marshall > Transforms > Bypass Serialization using Readers and InputStreams
 juneau-marshall.Transforms.DefaultPojoSwaps = #juneau-marshall.Transforms.DefaultPojoSwaps, Overview > juneau-marshall > Transforms > Default PojoSwaps
 juneau-marshall.Transforms.InterfaceFilters = #juneau-marshall.Transforms.InterfaceFilters, Overview > juneau-marshall > Transforms > Interface Filters
diff --git a/juneau-doc/src/main/javadoc/resources/fragments/rntoc.html b/juneau-doc/src/main/javadoc/resources/fragments/rntoc.html
index 5ec6e46..b4d5375 100644
--- a/juneau-doc/src/main/javadoc/resources/fragments/rntoc.html
+++ b/juneau-doc/src/main/javadoc/resources/fragments/rntoc.html
@@ -89,4 +89,5 @@
 <li><p><a class='doclink' href='{OVERVIEW_URL}#8.0.0'>8.0.0 (Jan 01, 2019)</a></p>
 <li><p><a class='doclink' href='{OVERVIEW_URL}#8.1.0'>8.1.0 (Aug 21, 2019)</a></p>
 <li><p><a class='doclink' href='{OVERVIEW_URL}#8.1.1'>8.1.1 (Sept 20, 2019)</a></p>
+<li><p><a class='doclink' href='{OVERVIEW_URL}#8.1.2'>8.1.2 (TBD)</a></p>
 </ul>
diff --git a/juneau-doc/src/main/javadoc/resources/fragments/toc.html b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
index d183b2f..e1ae10d 100644
--- a/juneau-doc/src/main/javadoc/resources/fragments/toc.html
+++ b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
@@ -46,7 +46,7 @@
 			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-marshall.Transforms.TemplatedSwaps'>Templated Swaps</a></p>
 			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-marshall.Transforms.SurrogateClasses'>Surrogate Classes</a></p>
 			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-marshall.Transforms.BeanAnnotation'>@Bean Annotation</a></p>
-			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-marshall.Transforms.BeanpAnnotation'>@Beanp Annotation</a></p>
+			<li><p class='updated'><a class='doclink' href='{OVERVIEW_URL}#juneau-marshall.Transforms.BeanpAnnotation'>@Beanp Annotation</a></p>
 			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-marshall.Transforms.BeanConstructorAnnotation'>@BeanConstructor Annotation</a></p>
 			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-marshall.Transforms.BeanIgnoreAnnotation'>@BeanIgnore Annotation</a></p>
 			<li><p class=''><a class='doclink' href='{OVERVIEW_URL}#juneau-marshall.Transforms.NamePropertyAnnotation'>@NameProperty Annotation</a></p>
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index c4c04b0..266ea17 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -396,7 +396,7 @@
 	 * @return The HTTP client builder to use to create the HTTP client.
 	 * @throws NoSuchAlgorithmException Unknown cryptographic algorithm.
 	 * @throws KeyManagementException General key management exception.
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@SuppressWarnings("resource")
 	@Deprecated
@@ -448,7 +448,7 @@
 	 * </ul>
 	 *
 	 * @return This object (for method chaining).
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder enableSSL() {
@@ -471,7 +471,7 @@
 	 * @return This object (for method chaining).
 	 * @throws KeyStoreException Generic keystore exception.
 	 * @throws NoSuchAlgorithmException Unknown cryptographic algorithm.
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder enableLaxSSL() throws KeyStoreException, NoSuchAlgorithmException {
@@ -499,7 +499,7 @@
 	 *
 	 * @param sslProtocols The supported SSL protocols.
 	 * @return This object (for method chaining).
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder sslProtocols(String...sslProtocols) {
@@ -524,7 +524,7 @@
 	 *
 	 * @param cipherSuites The supported cipher suites.
 	 * @return This object (for method chaining).
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder cipherSuites(String...cipherSuites) {
@@ -549,7 +549,7 @@
 	 *
 	 * @param hostnameVerifier The hostname verifier.
 	 * @return This object (for method chaining).
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder hostnameVerifier(HostnameVerifier hostnameVerifier) {
@@ -573,7 +573,7 @@
 	 *
 	 * @param keyManagers The key managers.
 	 * @return This object (for method chaining).
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder keyManagers(KeyManager...keyManagers) {
@@ -597,7 +597,7 @@
 	 *
 	 * @param trustManagers The trust managers.
 	 * @return This object (for method chaining).
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder trustManagers(TrustManager...trustManagers) {
@@ -621,7 +621,7 @@
 	 *
 	 * @param secureRandom The random number generator.
 	 * @return This object (for method chaining).
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder secureRandom(SecureRandom secureRandom) {
@@ -634,7 +634,7 @@
 	 * instead of a {@link BasicHttpClientConnectionManager}.
 	 *
 	 * @return This object (for method chaining).
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder pooled() {
@@ -650,7 +650,7 @@
 	 * @param user The username.
 	 * @param pw The password.
 	 * @return This object (for method chaining).
-	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@Link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
+	 * @deprecated Use {@link #getHttpClientBuilder()} and modify the client builder directly using {@link HttpClientBuilder#setConnectionManager(HttpClientConnectionManager)}.
 	 */
 	@Deprecated
 	public RestClientBuilder basicAuth(String host, int port, String user, String pw) {
diff --git a/pom.xml b/pom.xml
index e8963c0..a89583b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,9 +43,9 @@
 		<httpclient.version>4.5.6</httpclient.version>
 		<jetty.version>9.4.13.v20181111</jetty.version>
 		<juneau.compare.version>8.0.0</juneau.compare.version>
-		<javadoc.juneau.version>8.1.0</javadoc.juneau.version>
-		<juneauVersion>8.1.0</juneauVersion>
-		<juneauVersionNext>8.1.1</juneauVersionNext>
+		<javadoc.juneau.version>8.1.2</javadoc.juneau.version>
+		<juneauVersion>8.1.2</juneauVersion>
+		<juneauVersionNext>8.1.3</juneauVersionNext>
 		<derby.version>10.10.2.0</derby.version>
 		<hibernate.version>5.0.9.Final</hibernate.version>
 		<javax.inject.version>1</javax.inject.version>
