You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2021/02/08 22:21:07 UTC

[juneau] branch master updated: Rename PropertyStore to ContextProperties.

This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 24a9853  Rename PropertyStore to ContextProperties.
24a9853 is described below

commit 24a9853f080397ea7a06db7cfcae23d6c11a3758
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Mon Feb 8 17:20:05 2021 -0500

    Rename PropertyStore to ContextProperties.
---
 .../main/java/org/apache/juneau/config/Config.java |  24 +-
 .../org/apache/juneau/config/ConfigBuilder.java    |   8 +-
 .../juneau/config/store/ConfigClasspathStore.java  |   8 +-
 .../config/store/ConfigClasspathStoreBuilder.java  |  10 +-
 .../juneau/config/store/ConfigFileStore.java       |  20 +-
 .../config/store/ConfigFileStoreBuilder.java       |  10 +-
 .../juneau/config/store/ConfigMemoryStore.java     |   8 +-
 .../config/store/ConfigMemoryStoreBuilder.java     |  10 +-
 .../apache/juneau/config/store/ConfigStore.java    |   6 +-
 .../juneau/config/store/ConfigStoreBuilder.java    |   8 +-
 .../main/java/org/apache/juneau/jena/N3Parser.java |   8 +-
 .../java/org/apache/juneau/jena/N3Serializer.java  |   8 +-
 .../java/org/apache/juneau/jena/NTripleParser.java |   8 +-
 .../org/apache/juneau/jena/NTripleSerializer.java  |   8 +-
 .../java/org/apache/juneau/jena/RdfParser.java     |  32 +-
 .../org/apache/juneau/jena/RdfParserBuilder.java   |   8 +-
 .../java/org/apache/juneau/jena/RdfSerializer.java |  42 +-
 .../apache/juneau/jena/RdfSerializerBuilder.java   |   8 +-
 .../apache/juneau/jena/RdfXmlAbbrevSerializer.java |   8 +-
 .../java/org/apache/juneau/jena/RdfXmlParser.java  |   8 +-
 .../org/apache/juneau/jena/RdfXmlSerializer.java   |   8 +-
 .../java/org/apache/juneau/jena/TurtleParser.java  |   8 +-
 .../org/apache/juneau/jena/TurtleSerializer.java   |   8 +-
 .../juneau/jena/annotation/RdfAnnotation.java      |   6 +-
 .../jena/annotation/RdfConfigAnnotation.java       |  72 +--
 .../main/java/org/apache/juneau/BeanContext.java   |  84 +--
 .../java/org/apache/juneau/BeanContextBuilder.java |   8 +-
 .../org/apache/juneau/BeanTraverseBuilder.java     |   8 +-
 .../org/apache/juneau/BeanTraverseContext.java     |  14 +-
 .../main/java/org/apache/juneau/ConfigApply.java   |   8 +-
 .../src/main/java/org/apache/juneau/Context.java   |  34 +-
 .../java/org/apache/juneau/ContextBuilder.java     |  86 +--
 .../main/java/org/apache/juneau/ContextCache.java  |  32 +-
 .../{PropertyStore.java => ContextProperties.java} |  46 +-
 ...eBuilder.java => ContextPropertiesBuilder.java} | 110 ++--
 .../main/java/org/apache/juneau/PropertyType.java  |   2 +-
 .../apache/juneau/annotation/BeanAnnotation.java   |   6 +-
 .../juneau/annotation/BeanConfigAnnotation.java    |  82 +--
 .../juneau/annotation/BeanIgnoreAnnotation.java    |   6 +-
 .../apache/juneau/annotation/BeancAnnotation.java  |   6 +-
 .../apache/juneau/annotation/BeanpAnnotation.java  |   6 +-
 .../juneau/annotation/ExampleAnnotation.java       |   6 +-
 .../juneau/annotation/MarshalledAnnotation.java    |   6 +-
 .../juneau/annotation/NamePropertyAnnotation.java  |   6 +-
 .../annotation/ParentPropertyAnnotation.java       |   6 +-
 .../apache/juneau/annotation/SwapAnnotation.java   |   6 +-
 .../apache/juneau/annotation/UriAnnotation.java    |   6 +-
 .../main/java/org/apache/juneau/csv/CsvParser.java |  10 +-
 .../org/apache/juneau/csv/CsvParserBuilder.java    |   8 +-
 .../java/org/apache/juneau/csv/CsvSerializer.java  |  10 +-
 .../apache/juneau/csv/CsvSerializerBuilder.java    |   8 +-
 .../juneau/csv/annotation/CsvAnnotation.java       |   6 +-
 .../juneau/csv/annotation/CsvConfigAnnotation.java |   4 +-
 .../org/apache/juneau/html/HtmlDocSerializer.java  |  44 +-
 .../juneau/html/HtmlDocSerializerBuilder.java      |   8 +-
 .../java/org/apache/juneau/html/HtmlParser.java    |  10 +-
 .../org/apache/juneau/html/HtmlParserBuilder.java  |   8 +-
 .../juneau/html/HtmlSchemaDocSerializer.java       |  14 +-
 .../apache/juneau/html/HtmlSchemaSerializer.java   |  36 +-
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |   8 +-
 .../org/apache/juneau/html/HtmlSerializer.java     |  44 +-
 .../apache/juneau/html/HtmlSerializerBuilder.java  |   8 +-
 .../juneau/html/HtmlStrippedDocSerializer.java     |  16 +-
 .../html/HtmlStrippedDocSerializerBuilder.java     |   8 +-
 .../juneau/html/annotation/HtmlAnnotation.java     |   6 +-
 .../html/annotation/HtmlConfigAnnotation.java      |  16 +-
 .../html/annotation/HtmlDocConfigAnnotation.java   |  32 +-
 .../juneau/html/annotation/HtmlLinkAnnotation.java |   6 +-
 .../juneau/http/annotation/BodyAnnotation.java     |   6 +-
 .../juneau/http/annotation/FormDataAnnotation.java |   6 +-
 .../juneau/http/annotation/HeaderAnnotation.java   |   6 +-
 .../juneau/http/annotation/PathAnnotation.java     |   6 +-
 .../juneau/http/annotation/QueryAnnotation.java    |   6 +-
 .../juneau/http/annotation/RequestAnnotation.java  |   6 +-
 .../juneau/http/annotation/ResponseAnnotation.java |   6 +-
 .../http/annotation/ResponseBodyAnnotation.java    |   6 +-
 .../http/annotation/ResponseHeaderAnnotation.java  |   6 +-
 .../http/annotation/ResponseStatusAnnotation.java  |   6 +-
 .../org/apache/juneau/httppart/HttpPartParser.java |   2 +-
 .../apache/juneau/httppart/HttpPartSerializer.java |   2 +-
 .../juneau/httppart/bean/RequestBeanMeta.java      |  22 +-
 .../httppart/bean/RequestBeanPropertyMeta.java     |   6 +-
 .../juneau/httppart/bean/ResponseBeanMeta.java     |  30 +-
 .../httppart/bean/ResponseBeanPropertyMeta.java    |   6 +-
 .../main/java/org/apache/juneau/jso/JsoParser.java |  10 +-
 .../org/apache/juneau/jso/JsoParserBuilder.java    |   8 +-
 .../java/org/apache/juneau/jso/JsoSerializer.java  |  10 +-
 .../apache/juneau/jso/JsoSerializerBuilder.java    |   8 +-
 .../juneau/jso/annotation/JsoAnnotation.java       |   6 +-
 .../juneau/jso/annotation/JsoConfigAnnotation.java |   4 +-
 .../java/org/apache/juneau/json/JsonParser.java    |  28 +-
 .../org/apache/juneau/json/JsonParserBuilder.java  |   8 +-
 .../apache/juneau/json/JsonSchemaSerializer.java   |  36 +-
 .../juneau/json/JsonSchemaSerializerBuilder.java   |   8 +-
 .../org/apache/juneau/json/JsonSerializer.java     |  36 +-
 .../apache/juneau/json/JsonSerializerBuilder.java  |   8 +-
 .../org/apache/juneau/json/SimpleJsonParser.java   |  10 +-
 .../juneau/json/SimpleJsonParserBuilder.java       |   8 +-
 .../apache/juneau/json/SimpleJsonSerializer.java   |  18 +-
 .../juneau/json/SimpleJsonSerializerBuilder.java   |   8 +-
 .../juneau/json/annotation/JsonAnnotation.java     |   6 +-
 .../json/annotation/JsonConfigAnnotation.java      |  12 +-
 .../juneau/jsonschema/JsonSchemaGenerator.java     |  26 +-
 .../jsonschema/JsonSchemaGeneratorBuilder.java     |   8 +-
 .../annotation/JsonSchemaConfigAnnotation.java     |  18 +-
 .../jsonschema/annotation/SchemaAnnotation.java    |   6 +-
 .../org/apache/juneau/msgpack/MsgPackParser.java   |  26 +-
 .../juneau/msgpack/MsgPackParserBuilder.java       |   8 +-
 .../apache/juneau/msgpack/MsgPackSerializer.java   |  28 +-
 .../juneau/msgpack/MsgPackSerializerBuilder.java   |   8 +-
 .../msgpack/annotation/MsgPackAnnotation.java      |   6 +-
 .../annotation/MsgPackConfigAnnotation.java        |   6 +-
 .../java/org/apache/juneau/oapi/OpenApiParser.java |  20 +-
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |   8 +-
 .../org/apache/juneau/oapi/OpenApiSerializer.java  |  20 +-
 .../juneau/oapi/OpenApiSerializerBuilder.java      |   8 +-
 .../juneau/oapi/annotation/OpenApiAnnotation.java  |   6 +-
 .../oapi/annotation/OpenApiConfigAnnotation.java   |   8 +-
 .../apache/juneau/parser/InputStreamParser.java    |  10 +-
 .../juneau/parser/InputStreamParserBuilder.java    |   8 +-
 .../main/java/org/apache/juneau/parser/Parser.java |  30 +-
 .../org/apache/juneau/parser/ParserBuilder.java    |   8 +-
 .../java/org/apache/juneau/parser/ParserGroup.java |   6 +-
 .../apache/juneau/parser/ParserGroupBuilder.java   |  10 +-
 .../org/apache/juneau/parser/ReaderParser.java     |  12 +-
 .../apache/juneau/parser/ReaderParserBuilder.java  |   8 +-
 .../parser/annotation/ParserConfigAnnotation.java  |  22 +-
 .../apache/juneau/plaintext/PlainTextParser.java   |  16 +-
 .../juneau/plaintext/PlainTextParserBuilder.java   |   8 +-
 .../juneau/plaintext/PlainTextSerializer.java      |  16 +-
 .../plaintext/PlainTextSerializerBuilder.java      |   8 +-
 .../plaintext/annotation/PlainTextAnnotation.java  |   6 +-
 .../annotation/PlainTextConfigAnnotation.java      |   4 +-
 .../juneau/serializer/OutputStreamSerializer.java  |  10 +-
 .../serializer/OutputStreamSerializerBuilder.java  |   8 +-
 .../org/apache/juneau/serializer/Serializer.java   |  36 +-
 .../juneau/serializer/SerializerBuilder.java       |   8 +-
 .../apache/juneau/serializer/SerializerGroup.java  |   6 +-
 .../juneau/serializer/SerializerGroupBuilder.java  |  10 +-
 .../apache/juneau/serializer/WriterSerializer.java |  18 +-
 .../juneau/serializer/WriterSerializerBuilder.java |   8 +-
 .../annotation/SerializerConfigAnnotation.java     |  40 +-
 .../org/apache/juneau/soap/SoapXmlSerializer.java  |  10 +-
 .../juneau/soap/SoapXmlSerializerBuilder.java      |   8 +-
 .../juneau/soap/annotation/SoapXmlAnnotation.java  |   6 +-
 .../soap/annotation/SoapXmlConfigAnnotation.java   |   6 +-
 .../main/java/org/apache/juneau/uon/UonParser.java |  30 +-
 .../org/apache/juneau/uon/UonParserBuilder.java    |   8 +-
 .../java/org/apache/juneau/uon/UonSerializer.java  |  42 +-
 .../apache/juneau/uon/UonSerializerBuilder.java    |   8 +-
 .../juneau/uon/annotation/UonAnnotation.java       |   6 +-
 .../juneau/uon/annotation/UonConfigAnnotation.java |  14 +-
 .../juneau/urlencoding/UrlEncodingParser.java      |  12 +-
 .../urlencoding/UrlEncodingParserBuilder.java      |   8 +-
 .../juneau/urlencoding/UrlEncodingSerializer.java  |  42 +-
 .../urlencoding/UrlEncodingSerializerBuilder.java  |   8 +-
 .../annotation/UrlEncodingAnnotation.java          |   6 +-
 .../annotation/UrlEncodingConfigAnnotation.java    |   8 +-
 .../org/apache/juneau/xml/XmlDocSerializer.java    |  12 +-
 .../main/java/org/apache/juneau/xml/XmlParser.java |  26 +-
 .../org/apache/juneau/xml/XmlParserBuilder.java    |   8 +-
 .../java/org/apache/juneau/xml/XmlSerializer.java  |  68 +-
 .../apache/juneau/xml/XmlSerializerBuilder.java    |   8 +-
 .../juneau/xml/annotation/XmlAnnotation.java       |   6 +-
 .../juneau/xml/annotation/XmlConfigAnnotation.java |  26 +-
 .../apache/juneau/rest/client/RestCallHandler.java |   2 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  68 +-
 .../juneau/rest/client/RestClientBuilder.java      |  10 +-
 .../rest/client/remote/RemoteOperationMeta.java    |   2 +-
 .../rest/client/remote/RemoteOperationReturn.java  |   2 +-
 .../apache/juneau/rest/mock/MockRestClient.java    |  36 +-
 .../juneau/rest/mock/MockRestClientBuilder.java    |   8 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 330 +++++-----
 .../org/apache/juneau/rest/RestContextBuilder.java |  20 +-
 .../apache/juneau/rest/RestOperationContext.java   | 122 ++--
 .../juneau/rest/RestOperationContextBuilder.java   |   6 +-
 .../java/org/apache/juneau/rest/RestRequest.java   |   8 +-
 .../juneau/rest/annotation/RestAnnotation.java     |  94 +--
 .../juneau/rest/annotation/RestOpAnnotation.java   |  60 +-
 .../apache/juneau/rest/params/FormDataParam.java   |  12 +-
 .../org/apache/juneau/rest/params/HeaderParam.java |  12 +-
 .../org/apache/juneau/rest/params/PathParam.java   |  12 +-
 .../org/apache/juneau/rest/params/QueryParam.java  |  12 +-
 .../juneau/rest/params/RequestBeanParam.java       |  12 +-
 .../juneau/rest/params/ResponseBeanParam.java      |  12 +-
 .../juneau/rest/params/ResponseHeaderParam.java    |  12 +-
 .../java/org/apache/juneau/ContextCacheTest.java   |  94 +--
 ...tyStoreTest.java => ContextPropertiesTest.java} | 706 ++++++++++-----------
 .../java/org/apache/juneau/XmlValidatorParser.java |   2 +-
 .../apache/juneau/XmlValidatorParserBuilder.java   |   2 +-
 .../org/apache/juneau/parser/ParserGroupTest.java  |  30 +-
 .../apache/juneau/reflection/ClassInfoTest.java    |   2 +-
 .../apache/juneau/reflection/MethodInfoTest.java   |   2 +-
 .../juneau/rest/Header_AcceptCharset_Test.java     |   8 +-
 .../org/apache/juneau/rest/Header_Accept_Test.java |  10 +-
 .../juneau/rest/Header_ContentType_Test.java       |  10 +-
 .../test/java/org/apache/juneau/rest/Nls_Test.java |   4 +-
 .../org/apache/juneau/rest/RestOp_Params_Test.java |   8 +-
 .../juneau/rest/annotation/RestHook_Test.java      |   8 +-
 .../juneau/rest/annotation/Rest_RVars_Test.java    |   4 +-
 .../juneau/rest/annotation/Restx_Parsers_Test.java |  28 +-
 .../rest/annotation/Restx_Serializers_Test.java    |  28 +-
 .../client/RestClient_Config_Context_Test.java     |   2 +-
 .../client/RestClient_Config_RestClient_Test.java  |   4 +-
 .../rest/client/RestClient_Response_Body_Test.java |   4 +-
 .../rest/client/RestClient_Response_Test.java      |   4 +-
 .../apache/juneau/rest/client/RestClient_Test.java |   4 +-
 .../juneau/serializer/SerializerGroupTest.java     |  44 +-
 208 files changed, 2179 insertions(+), 2179 deletions(-)

diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
index d35b325..5cf85d0 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
@@ -433,35 +433,35 @@ public final class Config extends Context implements ConfigEventListener, Writab
 
 	@Override /* Context */
 	public ConfigBuilder builder() {
-		return new ConfigBuilder(getPropertyStore());
+		return new ConfigBuilder(getContextProperties());
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @throws IOException Thrown by underlying stream.
 	 */
-	public Config(PropertyStore ps) throws IOException {
-		super(ps, true);
+	public Config(ContextProperties cp) throws IOException {
+		super(cp, true);
 
-		name = ps.getString(CONFIG_name).orElse("Configuration.cfg");
-		store = ps.getInstance(CONFIG_store, ConfigStore.class).orElse(ConfigFileStore.DEFAULT);
+		name = cp.getString(CONFIG_name).orElse("Configuration.cfg");
+		store = cp.getInstance(CONFIG_store, ConfigStore.class).orElse(ConfigFileStore.DEFAULT);
 		configMap = store.getMap(name);
 		configMap.register(this);
-		serializer = ps.getInstance(CONFIG_serializer, WriterSerializer.class).orElse(SimpleJsonSerializer.DEFAULT);
-		parser = ps.getInstance(CONFIG_parser, ReaderParser.class).orElse(JsonParser.DEFAULT);
+		serializer = cp.getInstance(CONFIG_serializer, WriterSerializer.class).orElse(SimpleJsonSerializer.DEFAULT);
+		parser = cp.getInstance(CONFIG_parser, ReaderParser.class).orElse(JsonParser.DEFAULT);
 		beanSession = parser.createBeanSession();
-		encoder = ps.getInstance(CONFIG_encoder, ConfigEncoder.class).orElse(ConfigXorEncoder.INSTANCE);
-		varSession = ps.getInstance(CONFIG_varResolver, VarResolver.class).orElse(VarResolver.DEFAULT)
+		encoder = cp.getInstance(CONFIG_encoder, ConfigEncoder.class).orElse(ConfigXorEncoder.INSTANCE);
+		varSession = cp.getInstance(CONFIG_varResolver, VarResolver.class).orElse(VarResolver.DEFAULT)
 			.builder()
 			.vars(ConfigVar.class)
 			.bean(Config.class, this)
 			.build()
 			.createSession();
-		binaryLineLength = ps.getInteger(CONFIG_binaryLineLength).orElse(-1);
-		binaryFormat = ps.get(CONFIG_binaryFormat, BinaryFormat.class).orElse(BinaryFormat.BASE64);
+		binaryLineLength = cp.getInteger(CONFIG_binaryLineLength).orElse(-1);
+		binaryFormat = cp.get(CONFIG_binaryFormat, BinaryFormat.class).orElse(BinaryFormat.BASE64);
 		multiLineValuesOnSeparateLines = getBoolean(CONFIG_multiLineValuesOnSeparateLines, false);
 		readOnly = getBoolean(CONFIG_readOnly, false);
 	}
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/ConfigBuilder.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/ConfigBuilder.java
index 3e7d0d1..66c4b01 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/ConfigBuilder.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/ConfigBuilder.java
@@ -52,10 +52,10 @@ public class ConfigBuilder extends ContextBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public ConfigBuilder(PropertyStore ps) {
-		super(ps);
+	public ConfigBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -316,7 +316,7 @@ public class ConfigBuilder extends ContextBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public ConfigBuilder apply(PropertyStore copyFrom) {
+	public ConfigBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
index 41e35b1..79faedb 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
@@ -63,7 +63,7 @@ public class ConfigClasspathStore extends ConfigStore {
 
 	@Override /* Context */
 	public ConfigClasspathStoreBuilder builder() {
-		return new ConfigClasspathStoreBuilder(getPropertyStore());
+		return new ConfigClasspathStoreBuilder(getContextProperties());
 	}
 
 	private final ConcurrentHashMap<String,String> cache = new ConcurrentHashMap<>();
@@ -71,10 +71,10 @@ public class ConfigClasspathStore extends ConfigStore {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The settings for this content store.
+	 * @param cp The settings for this content store.
 	 */
-	protected ConfigClasspathStore(PropertyStore ps) {
-		super(ps);
+	protected ConfigClasspathStore(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ConfigStore */
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStoreBuilder.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStoreBuilder.java
index fab977a..761f0c7 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStoreBuilder.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStoreBuilder.java
@@ -35,15 +35,15 @@ public class ConfigClasspathStoreBuilder extends ConfigStoreBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public ConfigClasspathStoreBuilder(PropertyStore ps) {
-		super(ps);
+	public ConfigClasspathStoreBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
 	public ConfigClasspathStore build() {
-		return new ConfigClasspathStore(getPropertyStore());
+		return new ConfigClasspathStore(getContextProperties());
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -71,7 +71,7 @@ public class ConfigClasspathStoreBuilder extends ConfigStoreBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public ConfigClasspathStoreBuilder apply(PropertyStore copyFrom) {
+	public ConfigClasspathStoreBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
index 85b852c..2c98934 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
@@ -219,7 +219,7 @@ public class ConfigFileStore extends ConfigStore {
 
 	@Override /* Context */
 	public ConfigFileStoreBuilder builder() {
-		return new ConfigFileStoreBuilder(getPropertyStore());
+		return new ConfigFileStoreBuilder(getContextProperties());
 	}
 
 	private final File dir;
@@ -233,18 +233,18 @@ public class ConfigFileStore extends ConfigStore {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The settings for this content store.
+	 * @param cp The settings for this content store.
 	 */
-	protected ConfigFileStore(PropertyStore ps) {
-		super(ps);
+	protected ConfigFileStore(ContextProperties cp) {
+		super(cp);
 		try {
-			dir = new File(ps.getString(FILESTORE_directory).orElse(".")).getCanonicalFile();
+			dir = new File(cp.getString(FILESTORE_directory).orElse(".")).getCanonicalFile();
 			dir.mkdirs();
-			charset = ps.get(FILESTORE_charset, Charset.class).orElse(Charset.defaultCharset());
-			updateOnWrite = ps.getBoolean(FILESTORE_enableUpdateOnWrite).orElse(false);
-			extensions = ps.getCdl(FILESTORE_extensions).orElse(new String[]{"cfg"});
-			WatcherSensitivity ws = ps.get(FILESTORE_watcherSensitivity, WatcherSensitivity.class).orElse(WatcherSensitivity.MEDIUM);
-			watcher = ps.getBoolean(FILESTORE_enableWatcher).orElse(false) ? new WatcherThread(dir, ws) : null;
+			charset = cp.get(FILESTORE_charset, Charset.class).orElse(Charset.defaultCharset());
+			updateOnWrite = cp.getBoolean(FILESTORE_enableUpdateOnWrite).orElse(false);
+			extensions = cp.getCdl(FILESTORE_extensions).orElse(new String[]{"cfg"});
+			WatcherSensitivity ws = cp.get(FILESTORE_watcherSensitivity, WatcherSensitivity.class).orElse(WatcherSensitivity.MEDIUM);
+			watcher = cp.getBoolean(FILESTORE_enableWatcher).orElse(false) ? new WatcherThread(dir, ws) : null;
 			if (watcher != null)
 				watcher.start();
 
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStoreBuilder.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStoreBuilder.java
index da39dfa..f84925b 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStoreBuilder.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStoreBuilder.java
@@ -39,15 +39,15 @@ public class ConfigFileStoreBuilder extends ConfigStoreBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public ConfigFileStoreBuilder(PropertyStore ps) {
-		super(ps);
+	public ConfigFileStoreBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
 	public ConfigFileStore build() {
-		return new ConfigFileStore(getPropertyStore());
+		return new ConfigFileStore(getContextProperties());
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -245,7 +245,7 @@ public class ConfigFileStoreBuilder extends ConfigStoreBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public ConfigFileStoreBuilder apply(PropertyStore copyFrom) {
+	public ConfigFileStoreBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
index 44466f5..aa92bb4 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
@@ -59,7 +59,7 @@ public class ConfigMemoryStore extends ConfigStore {
 
 	@Override /* Context */
 	public ConfigMemoryStoreBuilder builder() {
-		return new ConfigMemoryStoreBuilder(getPropertyStore());
+		return new ConfigMemoryStoreBuilder(getContextProperties());
 	}
 
 	private final ConcurrentHashMap<String,String> cache = new ConcurrentHashMap<>();
@@ -67,10 +67,10 @@ public class ConfigMemoryStore extends ConfigStore {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The settings for this content store.
+	 * @param cp The settings for this content store.
 	 */
-	protected ConfigMemoryStore(PropertyStore ps) {
-		super(ps);
+	protected ConfigMemoryStore(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ConfigStore */
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStoreBuilder.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStoreBuilder.java
index 5d0b897..1a13ccb 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStoreBuilder.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStoreBuilder.java
@@ -35,15 +35,15 @@ public class ConfigMemoryStoreBuilder extends ConfigStoreBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public ConfigMemoryStoreBuilder(PropertyStore ps) {
-		super(ps);
+	public ConfigMemoryStoreBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
 	public ConfigMemoryStore build() {
-		return new ConfigMemoryStore(getPropertyStore());
+		return new ConfigMemoryStore(getContextProperties());
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -71,7 +71,7 @@ public class ConfigMemoryStoreBuilder extends ConfigStoreBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public ConfigMemoryStoreBuilder apply(PropertyStore copyFrom) {
+	public ConfigMemoryStoreBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
index 2022b8a..af87c2a 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
@@ -50,10 +50,10 @@ public abstract class ConfigStore extends Context implements Closeable {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The settings for this content store.
+	 * @param cp The settings for this content store.
 	 */
-	protected ConfigStore(PropertyStore ps) {
-		super(ps, false);
+	protected ConfigStore(ContextProperties cp) {
+		super(cp, false);
 	}
 
 	/**
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStoreBuilder.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStoreBuilder.java
index f5a0cf2..fcfd6ae 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStoreBuilder.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStoreBuilder.java
@@ -35,10 +35,10 @@ public abstract class ConfigStoreBuilder extends ContextBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public ConfigStoreBuilder(PropertyStore ps) {
-		super(ps);
+	public ConfigStoreBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override
@@ -69,7 +69,7 @@ public abstract class ConfigStoreBuilder extends ContextBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public ConfigStoreBuilder apply(PropertyStore copyFrom) {
+	public ConfigStoreBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/N3Parser.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/N3Parser.java
index b9c09f0..d8a3fcd 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/N3Parser.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/N3Parser.java
@@ -26,7 +26,7 @@ public class N3Parser extends RdfParser {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default N3 parser, all default settings.*/
-	public static final N3Parser DEFAULT = new N3Parser(PropertyStore.DEFAULT);
+	public static final N3Parser DEFAULT = new N3Parser(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -48,11 +48,11 @@ public class N3Parser extends RdfParser {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public N3Parser(PropertyStore ps) {
+	public N3Parser(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.set(RDF_language, LANG_N3)
 				.build(),
 			"text/n3"
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/N3Serializer.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/N3Serializer.java
index 80bc883..6cb81fc 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/N3Serializer.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/N3Serializer.java
@@ -26,7 +26,7 @@ public class N3Serializer extends RdfSerializer {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default N3 serializer, all default settings.*/
-	public static final N3Serializer DEFAULT = new N3Serializer(PropertyStore.DEFAULT);
+	public static final N3Serializer DEFAULT = new N3Serializer(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -48,11 +48,11 @@ public class N3Serializer extends RdfSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public N3Serializer(PropertyStore ps) {
+	public N3Serializer(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.set(RDF_language, LANG_N3)
 				.build(),
 			"text/n3", (String)null
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/NTripleParser.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/NTripleParser.java
index 42734e9..98f9180 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/NTripleParser.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/NTripleParser.java
@@ -26,7 +26,7 @@ public class NTripleParser extends RdfParser {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default N-Triple parser, all default settings.*/
-	public static final NTripleParser DEFAULT = new NTripleParser(PropertyStore.DEFAULT);
+	public static final NTripleParser DEFAULT = new NTripleParser(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -48,11 +48,11 @@ public class NTripleParser extends RdfParser {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public NTripleParser(PropertyStore ps) {
+	public NTripleParser(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.set(RDF_language, LANG_NTRIPLE)
 				.build(),
 			"text/n-triple"
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/NTripleSerializer.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/NTripleSerializer.java
index 5fc45af..ee21e56 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/NTripleSerializer.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/NTripleSerializer.java
@@ -26,7 +26,7 @@ public class NTripleSerializer extends RdfSerializer {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default N-Triple serializer, all default settings.*/
-	public static final NTripleSerializer DEFAULT = new NTripleSerializer(PropertyStore.DEFAULT);
+	public static final NTripleSerializer DEFAULT = new NTripleSerializer(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -48,11 +48,11 @@ public class NTripleSerializer extends RdfSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public NTripleSerializer(PropertyStore ps) {
+	public NTripleSerializer(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.set(RDF_language, LANG_NTRIPLE)
 				.build(),
 			"text/n-triple", (String)null
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
index d4347a5..6a8edf8 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
@@ -123,36 +123,36 @@ public class RdfParser extends ReaderParser implements RdfCommon, RdfMetaProvide
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 * @param consumes The list of media types that this parser consumes (e.g. <js>"application/json"</js>).
 	 */
-	public RdfParser(PropertyStore ps, String...consumes) {
-		super(ps, consumes);
-		trimWhitespace = ps.getBoolean(RDF_trimWhitespace).orElse(false);
-		looseCollections = ps.getBoolean(RDF_looseCollections).orElse(false);
-		rdfLanguage = ps.getString(RDF_language).orElse("RDF/XML-ABBREV");
-		juneauNs = ps.getInstance(RDF_juneauNs, Namespace.class).orElse(DEFAULT_JUNEAU_NS);
-		juneauBpNs = ps.getInstance(RDF_juneauBpNs, Namespace.class).orElse(DEFAULT_JUNEAUBP_NS);
-		collectionFormat = ps.get(RDF_collectionFormat, RdfCollectionFormat.class).orElse(RdfCollectionFormat.DEFAULT);
+	public RdfParser(ContextProperties cp, String...consumes) {
+		super(cp, consumes);
+		trimWhitespace = cp.getBoolean(RDF_trimWhitespace).orElse(false);
+		looseCollections = cp.getBoolean(RDF_looseCollections).orElse(false);
+		rdfLanguage = cp.getString(RDF_language).orElse("RDF/XML-ABBREV");
+		juneauNs = cp.getInstance(RDF_juneauNs, Namespace.class).orElse(DEFAULT_JUNEAU_NS);
+		juneauBpNs = cp.getInstance(RDF_juneauBpNs, Namespace.class).orElse(DEFAULT_JUNEAUBP_NS);
+		collectionFormat = cp.get(RDF_collectionFormat, RdfCollectionFormat.class).orElse(RdfCollectionFormat.DEFAULT);
 
 		ASortedMap<String,Object> m = ASortedMap.create();
 		for (String k : getPropertyKeys("RdfCommon"))
 			if (k.startsWith("jena."))
-				m.put(k.substring(5), ps.get("RdfCommon." + k).orElse(null));
+				m.put(k.substring(5), cp.get("RdfCommon." + k).orElse(null));
 		jenaProperties = m.unmodifiable();
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public RdfParser(PropertyStore ps) {
-		this(ps, getConsumes(ps));
+	public RdfParser(ContextProperties cp) {
+		this(cp, getConsumes(cp));
 	}
 
-	private static String getConsumes(PropertyStore ps) {
-		String rdfLanguage = ps.get(RDF_language, String.class).orElse("RDF/XML-ABBREV");
+	private static String getConsumes(ContextProperties cp) {
+		String rdfLanguage = cp.get(RDF_language, String.class).orElse("RDF/XML-ABBREV");
 		switch(rdfLanguage) {
 			case "RDF/XML":
 			case "RDF/XML-ABBREV": return "text/xml+rdf";
@@ -168,7 +168,7 @@ public class RdfParser extends ReaderParser implements RdfCommon, RdfMetaProvide
 
 	@Override /* Context */
 	public RdfParserBuilder builder() {
-		return new RdfParserBuilder(getPropertyStore());
+		return new RdfParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
index 9c77cf6..8463077 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
@@ -43,10 +43,10 @@ public class RdfParserBuilder extends ReaderParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public RdfParserBuilder(PropertyStore ps) {
-		super(ps);
+	public RdfParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -781,7 +781,7 @@ public class RdfParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public RdfParserBuilder apply(PropertyStore copyFrom) {
+	public RdfParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index 7c9e561..a45bfb2 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -265,7 +265,7 @@ public class RdfSerializer extends WriterSerializer implements RdfCommon, RdfMet
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -288,39 +288,39 @@ public class RdfSerializer extends WriterSerializer implements RdfCommon, RdfMet
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public RdfSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
-		addLiteralTypes = ps.getBoolean(RDF_addLiteralTypes).orElse(false);
-		addRootProperty = ps.getBoolean(RDF_addRootProperty).orElse(false);
-		useXmlNamespaces = ! ps.getBoolean(RDF_disableUseXmlNamespaces).orElse(false);
-		looseCollections = ps.getBoolean(RDF_looseCollections).orElse(false);
-		autoDetectNamespaces = ! ps.getBoolean(RDF_disableAutoDetectNamespaces).orElse(false);
-		rdfLanguage = ps.getString(RDF_language).orElse("RDF/XML-ABBREV");
-		juneauNs = ps.get(RDF_juneauNs, Namespace.class).orElse(DEFAULT_JUNEAU_NS);
-		juneauBpNs = ps.get(RDF_juneauBpNs, Namespace.class).orElse(DEFAULT_JUNEAUBP_NS);
-		collectionFormat = ps.get(RDF_collectionFormat, RdfCollectionFormat.class).orElse(RdfCollectionFormat.DEFAULT);
-		namespaces = ps.get(RDF_namespaces, Namespace[].class).orElse(new Namespace[0]);
-		addBeanTypes = ps.getFirstBoolean(RDF_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
+	public RdfSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
+		addLiteralTypes = cp.getBoolean(RDF_addLiteralTypes).orElse(false);
+		addRootProperty = cp.getBoolean(RDF_addRootProperty).orElse(false);
+		useXmlNamespaces = ! cp.getBoolean(RDF_disableUseXmlNamespaces).orElse(false);
+		looseCollections = cp.getBoolean(RDF_looseCollections).orElse(false);
+		autoDetectNamespaces = ! cp.getBoolean(RDF_disableAutoDetectNamespaces).orElse(false);
+		rdfLanguage = cp.getString(RDF_language).orElse("RDF/XML-ABBREV");
+		juneauNs = cp.get(RDF_juneauNs, Namespace.class).orElse(DEFAULT_JUNEAU_NS);
+		juneauBpNs = cp.get(RDF_juneauBpNs, Namespace.class).orElse(DEFAULT_JUNEAUBP_NS);
+		collectionFormat = cp.get(RDF_collectionFormat, RdfCollectionFormat.class).orElse(RdfCollectionFormat.DEFAULT);
+		namespaces = cp.get(RDF_namespaces, Namespace[].class).orElse(new Namespace[0]);
+		addBeanTypes = cp.getFirstBoolean(RDF_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
 
 		ASortedMap<String,Object> m = ASortedMap.create();
 		for (String k : getPropertyKeys("RdfCommon"))
 			if (k.startsWith("jena."))
-				m.put(k.substring(5), ps.get("RdfCommon." + k).orElse(null));
+				m.put(k.substring(5), cp.get("RdfCommon." + k).orElse(null));
 		jenaProperties = m.unmodifiable();
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public RdfSerializer(PropertyStore ps) {
-		this(ps, getProduces(ps), (String)null);
+	public RdfSerializer(ContextProperties cp) {
+		this(cp, getProduces(cp), (String)null);
 	}
 
-	private static String getProduces(PropertyStore ps) {
-		String rdfLanguage = ps.get(RDF_language, String.class).orElse("RDF/XML-ABBREV");
+	private static String getProduces(ContextProperties cp) {
+		String rdfLanguage = cp.get(RDF_language, String.class).orElse("RDF/XML-ABBREV");
 		switch(rdfLanguage) {
 			case "RDF/XML": return "text/xml+rdf+abbrev";
 			case "RDF/XML-ABBREV": return "text/xml+rdf";
@@ -336,7 +336,7 @@ public class RdfSerializer extends WriterSerializer implements RdfCommon, RdfMet
 
 	@Override /* Context */
 	public RdfSerializerBuilder builder() {
-		return new RdfSerializerBuilder(getPropertyStore());
+		return new RdfSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
index f80f2fc..bbe0631 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
@@ -45,10 +45,10 @@ public class RdfSerializerBuilder extends WriterSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public RdfSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public RdfSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -897,7 +897,7 @@ public class RdfSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public RdfSerializerBuilder apply(PropertyStore copyFrom) {
+	public RdfSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlAbbrevSerializer.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlAbbrevSerializer.java
index 698bf73..e5f7982 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlAbbrevSerializer.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlAbbrevSerializer.java
@@ -26,7 +26,7 @@ public class RdfXmlAbbrevSerializer extends RdfSerializer {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default RDF/XML serializer, all default settings.*/
-	public static final RdfXmlAbbrevSerializer DEFAULT = new RdfXmlAbbrevSerializer(PropertyStore.DEFAULT);
+	public static final RdfXmlAbbrevSerializer DEFAULT = new RdfXmlAbbrevSerializer(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -48,11 +48,11 @@ public class RdfXmlAbbrevSerializer extends RdfSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public RdfXmlAbbrevSerializer(PropertyStore ps) {
+	public RdfXmlAbbrevSerializer(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.set(RDF_language, LANG_RDF_XML_ABBREV)
 				.build(),
 			"text/xml+rdf", "text/xml+rdf+abbrev,text/xml+rdf;q=0.9"
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlParser.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlParser.java
index ab15863..6c7b523 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlParser.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlParser.java
@@ -26,7 +26,7 @@ public class RdfXmlParser extends RdfParser {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default XML parser, all default settings.*/
-	public static final RdfXmlParser DEFAULT = new RdfXmlParser(PropertyStore.DEFAULT);
+	public static final RdfXmlParser DEFAULT = new RdfXmlParser(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -48,11 +48,11 @@ public class RdfXmlParser extends RdfParser {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public RdfXmlParser(PropertyStore ps) {
+	public RdfXmlParser(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.set(RDF_language, LANG_RDF_XML)
 				.build(),
 			"text/xml+rdf"
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlSerializer.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlSerializer.java
index 90869ec..0effac3 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlSerializer.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfXmlSerializer.java
@@ -26,7 +26,7 @@ public class RdfXmlSerializer extends RdfSerializer {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default RDF/XML serializer, all default settings.*/
-	public static final RdfXmlSerializer DEFAULT = new RdfXmlSerializer(PropertyStore.DEFAULT);
+	public static final RdfXmlSerializer DEFAULT = new RdfXmlSerializer(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -48,11 +48,11 @@ public class RdfXmlSerializer extends RdfSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public RdfXmlSerializer(PropertyStore ps) {
+	public RdfXmlSerializer(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.set(RDF_language, LANG_RDF_XML)
 				.build(),
 			"text/xml+rdf", "text/xml+rdf,text/xml+rdf+abbrev;q=0.9"
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/TurtleParser.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/TurtleParser.java
index 89fc383..dcb64a7 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/TurtleParser.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/TurtleParser.java
@@ -26,7 +26,7 @@ public class TurtleParser extends RdfParser {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default Turtle parser, all default settings.*/
-	public static final TurtleParser DEFAULT = new TurtleParser(PropertyStore.DEFAULT);
+	public static final TurtleParser DEFAULT = new TurtleParser(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -48,11 +48,11 @@ public class TurtleParser extends RdfParser {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public TurtleParser(PropertyStore ps) {
+	public TurtleParser(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.set(RDF_language, LANG_TURTLE)
 				.build(),
 			"text/turtle"
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/TurtleSerializer.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/TurtleSerializer.java
index 48b2020..ceea11a 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/TurtleSerializer.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/TurtleSerializer.java
@@ -26,7 +26,7 @@ public class TurtleSerializer extends RdfSerializer {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default Turtle serializer, all default settings.*/
-	public static final TurtleSerializer DEFAULT = new TurtleSerializer(PropertyStore.DEFAULT);
+	public static final TurtleSerializer DEFAULT = new TurtleSerializer(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -48,11 +48,11 @@ public class TurtleSerializer extends RdfSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public TurtleSerializer(PropertyStore ps) {
+	public TurtleSerializer(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.set(RDF_language, LANG_TURTLE)
 				.build(),
 			"text/turtle", (String)null
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
index 7669a2d..3cab70e 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
@@ -226,7 +226,7 @@ public class RdfAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Rdf} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Rdf} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Rdf> {
 
@@ -241,13 +241,13 @@ public class RdfAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Rdf> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Rdf> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Rdf a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
index ecd802a..a85c923 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
@@ -26,7 +26,7 @@ import org.apache.juneau.svl.*;
 public class RdfConfigAnnotation {
 
 	/**
-	 * Applies {@link RdfConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link RdfConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<RdfConfig> {
 
@@ -41,42 +41,42 @@ public class RdfConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<RdfConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<RdfConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			RdfConfig a = ai.getAnnotation();
-			psb.setIfNotEmpty(RDF_language, string(a.language()));
-			psb.setIfNotEmpty(RDF_juneauNs, string(a.juneauNs()));
-			psb.setIfNotEmpty(RDF_juneauBpNs, string(a.juneauBpNs()));
-			psb.setIfNotEmpty(RDF_disableUseXmlNamespaces, bool(a.disableUseXmlNamespaces()));
-			psb.setIfNotEmpty(RDF_arp_iriRules, string(a.arp_iriRules()));
-			psb.setIfNotEmpty(RDF_arp_errorMode, string(a.arp_errorMode()));
-			psb.setIfNotEmpty(RDF_arp_embedding, bool(a.arp_embedding()));
-			psb.setIfNotEmpty(RDF_rdfxml_xmlBase, string(a.rdfxml_xmlBase()));
-			psb.setIfNotEmpty(RDF_rdfxml_longId, bool(a.rdfxml_longId()));
-			psb.setIfNotEmpty(RDF_rdfxml_allowBadUris, bool(a.rdfxml_allowBadUris()));
-			psb.setIfNotEmpty(RDF_rdfxml_relativeUris, string(a.rdfxml_relativeUris()));
-			psb.setIfNotEmpty(RDF_rdfxml_showXmlDeclaration, string(a.rdfxml_showXmlDeclaration()));
-			psb.setIfNotEmpty(RDF_rdfxml_disableShowDoctypeDeclaration, bool(a.rdfxml_disableShowDoctypeDeclaration()));
-			psb.setIfNotEmpty(RDF_rdfxml_tab, integer(a.rdfxml_tab(), "rdfxml_tab"));
-			psb.setIfNotEmpty(RDF_rdfxml_attributeQuoteChar, string(a.rdfxml_attributeQuoteChar()));
-			psb.setIfNotEmpty(RDF_rdfxml_blockRules, string(a.rdfxml_blockRules()));
-			psb.setIfNotEmpty(RDF_n3_minGap, integer(a.n3_minGap(), "n3_minGap"));
-			psb.setIfNotEmpty(RDF_n3_disableObjectLists, bool(a.n3_disableObjectLists()));
-			psb.setIfNotEmpty(RDF_n3_subjectColumn, integer(a.n3_subjectColumn(), "n3_subjectColumn"));
-			psb.setIfNotEmpty(RDF_n3_propertyColumn, integer(a.n3_propertyColumn(), "n3_propertyColumn"));
-			psb.setIfNotEmpty(RDF_n3_indentProperty, integer(a.n3_indentProperty(), "n3_indentProperty"));
-			psb.setIfNotEmpty(RDF_n3_widePropertyLen, integer(a.n3_widePropertyLen(), "n3_widePropertyLen"));
-			psb.setIfNotEmpty(RDF_n3_disableAbbrevBaseUri, bool(a.n3_disableAbbrevBaseUri()));
-			psb.setIfNotEmpty(RDF_n3_disableUsePropertySymbols, bool(a.n3_disableUsePropertySymbols()));
-			psb.setIfNotEmpty(RDF_n3_disableUseTripleQuotedStrings, bool(a.n3_disableUseTripleQuotedStrings()));
-			psb.setIfNotEmpty(RDF_n3_disableUseDoubles, bool(a.n3_disableUseDoubles()));
-			psb.setIfNotEmpty(RDF_collectionFormat, string(a.collectionFormat()));
-			psb.setIfNotEmpty(RDF_looseCollections, bool(a.looseCollections()));
-			psb.setIfNotEmpty(RDF_addBeanTypes, bool(a.addBeanTypes()));
-			psb.setIfNotEmpty(RDF_addLiteralTypes, bool(a.addLiteralTypes()));
-			psb.setIfNotEmpty(RDF_addRootProperty, bool(a.addRootProperty()));
-			psb.setIfNotEmpty(RDF_disableAutoDetectNamespaces, bool(a.disableAutoDetectNamespaces()));
-			psb.setIfNotEmpty(RDF_namespaces, stringList(a.namespaces()));
-			psb.setIfNotEmpty(RDF_trimWhitespace, bool(a.trimWhitespace()));
+			cpb.setIfNotEmpty(RDF_language, string(a.language()));
+			cpb.setIfNotEmpty(RDF_juneauNs, string(a.juneauNs()));
+			cpb.setIfNotEmpty(RDF_juneauBpNs, string(a.juneauBpNs()));
+			cpb.setIfNotEmpty(RDF_disableUseXmlNamespaces, bool(a.disableUseXmlNamespaces()));
+			cpb.setIfNotEmpty(RDF_arp_iriRules, string(a.arp_iriRules()));
+			cpb.setIfNotEmpty(RDF_arp_errorMode, string(a.arp_errorMode()));
+			cpb.setIfNotEmpty(RDF_arp_embedding, bool(a.arp_embedding()));
+			cpb.setIfNotEmpty(RDF_rdfxml_xmlBase, string(a.rdfxml_xmlBase()));
+			cpb.setIfNotEmpty(RDF_rdfxml_longId, bool(a.rdfxml_longId()));
+			cpb.setIfNotEmpty(RDF_rdfxml_allowBadUris, bool(a.rdfxml_allowBadUris()));
+			cpb.setIfNotEmpty(RDF_rdfxml_relativeUris, string(a.rdfxml_relativeUris()));
+			cpb.setIfNotEmpty(RDF_rdfxml_showXmlDeclaration, string(a.rdfxml_showXmlDeclaration()));
+			cpb.setIfNotEmpty(RDF_rdfxml_disableShowDoctypeDeclaration, bool(a.rdfxml_disableShowDoctypeDeclaration()));
+			cpb.setIfNotEmpty(RDF_rdfxml_tab, integer(a.rdfxml_tab(), "rdfxml_tab"));
+			cpb.setIfNotEmpty(RDF_rdfxml_attributeQuoteChar, string(a.rdfxml_attributeQuoteChar()));
+			cpb.setIfNotEmpty(RDF_rdfxml_blockRules, string(a.rdfxml_blockRules()));
+			cpb.setIfNotEmpty(RDF_n3_minGap, integer(a.n3_minGap(), "n3_minGap"));
+			cpb.setIfNotEmpty(RDF_n3_disableObjectLists, bool(a.n3_disableObjectLists()));
+			cpb.setIfNotEmpty(RDF_n3_subjectColumn, integer(a.n3_subjectColumn(), "n3_subjectColumn"));
+			cpb.setIfNotEmpty(RDF_n3_propertyColumn, integer(a.n3_propertyColumn(), "n3_propertyColumn"));
+			cpb.setIfNotEmpty(RDF_n3_indentProperty, integer(a.n3_indentProperty(), "n3_indentProperty"));
+			cpb.setIfNotEmpty(RDF_n3_widePropertyLen, integer(a.n3_widePropertyLen(), "n3_widePropertyLen"));
+			cpb.setIfNotEmpty(RDF_n3_disableAbbrevBaseUri, bool(a.n3_disableAbbrevBaseUri()));
+			cpb.setIfNotEmpty(RDF_n3_disableUsePropertySymbols, bool(a.n3_disableUsePropertySymbols()));
+			cpb.setIfNotEmpty(RDF_n3_disableUseTripleQuotedStrings, bool(a.n3_disableUseTripleQuotedStrings()));
+			cpb.setIfNotEmpty(RDF_n3_disableUseDoubles, bool(a.n3_disableUseDoubles()));
+			cpb.setIfNotEmpty(RDF_collectionFormat, string(a.collectionFormat()));
+			cpb.setIfNotEmpty(RDF_looseCollections, bool(a.looseCollections()));
+			cpb.setIfNotEmpty(RDF_addBeanTypes, bool(a.addBeanTypes()));
+			cpb.setIfNotEmpty(RDF_addLiteralTypes, bool(a.addLiteralTypes()));
+			cpb.setIfNotEmpty(RDF_addRootProperty, bool(a.addRootProperty()));
+			cpb.setIfNotEmpty(RDF_disableAutoDetectNamespaces, bool(a.disableAutoDetectNamespaces()));
+			cpb.setIfNotEmpty(RDF_namespaces, stringList(a.namespaces()));
+			cpb.setIfNotEmpty(RDF_trimWhitespace, bool(a.trimWhitespace()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 5c82386..0c41a3b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -2018,7 +2018,7 @@ public class BeanContext extends Context implements MetaProvider {
 	// This map ensures that if the BeanContext properties in the Context are the same,
 	// then we reuse the same Class->ClassMeta cache map.
 	// This significantly reduces the number of times we need to construct ClassMeta objects which can be expensive.
-	private static final ConcurrentHashMap<PropertyStore,Map<Class,ClassMeta>> cmCacheCache
+	private static final ConcurrentHashMap<ContextProperties,Map<Class,ClassMeta>> cmCacheCache
 		= new ConcurrentHashMap<>();
 
 	/** Default config.  All default settings. */
@@ -2073,18 +2073,18 @@ public class BeanContext extends Context implements MetaProvider {
 	 * <p>
 	 * Typically only called from {@link ContextBuilder#build(Class)} method.
 	 *
-	 * @param ps The property store containing the unmodifiable configuration for this bean context.
+	 * @param cp The property store containing the unmodifiable configuration for this bean context.
 	 */
-	public BeanContext(PropertyStore ps) {
-		super(ps, true);
+	public BeanContext(ContextProperties cp) {
+		super(cp, true);
 
-		if (ps == null)
-			ps = PropertyStore.DEFAULT;
+		if (cp == null)
+			cp = ContextProperties.DEFAULT;
 
-		ps = ps.subset(new String[]{"Context","BeanContext"});
+		cp = cp.subset(new String[]{"Context","BeanContext"});
 
 		ReflectionMapBuilder<Annotation> rmb = ReflectionMap.create(Annotation.class);
-		for (Annotation a : ps.getList(BEAN_annotations, Annotation.class).orElse(emptyList())) {
+		for (Annotation a : cp.getList(BEAN_annotations, Annotation.class).orElse(emptyList())) {
 			try {
 				ClassInfo ci = ClassInfo.of(a.getClass());
 
@@ -2110,36 +2110,36 @@ public class BeanContext extends Context implements MetaProvider {
 		}
 		this.annotations = rmb.build();
 
-		beansRequireDefaultConstructor = ps.getBoolean(BEAN_beansRequireDefaultConstructor).orElse(false);
-		beansRequireSerializable = ps.getBoolean(BEAN_beansRequireSerializable).orElse(false);
-		beansRequireSettersForGetters = ps.getBoolean(BEAN_beansRequireSettersForGetters).orElse(false);
-		beansRequireSomeProperties = ! ps.getBoolean(BEAN_disableBeansRequireSomeProperties).orElse(false);
-		beanMapPutReturnsOldValue = ps.getBoolean(BEAN_beanMapPutReturnsOldValue).orElse(false);
-		useEnumNames = ps.getBoolean(BEAN_useEnumNames).orElse(false);
-		useInterfaceProxies = ! ps.getBoolean(BEAN_disableInterfaceProxies).orElse(false);
-		ignoreUnknownBeanProperties = ps.getBoolean(BEAN_ignoreUnknownBeanProperties).orElse(false);
-		ignoreUnknownNullBeanProperties = ! ps.getBoolean(BEAN_disableIgnoreUnknownNullBeanProperties).orElse(false);
-		ignoreMissingSetters = ! ps.getBoolean(BEAN_disableIgnoreMissingSetters).orElse(false);
-		ignoreTransientFields = ! ps.getBoolean(BEAN_disableIgnoreTransientFields).orElse(false);
-		ignoreInvocationExceptionsOnGetters = ps.getBoolean(BEAN_ignoreInvocationExceptionsOnGetters).orElse(false);
-		ignoreInvocationExceptionsOnSetters = ps.getBoolean(BEAN_ignoreInvocationExceptionsOnSetters).orElse(false);
-		useJavaBeanIntrospector = ps.getBoolean(BEAN_useJavaBeanIntrospector).orElse(false);
-		sortProperties = ps.getBoolean(BEAN_sortProperties).orElse(false);
-		findFluentSetters = ps.getBoolean(BEAN_findFluentSetters).orElse(false);
-		typePropertyName = ps.getString(BEAN_typePropertyName).orElse("_type");
-
-		beanConstructorVisibility = ps.get(BEAN_beanConstructorVisibility, Visibility.class).orElse(PUBLIC);
-		beanClassVisibility = ps.get(BEAN_beanClassVisibility, Visibility.class).orElse(PUBLIC);
-		beanMethodVisibility = ps.get(BEAN_beanMethodVisibility, Visibility.class).orElse(PUBLIC);
-		beanFieldVisibility = ps.get(BEAN_beanFieldVisibility, Visibility.class).orElse(PUBLIC);
-
-		notBeanClasses = ps.getClassArray(BEAN_notBeanClasses).orElse(DEFAULT_NOTBEAN_CLASSES);
-
-		propertyNamer = ps.getInstance(BEAN_propertyNamer, PropertyNamer.class).orElseGet(BasicPropertyNamer::new);
+		beansRequireDefaultConstructor = cp.getBoolean(BEAN_beansRequireDefaultConstructor).orElse(false);
+		beansRequireSerializable = cp.getBoolean(BEAN_beansRequireSerializable).orElse(false);
+		beansRequireSettersForGetters = cp.getBoolean(BEAN_beansRequireSettersForGetters).orElse(false);
+		beansRequireSomeProperties = ! cp.getBoolean(BEAN_disableBeansRequireSomeProperties).orElse(false);
+		beanMapPutReturnsOldValue = cp.getBoolean(BEAN_beanMapPutReturnsOldValue).orElse(false);
+		useEnumNames = cp.getBoolean(BEAN_useEnumNames).orElse(false);
+		useInterfaceProxies = ! cp.getBoolean(BEAN_disableInterfaceProxies).orElse(false);
+		ignoreUnknownBeanProperties = cp.getBoolean(BEAN_ignoreUnknownBeanProperties).orElse(false);
+		ignoreUnknownNullBeanProperties = ! cp.getBoolean(BEAN_disableIgnoreUnknownNullBeanProperties).orElse(false);
+		ignoreMissingSetters = ! cp.getBoolean(BEAN_disableIgnoreMissingSetters).orElse(false);
+		ignoreTransientFields = ! cp.getBoolean(BEAN_disableIgnoreTransientFields).orElse(false);
+		ignoreInvocationExceptionsOnGetters = cp.getBoolean(BEAN_ignoreInvocationExceptionsOnGetters).orElse(false);
+		ignoreInvocationExceptionsOnSetters = cp.getBoolean(BEAN_ignoreInvocationExceptionsOnSetters).orElse(false);
+		useJavaBeanIntrospector = cp.getBoolean(BEAN_useJavaBeanIntrospector).orElse(false);
+		sortProperties = cp.getBoolean(BEAN_sortProperties).orElse(false);
+		findFluentSetters = cp.getBoolean(BEAN_findFluentSetters).orElse(false);
+		typePropertyName = cp.getString(BEAN_typePropertyName).orElse("_type");
+
+		beanConstructorVisibility = cp.get(BEAN_beanConstructorVisibility, Visibility.class).orElse(PUBLIC);
+		beanClassVisibility = cp.get(BEAN_beanClassVisibility, Visibility.class).orElse(PUBLIC);
+		beanMethodVisibility = cp.get(BEAN_beanMethodVisibility, Visibility.class).orElse(PUBLIC);
+		beanFieldVisibility = cp.get(BEAN_beanFieldVisibility, Visibility.class).orElse(PUBLIC);
+
+		notBeanClasses = cp.getClassArray(BEAN_notBeanClasses).orElse(DEFAULT_NOTBEAN_CLASSES);
+
+		propertyNamer = cp.getInstance(BEAN_propertyNamer, PropertyNamer.class).orElseGet(BasicPropertyNamer::new);
 
 		List<String> l1 = new LinkedList<>();
 		List<String> l2 = new LinkedList<>();
-		for (String s : ps.getArray(BEAN_notBeanPackages, String.class).orElse(DEFAULT_NOTBEAN_PACKAGES)) {
+		for (String s : cp.getArray(BEAN_notBeanPackages, String.class).orElse(DEFAULT_NOTBEAN_PACKAGES)) {
 			if (s.endsWith(".*"))
 				l2.add(s.substring(0, s.length()-2));
 			else
@@ -2149,7 +2149,7 @@ public class BeanContext extends Context implements MetaProvider {
 		notBeanPackagePrefixes = l2.toArray(new String[l2.size()]);
 
 		LinkedList<PojoSwap<?,?>> lpf = new LinkedList<>();
-		for (Object o : ps.getList(BEAN_swaps, Object.class).orElse(emptyList())) {
+		for (Object o : cp.getList(BEAN_swaps, Object.class).orElse(emptyList())) {
 			if (o instanceof Class) {
 				ClassInfo ci = ClassInfo.of((Class<?>)o);
 				if (ci.isChildOf(PojoSwap.class))
@@ -2164,24 +2164,24 @@ public class BeanContext extends Context implements MetaProvider {
 		}
 		swaps = lpf.toArray(new PojoSwap[lpf.size()]);
 
-		if (! cmCacheCache.containsKey(ps)) {
+		if (! cmCacheCache.containsKey(cp)) {
 			ConcurrentHashMap<Class,ClassMeta> cm = new ConcurrentHashMap<>();
 			cm.putIfAbsent(String.class, new ClassMeta(String.class, this, findPojoSwaps(String.class), findChildPojoSwaps(String.class)));
 			cm.putIfAbsent(Object.class, new ClassMeta(Object.class, this, findPojoSwaps(Object.class), findChildPojoSwaps(Object.class)));
-			cmCacheCache.putIfAbsent(ps, cm);
+			cmCacheCache.putIfAbsent(cp, cm);
 		}
-		cmCache = cmCacheCache.get(ps);
+		cmCache = cmCacheCache.get(cp);
 		cmString = cmCache.get(String.class);
 		cmObject = cmCache.get(Object.class);
 		cmClass = cmCache.get(Class.class);
 
-		beanDictionaryClasses = AList.unmodifiable(ps.getClassArray(BEAN_beanDictionary).orElse(new Class[0]));
+		beanDictionaryClasses = AList.unmodifiable(cp.getClassArray(BEAN_beanDictionary).orElse(new Class[0]));
 		beanRegistry = new BeanRegistry(this, null);
 	}
 
 	@Override /* Context */
 	public BeanContextBuilder builder() {
-		return new BeanContextBuilder(getPropertyStore());
+		return new BeanContextBuilder(getContextProperties());
 	}
 
 	/**
@@ -3525,7 +3525,7 @@ public class BeanContext extends Context implements MetaProvider {
 		if (beanToStringSerializer == null) {
 			if (JsonSerializer.DEFAULT == null)
 				return null;
-			this.beanToStringSerializer = JsonSerializer.create().apply(this.getPropertyStore()).sq().simpleMode().build();
+			this.beanToStringSerializer = JsonSerializer.create().apply(getContextProperties()).sq().simpleMode().build();
 		}
 		return beanToStringSerializer;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index ff81dff..86cce65 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -77,10 +77,10 @@ public class BeanContextBuilder extends ContextBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public BeanContextBuilder(PropertyStore ps) {
-		super(ps);
+	public BeanContextBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -2992,7 +2992,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public BeanContextBuilder apply(PropertyStore copyFrom) {
+	public BeanContextBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
index a287d13..eea9bcc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
@@ -38,10 +38,10 @@ public class BeanTraverseBuilder extends BeanContextBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public BeanTraverseBuilder(PropertyStore ps) {
-		super(ps);
+	public BeanTraverseBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -235,7 +235,7 @@ public class BeanTraverseBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public BeanTraverseBuilder apply(PropertyStore copyFrom) {
+	public BeanTraverseBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
index 47343e8..0021ed8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
@@ -265,16 +265,16 @@ public abstract class BeanTraverseContext extends BeanContext {
 	/**
 	 * Constructor
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	protected BeanTraverseContext(PropertyStore ps) {
-		super(ps);
+	protected BeanTraverseContext(ContextProperties cp) {
+		super(cp);
 
-		maxDepth = ps.getInteger(BEANTRAVERSE_maxDepth).orElse(100);
-		initialDepth = ps.getInteger(BEANTRAVERSE_initialDepth).orElse(0);
-		ignoreRecursions = ps.getBoolean(BEANTRAVERSE_ignoreRecursions).orElse(false);
-		detectRecursions = ps.getBoolean(BEANTRAVERSE_detectRecursions).orElse(ignoreRecursions);
+		maxDepth = cp.getInteger(BEANTRAVERSE_maxDepth).orElse(100);
+		initialDepth = cp.getInteger(BEANTRAVERSE_initialDepth).orElse(0);
+		ignoreRecursions = cp.getBoolean(BEANTRAVERSE_ignoreRecursions).orElse(false);
+		detectRecursions = cp.getBoolean(BEANTRAVERSE_detectRecursions).orElse(ignoreRecursions);
 	}
 
 	@Override /* Context */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
index ea395e9..34dbd7f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
@@ -25,7 +25,7 @@ import org.apache.juneau.reflect.*;
 import org.apache.juneau.svl.*;
 
 /**
- * Class used to add properties to a {@link PropertyStore} from an annotation (e.g. {@link BeanConfig}).
+ * Class used to add properties to a {@link ContextProperties} from an annotation (e.g. {@link BeanConfig}).
  *
  * @param <T> The annotation that this <c>ConfigApply</c> reads from.
  */
@@ -49,10 +49,10 @@ public abstract class ConfigApply<T extends Annotation> {
 	 * Apply the specified annotation to the specified property store builder.
 	 *
 	 * @param a The annotation.
-	 * @param ps The property store builder.
+	 * @param cpb The property store builder.
 	 * @param vr The var resolver.  Should be the same as the one passed in through the constructor.
 	 */
-	public abstract void apply(AnnotationInfo<T> a, PropertyStoreBuilder ps, VarResolverSession vr);
+	public abstract void apply(AnnotationInfo<T> a, ContextPropertiesBuilder cpb, VarResolverSession vr);
 
 
 	/**
@@ -223,6 +223,6 @@ public abstract class ConfigApply<T extends Annotation> {
 		}
 
 		@Override /* ConfigApply */
-		public void apply(AnnotationInfo<Annotation> a, PropertyStoreBuilder ps, VarResolverSession vr) {}
+		public void apply(AnnotationInfo<Annotation> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {}
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
index efc39d6..ae97902 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
@@ -41,7 +41,7 @@ import org.apache.juneau.transform.*;
  * <br>However, it MUST be thread-safe and all fields should be declared final to prevent modification.
  * <br>It should NOT be used for storing temporary or state information.
  *
- * @see PropertyStore
+ * @see ContextProperties
  */
 @ConfigurableContext
 public abstract class Context {
@@ -320,7 +320,7 @@ public abstract class Context {
 	public static final String CONTEXT_timeZone = PREFIX + ".timeZone.s";
 
 
-	private final PropertyStore propertyStore;
+	private final ContextProperties properties;
 	private final int identityCode;
 
 	private final boolean debug;
@@ -334,17 +334,17 @@ public abstract class Context {
 	 * <p>
 	 * Subclasses MUST implement the same public constructor.
 	 *
-	 * @param ps The read-only configuration for this context object.
+	 * @param cp The read-only configuration for this context object.
 	 * @param allowReuse If <jk>true</jk>, subclasses that share the same property store values can be reused.
 	 */
-	public Context(PropertyStore ps, boolean allowReuse) {
-		propertyStore = ps == null ? PropertyStore.DEFAULT : ps;
-		ps = propertyStore;
-		this.identityCode = allowReuse ? new HashCode().add(getClass().getName()).add(ps).get() : System.identityHashCode(this);
-		debug = ps.getBoolean(CONTEXT_debug).orElse(false);
-		locale = ps.getInstance(CONTEXT_locale, Locale.class).orElseGet(()->Locale.getDefault());
-		timeZone = ps.getInstance(CONTEXT_timeZone, TimeZone.class).orElse(null);
-		mediaType = ps.getInstance(CONTEXT_mediaType, MediaType.class).orElse(null);
+	public Context(ContextProperties cp, boolean allowReuse) {
+		properties = cp == null ? ContextProperties.DEFAULT : cp;
+		cp = properties;
+		this.identityCode = allowReuse ? new HashCode().add(getClass().getName()).add(cp).get() : System.identityHashCode(this);
+		debug = cp.getBoolean(CONTEXT_debug).orElse(false);
+		locale = cp.getInstance(CONTEXT_locale, Locale.class).orElseGet(()->Locale.getDefault());
+		timeZone = cp.getInstance(CONTEXT_timeZone, TimeZone.class).orElse(null);
+		mediaType = cp.getInstance(CONTEXT_mediaType, MediaType.class).orElse(null);
 	}
 
 	/**
@@ -357,7 +357,7 @@ public abstract class Context {
 	 * @return The set of property keys, or an empty set if the group was not found.
 	 */
 	public Set<String> getPropertyKeys(String group) {
-		return propertyStore.getKeys(group);
+		return properties.getKeys(group);
 	}
 
 	/**
@@ -366,8 +366,8 @@ public abstract class Context {
 	 * @return The property store associated with this context.
 	 */
 	@BeanIgnore
-	public final PropertyStore getPropertyStore() {
-		return propertyStore;
+	public final ContextProperties getContextProperties() {
+		return properties;
 	}
 
 	/**
@@ -390,7 +390,7 @@ public abstract class Context {
 	 * @return The instantiated context class.
 	 */
 	public <T extends Context> T getContext(Class<T> c) {
-		return ContextCache.INSTANCE.create(c, propertyStore);
+		return ContextCache.INSTANCE.create(c, properties);
 	}
 
 	/**
@@ -449,7 +449,7 @@ public abstract class Context {
 		if (o.getClass() != this.getClass())
 			return false;
 		Context c = (Context)o;
-		return (c.propertyStore.equals(propertyStore));
+		return (c.properties.equals(properties));
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -527,7 +527,7 @@ public abstract class Context {
 					.create()
 					.filtered()
 					.a("identityCode", identityCode)
-					.a("propertyStore", System.identityHashCode(propertyStore))
+					.a("properties", System.identityHashCode(properties))
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
index bf2468a..7ace5ea 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
@@ -46,25 +46,25 @@ import org.apache.juneau.xml.annotation.*;
 public abstract class ContextBuilder {
 
 	/** Contains all the modifiable settings for the implementation class. */
-	private final PropertyStoreBuilder psb;
+	private final ContextPropertiesBuilder cpb;
 
 	/**
 	 * Constructor.
 	 * Default settings.
 	 */
 	public ContextBuilder() {
-		this.psb = PropertyStore.create();
+		this.cpb = ContextProperties.create();
 	}
 
 	/**
 	 * Constructor that takes in an initial set of configuration properties.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public ContextBuilder(PropertyStore ps) {
-		if (ps == null)
-			ps = PropertyStore.DEFAULT;
-		this.psb = ps.builder();
+	public ContextBuilder(ContextProperties cp) {
+		if (cp == null)
+			cp = ContextProperties.DEFAULT;
+		this.cpb = cp.builder();
 	}
 
 	/**
@@ -74,22 +74,22 @@ public abstract class ContextBuilder {
 	 * Used in cases where multiple context builder are sharing the same property store builder.
 	 * <br>(e.g. <c>HtmlDocBuilder</c>)
 	 *
-	 * @param psb The property store builder to use.
+	 * @param cpb The property store builder to use.
 	 */
-	protected ContextBuilder(PropertyStoreBuilder psb) {
-		this.psb = psb;
+	protected ContextBuilder(ContextPropertiesBuilder cpb) {
+		this.cpb = cpb;
 	}
 
 	/**
 	 * Returns access to the inner property store builder.
 	 *
 	 * <p>
-	 * Used in conjunction with {@link #ContextBuilder(PropertyStoreBuilder)} when builders share property store builders.
+	 * Used in conjunction with {@link #ContextBuilder(ContextPropertiesBuilder)} when builders share property store builders.
 	 *
 	 * @return The inner property store builder.
 	 */
-	protected PropertyStoreBuilder getPropertyStoreBuilder() {
-		return psb;
+	protected ContextPropertiesBuilder getContextPropertiesBuilder() {
+		return cpb;
 	}
 
 	/**
@@ -124,8 +124,8 @@ public abstract class ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public ContextBuilder apply(PropertyStore copyFrom) {
-		this.psb.apply(copyFrom);
+	public ContextBuilder apply(ContextProperties copyFrom) {
+		this.cpb.apply(copyFrom);
 		return this;
 	}
 
@@ -161,7 +161,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder applyAnnotations(AnnotationList al, VarResolverSession r) {
-		this.psb.applyAnnotations(al, r);
+		this.cpb.applyAnnotations(al, r);
 		return this;
 	}
 
@@ -302,16 +302,16 @@ public abstract class ContextBuilder {
 	 */
 
 	public <T extends Context> T build(Class<T> c) {
-		return ContextCache.INSTANCE.create(c, getPropertyStore());
+		return ContextCache.INSTANCE.create(c, getContextProperties());
 	}
 
 	/**
-	 * Returns a read-only snapshot of the current property store on this builder.
+	 * Returns a read-only snapshot of the current properties on this builder.
 	 *
 	 * @return A property store object.
 	 */
-	public PropertyStore getPropertyStore() {
-		return psb.build();
+	public ContextProperties getContextProperties() {
+		return cpb.build();
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -591,7 +591,7 @@ public abstract class ContextBuilder {
 	 * <p>
 	 * Property values get 'normalized' when they get set.
 	 * For example, calling <c>set(<js>"BeanContext.debug.b"</js>, <js>"true"</js>)</c> will cause the property
-	 * value to be converted to a boolean.  This allows the underlying {@link PropertyStore} class to be comparable
+	 * value to be converted to a boolean.  This allows the underlying {@link ContextProperties} class to be comparable
 	 * and useful in determining whether a cached instance of a context object can be returned.
 	 *
 	 * <h5 class='section'>Example:</h5>
@@ -626,7 +626,7 @@ public abstract class ContextBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jc'>{@link PropertyStore}
+	 * 	<li class='jc'>{@link ContextProperties}
 	 * </ul>
 	 *
 	 * @param name The property name.
@@ -649,7 +649,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder set(String name, Object value) {
-		psb.set(name, value);
+		cpb.set(name, value);
 		return this;
 	}
 
@@ -662,7 +662,7 @@ public abstract class ContextBuilder {
 	@FluentSetter
 	public ContextBuilder set(String name) {
 		Assertions.assertString(name).msg("Property ''{0}'' is not boolean.", name).endsWith(".b");
-		psb.set(name);
+		cpb.set(name);
 		return this;
 	}
 
@@ -674,7 +674,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder unset(String name) {
-		psb.unset(name);
+		cpb.unset(name);
 		return this;
 	}
 
@@ -690,7 +690,7 @@ public abstract class ContextBuilder {
 	 * 	<br><jk>null</jk> if not set.
 	 */
 	public Object peek(String key) {
-		return psb.peek(key);
+		return cpb.peek(key);
 	}
 
 	/**
@@ -710,7 +710,7 @@ public abstract class ContextBuilder {
 	 * @param <T> The type to convert to.
 	 */
 	public <T> T peek(Class<T> c, String key) {
-		return psb.peek(c, key);
+		return cpb.peek(c, key);
 	}
 
 	/**
@@ -741,7 +741,7 @@ public abstract class ContextBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jc'>{@link PropertyStore}
+	 * 	<li class='jc'>{@link ContextProperties}
 	 * 	<li class='jm'>{@link #set(String, Object)}
 	 * </ul>
 	 *
@@ -764,7 +764,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder set(Map<String,Object> properties) {
-		psb.set(properties);
+		cpb.set(properties);
 		return this;
 	}
 
@@ -796,7 +796,7 @@ public abstract class ContextBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jc'>{@link PropertyStore}
+	 * 	<li class='jc'>{@link ContextProperties}
 	 * 	<li class='jm'>{@link #set(String, Object)}
 	 * </ul>
 	 *
@@ -819,7 +819,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder add(Map<String,Object> properties) {
-		psb.add(properties);
+		cpb.add(properties);
 		return this;
 	}
 
@@ -853,7 +853,7 @@ public abstract class ContextBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jc'>{@link PropertyStore}
+	 * 	<li class='jc'>{@link ContextProperties}
 	 * 	<li class='jm'>{@link #set(String, Object)}
 	 * </ul>
 	 *
@@ -871,7 +871,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder addTo(String name, Object value) {
-		psb.addTo(name, value);
+		cpb.addTo(name, value);
 		return this;
 	}
 
@@ -906,7 +906,7 @@ public abstract class ContextBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jc'>{@link PropertyStore}
+	 * 	<li class='jc'>{@link ContextProperties}
 	 * 	<li class='jm'>{@link #set(String, Object)}
 	 * </ul>
 	 *
@@ -925,7 +925,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder appendTo(String name, Object value) {
-		psb.appendTo(name, value);
+		cpb.appendTo(name, value);
 		return this;
 	}
 
@@ -960,7 +960,7 @@ public abstract class ContextBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jc'>{@link PropertyStore}
+	 * 	<li class='jc'>{@link ContextProperties}
 	 * 	<li class='jm'>{@link #set(String, Object)}
 	 * </ul>
 	 *
@@ -979,7 +979,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder prependTo(String name, Object value) {
-		psb.prependTo(name, value);
+		cpb.prependTo(name, value);
 		return this;
 	}
 
@@ -1000,7 +1000,7 @@ public abstract class ContextBuilder {
 	 * </ul>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jc'>{@link PropertyStore}
+	 * 	<li class='jc'>{@link ContextProperties}
 	 * 	<li class='jm'>{@link #set(String, Object)}
 	 * </ul>
 	 *
@@ -1020,7 +1020,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder putTo(String name, String key, Object value) {
-		psb.putTo(name, key, value);
+		cpb.putTo(name, key, value);
 		return this;
 	}
 
@@ -1041,7 +1041,7 @@ public abstract class ContextBuilder {
 	 * </ul>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jc'>{@link PropertyStore}
+	 * 	<li class='jc'>{@link ContextProperties}
 	 * 	<li class='jm'>{@link #set(String, Object)}
 	 * </ul>
 	 *
@@ -1059,7 +1059,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder putAllTo(String name, Object value) {
-		psb.putAllTo(name, value);
+		cpb.putAllTo(name, value);
 		return this;
 	}
 
@@ -1082,7 +1082,7 @@ public abstract class ContextBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jc'>{@link PropertyStore}
+	 * 	<li class='jc'>{@link ContextProperties}
 	 * 	<li class='jm'>{@link #set(String, Object)}
 	 * </ul>
 	 *
@@ -1093,7 +1093,7 @@ public abstract class ContextBuilder {
 	 */
 	@FluentSetter
 	public ContextBuilder removeFrom(String name, Object value) {
-		psb.removeFrom(name, value);
+		cpb.removeFrom(name, value);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java
index cfa7bd7..85e6a6e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java
@@ -38,7 +38,7 @@ public class ContextCache {
 	 */
 	public static final ContextCache INSTANCE = new ContextCache();
 
-	private final ConcurrentHashMap<Class<?>,ConcurrentHashMap<PropertyStore,Context>> contextCache = new ConcurrentHashMap<>();
+	private final ConcurrentHashMap<Class<?>,ConcurrentHashMap<ContextProperties,Context>> contextCache = new ConcurrentHashMap<>();
 	private final ConcurrentHashMap<Class<?>,String[]> prefixCache = new ConcurrentHashMap<>();
 
 	// When enabled, this will spit out cache-hit metrics to the console on shutdown.
@@ -93,34 +93,34 @@ public class ContextCache {
 	 * property store was already created.
 	 *
 	 * @param c The instance of the class to create.
-	 * @param ps The property store to use to create the class.
+	 * @param cp The property store to use to create the class.
 	 * @return The
 	 */
-	public <T extends Context> T create(Class<T> c, PropertyStore ps) {
+	public <T extends Context> T create(Class<T> c, ContextProperties cp) {
 		String[] prefixes = getPrefixes(c);
 
 		if (prefixes == null)
-			return instantiate(c, ps);
+			return instantiate(c, cp);
 
-		ConcurrentHashMap<PropertyStore,Context> m = getContextCache(c);
+		ConcurrentHashMap<ContextProperties,Context> m = getContextCache(c);
 
-		ps = ps.subset(prefixes);
+		cp = cp.subset(prefixes);
 
-		Context context = m.get(ps);
+		Context context = m.get(cp);
 
 		logCache(c, context != null);
 
 		if (context == null) {
-			context = instantiate(c, ps);
-			m.putIfAbsent(ps, context);
+			context = instantiate(c, cp);
+			m.putIfAbsent(cp, context);
 		}
 
 		return (T)context;
 	}
 
-	private <T extends Context> T instantiate(Class<T> c, PropertyStore ps) {
+	private <T extends Context> T instantiate(Class<T> c, ContextProperties cp) {
 		try {
-			return newInstance(c, ps);
+			return newInstance(c, cp);
 		} catch (ContextRuntimeException e) {
 			throw e;
 		} catch (Exception e) {
@@ -128,11 +128,11 @@ public class ContextCache {
 		}
 	}
 
-	private ConcurrentHashMap<PropertyStore,Context> getContextCache(Class<?> c) {
-		ConcurrentHashMap<PropertyStore,Context> m = contextCache.get(c);
+	private ConcurrentHashMap<ContextProperties,Context> getContextCache(Class<?> c) {
+		ConcurrentHashMap<ContextProperties,Context> m = contextCache.get(c);
 		if (m == null) {
 			m = new ConcurrentHashMap<>();
-			ConcurrentHashMap<PropertyStore,Context> m2 = contextCache.putIfAbsent(c, m);
+			ConcurrentHashMap<ContextProperties,Context> m2 = contextCache.putIfAbsent(c, m);
 			if (m2 != null)
 				m = m2;
 		}
@@ -164,7 +164,7 @@ public class ContextCache {
 		return prefixes.length == 0 ? null : prefixes;
 	}
 
-	private <T> T newInstance(Class<T> cc, PropertyStore ps) throws Exception {
-		return (T)castOrCreate(Context.class, cc, true, ps);
+	private <T> T newInstance(Class<T> cc, ContextProperties cp) throws Exception {
+		return (T)castOrCreate(Context.class, cc, true, cp);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextProperties.java
similarity index 96%
rename from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
rename to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextProperties.java
index e68a211..a3158b6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextProperties.java
@@ -19,7 +19,7 @@ import static org.apache.juneau.internal.ObjectUtils.*;
 import java.lang.reflect.*;
 import java.util.*;
 
-import org.apache.juneau.PropertyStoreBuilder.*;
+import org.apache.juneau.ContextPropertiesBuilder.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.cp.*;
 import org.apache.juneau.internal.*;
@@ -51,17 +51,17 @@ import org.apache.juneau.reflect.*;
  * This has the effect of significantly improving performance, especially if you're creating many Serializers and
  * Parsers.
  *
- * <h5 class='topic'>PropertyStoreBuilder</h5>
+ * <h5 class='topic'>ContextPropertiesBuilder</h5>
  *
  * <p>
- * The {@link PropertyStoreBuilder} class is used to build up and instantiate immutable <c>PropertyStore</c>
+ * The {@link ContextPropertiesBuilder} class is used to build up and instantiate immutable <c>PropertyStore</c>
  * objects.
  *
  * <p>
  * In the example above, the property store being built looks like the following:
  *
  * <p class='bcode w800'>
- * 	PropertyStore ps = PropertyStore
+ * 	ContextProperties cp = ContextProperties
  * 		.<jsm>create</jsm>()
  * 		.set(<js>"BeanContext.swaps.lc"</js>, MySwap.<jk>class</jk>)
  * 		.set(<js>"JsonSerializer.simpleMode.b"</js>)
@@ -190,18 +190,18 @@ import org.apache.juneau.reflect.*;
  * </p>
  */
 @SuppressWarnings("unchecked")
-public final class PropertyStore {
+public final class ContextProperties {
 
 	/**
 	 * A default empty property store.
 	 */
-	public static PropertyStore DEFAULT = PropertyStore.create().build();
+	public static ContextProperties DEFAULT = ContextProperties.create().build();
 
 	final Map<String,PropertyGroup> groups;
 	private final int hashCode;
 
-	// Created by PropertyStoreBuilder.build()
-	PropertyStore(Map<String,PropertyGroupBuilder> propertyMaps) {
+	// Created by ContextPropertiesBuilder.build()
+	ContextProperties(Map<String,PropertyGroupBuilder> propertyMaps) {
 		Map<String,PropertyGroup> m = new LinkedHashMap<>();
 		for (Map.Entry<String,PropertyGroupBuilder> p : propertyMaps.entrySet())
 			m.put(p.getKey(), p.getValue().build());
@@ -215,7 +215,7 @@ public final class PropertyStore {
 	 * @param groups The group names to include.
 	 * @return A new property store.
 	 */
-	public PropertyStore subset(String[] groups) {
+	public ContextProperties subset(String[] groups) {
 		TreeMap<String,PropertyGroup> m = new TreeMap<>();
 		for (String g : groups) {
 			PropertyGroup g2 = this.groups.get(g);
@@ -223,10 +223,10 @@ public final class PropertyStore {
 				m.put(g, g2);
 		}
 
-		return new PropertyStore(m);
+		return new ContextProperties(m);
 	}
 
-	private PropertyStore(SortedMap<String,PropertyGroup> propertyMaps) {
+	private ContextProperties(SortedMap<String,PropertyGroup> propertyMaps) {
 		this.groups = Collections.unmodifiableMap(new LinkedHashMap<>(propertyMaps));
 		this.hashCode = groups.hashCode();
 	}
@@ -237,8 +237,8 @@ public final class PropertyStore {
 	 *
 	 * @return A new empty builder for a property store.
 	 */
-	public static PropertyStoreBuilder create() {
-		return new PropertyStoreBuilder();
+	public static ContextPropertiesBuilder create() {
+		return new ContextPropertiesBuilder();
 	}
 
 	/**
@@ -246,8 +246,8 @@ public final class PropertyStore {
 	 *
 	 * @return A new property store builder.
 	 */
-	public PropertyStoreBuilder builder() {
-		return new PropertyStoreBuilder(this);
+	public ContextPropertiesBuilder builder() {
+		return new ContextPropertiesBuilder(this);
 	}
 
 	private Property findProperty(String key) {
@@ -266,7 +266,7 @@ public final class PropertyStore {
 
 		s = SystemProperties.getProperty(k1, SystemProperties.getProperty(k2));
 
-		return s == null ? null : PropertyStoreBuilder.MutableProperty.create(k, s).build();
+		return s == null ? null : ContextPropertiesBuilder.MutableProperty.create(k, s).build();
 	}
 
 	/**
@@ -555,22 +555,22 @@ public final class PropertyStore {
 
 	@Override /* Object */
 	public boolean equals(Object o) {
-		return (o instanceof PropertyStore) && eq(this, (PropertyStore)o, (x,y)->eq(x.groups, y.groups));
+		return (o instanceof ContextProperties) && eq(this, (ContextProperties)o, (x,y)->eq(x.groups, y.groups));
 	}
 
 	/**
 	 * Compares two property stores, but only based on the specified group names.
 	 *
-	 * @param ps The property store to compare to.
+	 * @param cp The property store to compare to.
 	 * @param groups The groups to compare.
 	 * @return <jk>true</jk> if the two property stores are equal in the specified groups.
 	 */
-	public boolean equals(PropertyStore ps, String...groups) {
-		if (this == ps)
+	public boolean equals(ContextProperties cp, String...groups) {
+		if (this == cp)
 			return true;
-		for (String p : groups) {
-			if (p != null) {
-				PropertyGroup pg1 = this.groups.get(p), pg2 = ps.groups.get(p);
+		for (String g : groups) {
+			if (g != null) {
+				PropertyGroup pg1 = this.groups.get(g), pg2 = cp.groups.get(g);
 				if (pg1 == null && pg2 == null)
 					continue;
 				if (pg1 == null || pg2 == null)
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextPropertiesBuilder.java
similarity index 92%
rename from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
rename to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextPropertiesBuilder.java
index b96572b..40f8774 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextPropertiesBuilder.java
@@ -20,7 +20,7 @@ import java.util.*;
 import java.util.concurrent.*;
 import java.util.regex.*;
 
-import org.apache.juneau.PropertyStore.*;
+import org.apache.juneau.ContextProperties.*;
 import org.apache.juneau.assertions.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
@@ -30,13 +30,13 @@ import org.apache.juneau.reflect.*;
 import org.apache.juneau.svl.*;
 
 /**
- * A builder for {@link PropertyStore} objects.
+ * A builder for {@link ContextProperties} objects.
  */
-public class PropertyStoreBuilder {
+public class ContextPropertiesBuilder {
 
 	// Contains a cache of all created PropertyStore objects keyed by hashcode.
 	// Used to minimize memory consumption by reusing identical PropertyStores.
-	private static final Map<PropertyStore,PropertyStore> CACHE = new ConcurrentHashMap<>();
+	private static final Map<ContextProperties,ContextProperties> CACHE = new ConcurrentHashMap<>();
 
 	// Maps property suffixes (e.g. "lc") to PropertyType (e.g. LIST_CLASS)
 	static final Map<String,PropertyType> SUFFIX_MAP = new ConcurrentHashMap<>();
@@ -48,36 +48,36 @@ public class PropertyStoreBuilder {
 	private final Map<String,PropertyGroupBuilder> groups = new ConcurrentSkipListMap<>();
 
 	// Previously-created property store.
-	private volatile PropertyStore propertyStore;
+	private volatile ContextProperties properties;
 
 	// Called by PropertyStore.builder()
-	PropertyStoreBuilder(PropertyStore ps) {
-		apply(ps);
+	ContextPropertiesBuilder(ContextProperties cp) {
+		apply(cp);
 	}
 
 	// Called by PropertyStore.create()
-	PropertyStoreBuilder() {}
+	ContextPropertiesBuilder() {}
 
 	/**
-	 * Creates a new {@link PropertyStore} based on the values in this builder.
+	 * Creates a new {@link ContextProperties} based on the values in this builder.
 	 *
-	 * @return A new {@link PropertyStore} based on the values in this builder.
+	 * @return A new {@link ContextProperties} based on the values in this builder.
 	 */
-	public synchronized PropertyStore build() {
+	public synchronized ContextProperties build() {
 
 		// Reused the last one if we haven't change this builder.
-		if (propertyStore == null)
-			propertyStore = new PropertyStore(groups);
-
-		PropertyStore ps = CACHE.get(propertyStore);
-		if (ps == null)
-			CACHE.put(propertyStore, propertyStore);
-		else if (! ps.equals(propertyStore))
-			throw new RuntimeException("Property store mismatch!  This shouldn't happen.  hashCode=["+propertyStore.hashCode()+"]\n---PS#1---\n" + ps.hashCodes() + "\n---PS#2---\n" + propertyStore.hashCodes());
+		if (properties == null)
+			properties = new ContextProperties(groups);
+
+		ContextProperties cp = CACHE.get(properties);
+		if (cp == null)
+			CACHE.put(properties, properties);
+		else if (! cp.equals(properties))
+			throw new RuntimeException("Property store mismatch!  This shouldn't happen.  hashCode=["+properties.hashCode()+"]\n---PS#1---\n" + cp.hashCodes() + "\n---PS#2---\n" + properties.hashCodes());
 		else
-			propertyStore = ps;
+			properties = cp;
 
-		return propertyStore;
+		return properties;
 	}
 
 	/**
@@ -86,8 +86,8 @@ public class PropertyStoreBuilder {
 	 * @param copyFrom The property store to copy the values from.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder apply(PropertyStore copyFrom) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder apply(ContextProperties copyFrom) {
+		properties = null;
 
 		if (copyFrom != null)
 			for (Map.Entry<String,PropertyGroup> e : copyFrom.groups.entrySet()) {
@@ -110,7 +110,7 @@ public class PropertyStoreBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@SuppressWarnings("unchecked")
-	public PropertyStoreBuilder applyAnnotations(AnnotationList al, VarResolverSession vr) {
+	public ContextPropertiesBuilder applyAnnotations(AnnotationList al, VarResolverSession vr) {
 		vr = vr == null ? VarResolver.DEFAULT.createSession() : vr;
 		for (AnnotationInfo<?> ai : al.sort()) {
 			try {
@@ -142,8 +142,8 @@ public class PropertyStoreBuilder {
 	 * 	</ul>
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder set(String key, Object value) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder set(String key, Object value) {
+		properties = null;
 
 		String g = group(key);
 
@@ -200,7 +200,7 @@ public class PropertyStoreBuilder {
 	 * @param value The new value.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder setIf(boolean flag, String key, Object value) {
+	public synchronized ContextPropertiesBuilder setIf(boolean flag, String key, Object value) {
 		if (flag)
 			set(key, value);
 		return this;
@@ -213,7 +213,7 @@ public class PropertyStoreBuilder {
 	 * @param value The new value.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder setIfNotEmpty(String key, Object value) {
+	public synchronized ContextPropertiesBuilder setIfNotEmpty(String key, Object value) {
 		return setIf(ObjectUtils.isNotEmpty(value), key, value);
 	}
 
@@ -226,7 +226,7 @@ public class PropertyStoreBuilder {
 	 * @param key The configuration property key (e.g <js>"BeanContext.foo.b"</js>).
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder set(String key) {
+	public synchronized ContextPropertiesBuilder set(String key) {
 		Assertions.assertString(key).msg("Property ''{0}'' is not a boolean.", key).endsWith(".b");
 		return set(key, true);
 	}
@@ -240,7 +240,7 @@ public class PropertyStoreBuilder {
 	 * @param key The configuration property key (e.g <js>"BeanContext.foo.b"</js>).
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder unset(String key) {
+	public synchronized ContextPropertiesBuilder unset(String key) {
 		return set(key, null);
 	}
 
@@ -258,8 +258,8 @@ public class PropertyStoreBuilder {
 	 * 	</ul>
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder setDefault(String key, Object value) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder setDefault(String key, Object value) {
+		properties = null;
 
 		String g = group(key);
 
@@ -290,8 +290,8 @@ public class PropertyStoreBuilder {
 	 * @param key The property key.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder remove(String key) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder remove(String key) {
+		properties = null;
 		return set(key, null);
 	}
 
@@ -304,8 +304,8 @@ public class PropertyStoreBuilder {
 	 * @param newProperties The new properties to set.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder set(Map<String,Object> newProperties) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder set(Map<String,Object> newProperties) {
+		properties = null;
 		clear();
 		add(newProperties);
 		return this;
@@ -320,8 +320,8 @@ public class PropertyStoreBuilder {
 	 * @param newProperties The new properties to set.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder add(Map<String,Object> newProperties) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder add(Map<String,Object> newProperties) {
+		properties = null;
 
 		if (newProperties != null)
 			for (Map.Entry<String,Object> e : newProperties.entrySet())
@@ -341,8 +341,8 @@ public class PropertyStoreBuilder {
 	 * @return This object (for method chaining).
 	 * @throws ConfigException If property is not a SET property, or the argument is invalid.
 	 */
-	public synchronized PropertyStoreBuilder addTo(String key, Object value) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder addTo(String key, Object value) {
+		properties = null;
 		String g = group(key);
 		String n = g.isEmpty() ? key : key.substring(g.length()+1);
 
@@ -376,7 +376,7 @@ public class PropertyStoreBuilder {
 	 * @param value The new value.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder addToIf(boolean flag, String key, Object value) {
+	public synchronized ContextPropertiesBuilder addToIf(boolean flag, String key, Object value) {
 		if (flag)
 			addTo(key, value);
 		return this;
@@ -389,7 +389,7 @@ public class PropertyStoreBuilder {
 	 * @param value The new value.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder addToIfNotEmpty(String key, Object value) {
+	public synchronized ContextPropertiesBuilder addToIfNotEmpty(String key, Object value) {
 		return addToIf(ObjectUtils.isNotEmpty(value), key, value);
 	}
 
@@ -402,8 +402,8 @@ public class PropertyStoreBuilder {
 	 * @return This object (for method chaining).
 	 * @throws ConfigException If property is not a SET property, or the argument is invalid.
 	 */
-	public synchronized PropertyStoreBuilder putTo(String key, String mapKey, Object value) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder putTo(String key, String mapKey, Object value) {
+		properties = null;
 		String g = group(key);
 		String n = g.isEmpty() ? key : key.substring(g.length()+1);
 
@@ -432,8 +432,8 @@ public class PropertyStoreBuilder {
 	 * @return This object (for method chaining).
 	 * @throws ConfigException If property is not a SET property, or the argument is invalid.
 	 */
-	public synchronized PropertyStoreBuilder putAllTo(String key, Object value) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder putAllTo(String key, Object value) {
+		properties = null;
 		String g = group(key);
 		String n = g.isEmpty() ? key : key.substring(g.length()+1);
 
@@ -465,8 +465,8 @@ public class PropertyStoreBuilder {
 	 * @return This object (for method chaining).
 	 * @throws ConfigException If property is not a SET/LIST property, or the argument is invalid.
 	 */
-	public synchronized PropertyStoreBuilder appendTo(String key, Object value) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder appendTo(String key, Object value) {
+		properties = null;
 		String g = group(key);
 		String n = g.isEmpty() ? key : key.substring(g.length()+1);
 
@@ -495,7 +495,7 @@ public class PropertyStoreBuilder {
 	 * @param value The new value.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder appendToIf(boolean flag, String key, Object value) {
+	public synchronized ContextPropertiesBuilder appendToIf(boolean flag, String key, Object value) {
 		if (flag)
 			appendTo(key, value);
 		return this;
@@ -508,7 +508,7 @@ public class PropertyStoreBuilder {
 	 * @param value The new value.
 	 * @return This object (for method chaining).
 	 */
-	public synchronized PropertyStoreBuilder appendToIfNotEmpty(String key, Object value) {
+	public synchronized ContextPropertiesBuilder appendToIfNotEmpty(String key, Object value) {
 		return appendToIf(ObjectUtils.isNotEmpty(value), key, value);
 	}
 
@@ -523,8 +523,8 @@ public class PropertyStoreBuilder {
 	 * @return This object (for method chaining).
 	 * @throws ConfigException If property is not a SET/LIST property, or the argument is invalid.
 	 */
-	public synchronized PropertyStoreBuilder prependTo(String key, Object value) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder prependTo(String key, Object value) {
+		properties = null;
 		String g = group(key);
 		String n = g.isEmpty() ? key : key.substring(g.length()+1);
 
@@ -553,8 +553,8 @@ public class PropertyStoreBuilder {
 	 * @return This object (for method chaining).
 	 * @throws ConfigException If property is not a SET or LIST property.
 	 */
-	public synchronized PropertyStoreBuilder removeFrom(String key, Object value) {
-		propertyStore = null;
+	public synchronized ContextPropertiesBuilder removeFrom(String key, Object value) {
+		properties = null;
 		String g = group(key);
 		String n = g.isEmpty() ? key : key.substring(g.length()+1);
 
@@ -617,7 +617,7 @@ public class PropertyStoreBuilder {
 	 * Clears all entries in this property store.
 	 */
 	public synchronized void clear() {
-		propertyStore = null;
+		properties = null;
 		this.groups.clear();
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyType.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyType.java
index 3c10e43..ea21fc7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyType.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyType.java
@@ -17,7 +17,7 @@ import static org.apache.juneau.PropertyConverter.*;
 import java.util.*;
 
 /**
- * Represents possible property types of properties in a {@link PropertyStore}.
+ * Represents possible property types of properties in a {@link ContextProperties}.
  */
 @SuppressWarnings({"unchecked","rawtypes"})
 public enum PropertyType {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
index 1c505ee..2f58955 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
@@ -489,7 +489,7 @@ public class BeanAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Bean} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Bean} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Bean> {
 
@@ -504,13 +504,13 @@ public class BeanAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Bean> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Bean> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Bean a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
index cdb2d27..5032c4a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
@@ -29,7 +29,7 @@ import org.apache.juneau.svl.*;
 public class BeanConfigAnnotation {
 
 	/**
-	 * Applies {@link BeanConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link BeanConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<BeanConfig> {
 
@@ -44,48 +44,48 @@ public class BeanConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<BeanConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<BeanConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			BeanConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(BEAN_beanClassVisibility, visibility(a.beanClassVisibility(), "beanClassVisibility"));
-			psb.setIfNotEmpty(BEAN_beanConstructorVisibility, visibility(a.beanConstructorVisibility(), "beanConstructorVisibility"));
-			psb.prependTo(BEAN_beanDictionary, a.dictionary());
-			psb.setIfNotEmpty(BEAN_beanDictionary, a.dictionary_replace());
-			psb.setIfNotEmpty(BEAN_beanFieldVisibility, visibility(a.beanFieldVisibility(), "beanFieldVisibility"));
-			psb.setIfNotEmpty(BEAN_beanMapPutReturnsOldValue, bool(a.beanMapPutReturnsOldValue()));
-			psb.setIfNotEmpty(BEAN_beanMethodVisibility, visibility(a.beanMethodVisibility(), "beanMethodVisibility"));
-			psb.setIfNotEmpty(BEAN_beansRequireDefaultConstructor, bool(a.beansRequireDefaultConstructor()));
-			psb.setIfNotEmpty(BEAN_beansRequireSerializable, bool(a.beansRequireSerializable()));
-			psb.setIfNotEmpty(BEAN_beansRequireSettersForGetters, bool(a.beansRequireSettersForGetters()));
-			psb.setIfNotEmpty(BEAN_disableBeansRequireSomeProperties, bool(a.disableBeansRequireSomeProperties()));
-			psb.setIfNotEmpty(BEAN_typePropertyName, string(a.typePropertyName()));
-			psb.setIfNotEmpty(CONTEXT_debug, bool(a.debug()));
-			psb.setIfNotEmpty(BEAN_findFluentSetters, bool(a.findFluentSetters()));
-			psb.setIfNotEmpty(BEAN_ignoreInvocationExceptionsOnGetters, bool(a.ignoreInvocationExceptionsOnGetters()));
-			psb.setIfNotEmpty(BEAN_ignoreInvocationExceptionsOnSetters, bool(a.ignoreInvocationExceptionsOnSetters()));
-			psb.setIfNotEmpty(BEAN_disableIgnoreMissingSetters, bool(a.disableIgnoreMissingSetters()));
-			psb.setIfNotEmpty(BEAN_disableIgnoreTransientFields, bool(a.disableIgnoreTransientFields()));
-			psb.setIfNotEmpty(BEAN_ignoreUnknownBeanProperties, bool(a.ignoreUnknownBeanProperties()));
-			psb.setIfNotEmpty(BEAN_disableIgnoreUnknownNullBeanProperties, bool(a.disableIgnoreUnknownNullBeanProperties()));
-			asList(a.interfaces()).stream().map(x -> BeanAnnotation.create(x).interfaceClass(x).build()).forEach(x -> psb.prependTo(BEAN_annotations, x));
-			psb.setIfNotEmpty(CONTEXT_locale, locale(a.locale()));
-			psb.setIfNotEmpty(CONTEXT_mediaType, mediaType(a.mediaType()));
-			psb.setIfNotEmpty(BEAN_notBeanClasses, a.notBeanClasses());
-			psb.setIfNotEmpty(BEAN_notBeanClasses, a.notBeanClasses_replace());
-			psb.addTo(BEAN_notBeanPackages, stringList(a.notBeanPackages()));
-			psb.setIfNotEmpty(BEAN_notBeanPackages, stringList(a.notBeanPackages_replace()));
-			psb.setIf(a.propertyNamer() != PropertyNamer.Null.class, BEAN_propertyNamer, a.propertyNamer());
-			psb.setIfNotEmpty(BEAN_sortProperties, bool(a.sortProperties()));
-			psb.prependTo(BEAN_swaps, a.swaps());
-			psb.setIfNotEmpty(BEAN_swaps, a.swaps_replace());
-			psb.setIfNotEmpty(CONTEXT_timeZone, timeZone(a.timeZone()));
-			psb.setIfNotEmpty(BEAN_useEnumNames, bool(a.useEnumNames()));
-			psb.setIfNotEmpty(BEAN_disableInterfaceProxies, bool(a.disableInterfaceProxies()));
-			psb.setIfNotEmpty(BEAN_useJavaBeanIntrospector, bool(a.useJavaBeanIntrospector()));
-			psb.setIfNotEmpty(BEANTRAVERSE_detectRecursions, bool(a.detectRecursions()));
-			psb.setIfNotEmpty(BEANTRAVERSE_ignoreRecursions, bool(a.ignoreRecursions()));
-			psb.setIfNotEmpty(BEANTRAVERSE_initialDepth, integer(a.initialDepth(), "initialDepth"));
-			psb.setIfNotEmpty(BEANTRAVERSE_maxDepth, integer(a.maxDepth(), "maxDepth"));
+			cpb.setIfNotEmpty(BEAN_beanClassVisibility, visibility(a.beanClassVisibility(), "beanClassVisibility"));
+			cpb.setIfNotEmpty(BEAN_beanConstructorVisibility, visibility(a.beanConstructorVisibility(), "beanConstructorVisibility"));
+			cpb.prependTo(BEAN_beanDictionary, a.dictionary());
+			cpb.setIfNotEmpty(BEAN_beanDictionary, a.dictionary_replace());
+			cpb.setIfNotEmpty(BEAN_beanFieldVisibility, visibility(a.beanFieldVisibility(), "beanFieldVisibility"));
+			cpb.setIfNotEmpty(BEAN_beanMapPutReturnsOldValue, bool(a.beanMapPutReturnsOldValue()));
+			cpb.setIfNotEmpty(BEAN_beanMethodVisibility, visibility(a.beanMethodVisibility(), "beanMethodVisibility"));
+			cpb.setIfNotEmpty(BEAN_beansRequireDefaultConstructor, bool(a.beansRequireDefaultConstructor()));
+			cpb.setIfNotEmpty(BEAN_beansRequireSerializable, bool(a.beansRequireSerializable()));
+			cpb.setIfNotEmpty(BEAN_beansRequireSettersForGetters, bool(a.beansRequireSettersForGetters()));
+			cpb.setIfNotEmpty(BEAN_disableBeansRequireSomeProperties, bool(a.disableBeansRequireSomeProperties()));
+			cpb.setIfNotEmpty(BEAN_typePropertyName, string(a.typePropertyName()));
+			cpb.setIfNotEmpty(CONTEXT_debug, bool(a.debug()));
+			cpb.setIfNotEmpty(BEAN_findFluentSetters, bool(a.findFluentSetters()));
+			cpb.setIfNotEmpty(BEAN_ignoreInvocationExceptionsOnGetters, bool(a.ignoreInvocationExceptionsOnGetters()));
+			cpb.setIfNotEmpty(BEAN_ignoreInvocationExceptionsOnSetters, bool(a.ignoreInvocationExceptionsOnSetters()));
+			cpb.setIfNotEmpty(BEAN_disableIgnoreMissingSetters, bool(a.disableIgnoreMissingSetters()));
+			cpb.setIfNotEmpty(BEAN_disableIgnoreTransientFields, bool(a.disableIgnoreTransientFields()));
+			cpb.setIfNotEmpty(BEAN_ignoreUnknownBeanProperties, bool(a.ignoreUnknownBeanProperties()));
+			cpb.setIfNotEmpty(BEAN_disableIgnoreUnknownNullBeanProperties, bool(a.disableIgnoreUnknownNullBeanProperties()));
+			asList(a.interfaces()).stream().map(x -> BeanAnnotation.create(x).interfaceClass(x).build()).forEach(x -> cpb.prependTo(BEAN_annotations, x));
+			cpb.setIfNotEmpty(CONTEXT_locale, locale(a.locale()));
+			cpb.setIfNotEmpty(CONTEXT_mediaType, mediaType(a.mediaType()));
+			cpb.setIfNotEmpty(BEAN_notBeanClasses, a.notBeanClasses());
+			cpb.setIfNotEmpty(BEAN_notBeanClasses, a.notBeanClasses_replace());
+			cpb.addTo(BEAN_notBeanPackages, stringList(a.notBeanPackages()));
+			cpb.setIfNotEmpty(BEAN_notBeanPackages, stringList(a.notBeanPackages_replace()));
+			cpb.setIf(a.propertyNamer() != PropertyNamer.Null.class, BEAN_propertyNamer, a.propertyNamer());
+			cpb.setIfNotEmpty(BEAN_sortProperties, bool(a.sortProperties()));
+			cpb.prependTo(BEAN_swaps, a.swaps());
+			cpb.setIfNotEmpty(BEAN_swaps, a.swaps_replace());
+			cpb.setIfNotEmpty(CONTEXT_timeZone, timeZone(a.timeZone()));
+			cpb.setIfNotEmpty(BEAN_useEnumNames, bool(a.useEnumNames()));
+			cpb.setIfNotEmpty(BEAN_disableInterfaceProxies, bool(a.disableInterfaceProxies()));
+			cpb.setIfNotEmpty(BEAN_useJavaBeanIntrospector, bool(a.useJavaBeanIntrospector()));
+			cpb.setIfNotEmpty(BEANTRAVERSE_detectRecursions, bool(a.detectRecursions()));
+			cpb.setIfNotEmpty(BEANTRAVERSE_ignoreRecursions, bool(a.ignoreRecursions()));
+			cpb.setIfNotEmpty(BEANTRAVERSE_initialDepth, integer(a.initialDepth(), "initialDepth"));
+			cpb.setIfNotEmpty(BEANTRAVERSE_maxDepth, integer(a.maxDepth(), "maxDepth"));
 		}
 
 		private Locale locale(String in) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
index 6ecf4ec..f8330a4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
@@ -150,7 +150,7 @@ public class BeanIgnoreAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link BeanIgnore} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link BeanIgnore} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<BeanIgnore> {
 
@@ -165,13 +165,13 @@ public class BeanIgnoreAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<BeanIgnore> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<BeanIgnore> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			BeanIgnore a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
index 70e11a4..e27af2b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
@@ -136,7 +136,7 @@ public class BeancAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Beanc} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Beanc} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Beanc> {
 
@@ -151,13 +151,13 @@ public class BeancAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Beanc> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Beanc> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Beanc a = ai.getAnnotation();
 
 			if (isEmpty(a.on()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
index c7237bd..15c3447 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
@@ -292,7 +292,7 @@ public class BeanpAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Beanp} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Beanp} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Beanp> {
 
@@ -307,13 +307,13 @@ public class BeanpAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Beanp> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Beanp> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Beanp a = ai.getAnnotation();
 
 			if (isEmpty(a.on()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
index 04a25c7..9dc8af0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
@@ -166,7 +166,7 @@ public class ExampleAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Example} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Example} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Example> {
 
@@ -181,13 +181,13 @@ public class ExampleAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Example> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Example> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Example a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
index c7ccddd..1bf8e38 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
@@ -172,7 +172,7 @@ public class MarshalledAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Marshalled} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Marshalled} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Marshalled> {
 
@@ -187,13 +187,13 @@ public class MarshalledAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Marshalled> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Marshalled> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Marshalled a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
index dadb499..5a9d1a6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
@@ -121,7 +121,7 @@ public class NamePropertyAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link NameProperty} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link NameProperty} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<NameProperty> {
 
@@ -136,13 +136,13 @@ public class NamePropertyAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<NameProperty> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<NameProperty> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			NameProperty a = ai.getAnnotation();
 
 			if (isEmpty(a.on()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
index 0d3bf40..cabf0a2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
@@ -121,7 +121,7 @@ public class ParentPropertyAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link ParentProperty} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link ParentProperty} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<ParentProperty> {
 
@@ -136,13 +136,13 @@ public class ParentPropertyAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<ParentProperty> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<ParentProperty> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			ParentProperty a = ai.getAnnotation();
 
 			if (isEmpty(a.on()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
index 62e57ee..8f977df 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
@@ -225,7 +225,7 @@ public class SwapAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Swap} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Swap} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Swap> {
 
@@ -240,13 +240,13 @@ public class SwapAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Swap> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Swap> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Swap a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
index c40ae8b..cde2519 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
@@ -144,7 +144,7 @@ public class UriAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Uri} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Uri} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Uri> {
 
@@ -159,13 +159,13 @@ public class UriAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Uri> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Uri> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Uri a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParser.java
index 74fe655..fd5db08 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParser.java
@@ -37,7 +37,7 @@ public class CsvParser extends ReaderParser implements CsvMetaProvider, CsvCommo
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default parser, all default settings.*/
-	public static final CsvParser DEFAULT = new CsvParser(PropertyStore.DEFAULT);
+	public static final CsvParser DEFAULT = new CsvParser(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -50,15 +50,15 @@ public class CsvParser extends ReaderParser implements CsvMetaProvider, CsvCommo
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public CsvParser(PropertyStore ps) {
-		super(ps, "text/csv");
+	public CsvParser(ContextProperties cp) {
+		super(cp, "text/csv");
 	}
 
 	@Override /* Context */
 	public CsvParserBuilder builder() {
-		return new CsvParserBuilder(getPropertyStore());
+		return new CsvParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
index 242ff79..a81d9ba 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
@@ -38,10 +38,10 @@ public class CsvParserBuilder extends ReaderParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public CsvParserBuilder(PropertyStore ps) {
-		super(ps);
+	public CsvParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -74,7 +74,7 @@ public class CsvParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public CsvParserBuilder apply(PropertyStore copyFrom) {
+	public CsvParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializer.java
index 721bf42..8624bb5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializer.java
@@ -37,7 +37,7 @@ public final class CsvSerializer extends WriterSerializer implements CsvMetaProv
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings.*/
-	public static final CsvSerializer DEFAULT = new CsvSerializer(PropertyStore.DEFAULT);
+	public static final CsvSerializer DEFAULT = new CsvSerializer(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -50,15 +50,15 @@ public final class CsvSerializer extends WriterSerializer implements CsvMetaProv
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public CsvSerializer(PropertyStore ps) {
-		super(ps, "text/csv", null);
+	public CsvSerializer(ContextProperties cp) {
+		super(cp, "text/csv", null);
 	}
 
 	@Override /* Context */
 	public CsvSerializerBuilder builder() {
-		return new CsvSerializerBuilder(getPropertyStore());
+		return new CsvSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
index 53d3339..064bf33 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
@@ -38,10 +38,10 @@ public class CsvSerializerBuilder extends WriterSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public CsvSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public CsvSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -74,7 +74,7 @@ public class CsvSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public CsvSerializerBuilder apply(PropertyStore copyFrom) {
+	public CsvSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
index 8cfd299..c6dde50 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
@@ -145,7 +145,7 @@ public class CsvAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Csv} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Csv} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Csv> {
 
@@ -160,13 +160,13 @@ public class CsvAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Csv> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Csv> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Csv a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigAnnotation.java
index 94d1a85..49d5e80 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigAnnotation.java
@@ -22,7 +22,7 @@ import org.apache.juneau.svl.*;
 public class CsvConfigAnnotation {
 
 	/**
-	 * Applies {@link CsvConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link CsvConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<CsvConfig> {
 
@@ -37,7 +37,7 @@ public class CsvConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<CsvConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<CsvConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
index 83d10f5..d5aefcf 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
@@ -709,7 +709,7 @@ public class HtmlDocSerializer extends HtmlStrippedDocSerializer {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings. */
-	public static final HtmlDocSerializer DEFAULT = new HtmlDocSerializer(PropertyStore.DEFAULT);
+	public static final HtmlDocSerializer DEFAULT = new HtmlDocSerializer(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -728,16 +728,16 @@ public class HtmlDocSerializer extends HtmlStrippedDocSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public HtmlDocSerializer(PropertyStore ps) {
-		this(ps, "text/html", (String)null);
+	public HtmlDocSerializer(ContextProperties cp) {
+		this(cp, "text/html", (String)null);
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -761,29 +761,29 @@ public class HtmlDocSerializer extends HtmlStrippedDocSerializer {
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public HtmlDocSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
-		style = ps.getArray(HTMLDOC_style, String.class).orElse(new String[0]);
-		stylesheet = ps.getArray(HTMLDOC_stylesheet, String.class).orElse(new String[0]);
-		script = ps.getArray(HTMLDOC_script, String.class).orElse(new String[0]);
-		head = ps.getArray(HTMLDOC_head, String.class).orElse(new String[0]);
-		header = ps.getArray(HTMLDOC_header, String.class).orElse(new String[0]);
-		nav = ps.getArray(HTMLDOC_nav, String.class).orElse(new String[0]);
-		aside = ps.getArray(HTMLDOC_aside, String.class).orElse(new String[0]);
-		asideFloat = ps.get(HTMLDOC_asideFloat, AsideFloat.class).orElse(AsideFloat.RIGHT);
-		footer = ps.getArray(HTMLDOC_footer, String.class).orElse(new String[0]);
-		nowrap = ps.getBoolean(HTMLDOC_nowrap).orElse(false);
-		navlinks = ps.getArray(HTMLDOC_navlinks, String.class).orElse(new String[0]);
-		noResultsMessage = ps.getString(HTMLDOC_noResultsMessage).orElse("<p>no results</p>");
-		template = ps.getInstance(HTMLDOC_template, HtmlDocTemplate.class).orElseGet(BasicHtmlDocTemplate::new);
+	public HtmlDocSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
+		style = cp.getArray(HTMLDOC_style, String.class).orElse(new String[0]);
+		stylesheet = cp.getArray(HTMLDOC_stylesheet, String.class).orElse(new String[0]);
+		script = cp.getArray(HTMLDOC_script, String.class).orElse(new String[0]);
+		head = cp.getArray(HTMLDOC_head, String.class).orElse(new String[0]);
+		header = cp.getArray(HTMLDOC_header, String.class).orElse(new String[0]);
+		nav = cp.getArray(HTMLDOC_nav, String.class).orElse(new String[0]);
+		aside = cp.getArray(HTMLDOC_aside, String.class).orElse(new String[0]);
+		asideFloat = cp.get(HTMLDOC_asideFloat, AsideFloat.class).orElse(AsideFloat.RIGHT);
+		footer = cp.getArray(HTMLDOC_footer, String.class).orElse(new String[0]);
+		nowrap = cp.getBoolean(HTMLDOC_nowrap).orElse(false);
+		navlinks = cp.getArray(HTMLDOC_navlinks, String.class).orElse(new String[0]);
+		noResultsMessage = cp.getString(HTMLDOC_noResultsMessage).orElse("<p>no results</p>");
+		template = cp.getInstance(HTMLDOC_template, HtmlDocTemplate.class).orElseGet(BasicHtmlDocTemplate::new);
 
 		widgets = new HtmlWidgetMap();
-		widgets.append(ps.getInstanceArray(HTMLDOC_widgets, HtmlWidget.class).orElse(new HtmlWidget[0]));
+		widgets.append(cp.getInstanceArray(HTMLDOC_widgets, HtmlWidget.class).orElse(new HtmlWidget[0]));
 	}
 
 	@Override /* Context */
 	public HtmlDocSerializerBuilder builder() {
-		return new HtmlDocSerializerBuilder(getPropertyStore());
+		return new HtmlDocSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
index 2acb6e7..8916a6d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
@@ -41,10 +41,10 @@ public class HtmlDocSerializerBuilder extends HtmlStrippedDocSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public HtmlDocSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public HtmlDocSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -600,7 +600,7 @@ public class HtmlDocSerializerBuilder extends HtmlStrippedDocSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public HtmlDocSerializerBuilder apply(PropertyStore copyFrom) {
+	public HtmlDocSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParser.java
index 1fb4df4..fc31a87 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParser.java
@@ -48,7 +48,7 @@ public class HtmlParser extends XmlParser implements HtmlMetaProvider, HtmlCommo
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default parser, all default settings.*/
-	public static final HtmlParser DEFAULT = new HtmlParser(PropertyStore.DEFAULT);
+	public static final HtmlParser DEFAULT = new HtmlParser(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -61,15 +61,15 @@ public class HtmlParser extends XmlParser implements HtmlMetaProvider, HtmlCommo
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public HtmlParser(PropertyStore ps) {
-		super(ps, "text/html", "text/html+stripped");
+	public HtmlParser(ContextProperties cp) {
+		super(cp, "text/html", "text/html+stripped");
 	}
 
 	@Override /* Context */
 	public HtmlParserBuilder builder() {
-		return new HtmlParserBuilder(getPropertyStore());
+		return new HtmlParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
index 31aa15b..df6a8d9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
@@ -41,10 +41,10 @@ public class HtmlParserBuilder extends XmlParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public HtmlParserBuilder(PropertyStore ps) {
-		super(ps);
+	public HtmlParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -77,7 +77,7 @@ public class HtmlParserBuilder extends XmlParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public HtmlParserBuilder apply(PropertyStore copyFrom) {
+	public HtmlParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
index d000b82..adf4412 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
@@ -44,17 +44,17 @@ public final class HtmlSchemaDocSerializer extends HtmlDocSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store to use for creating the context for this serializer.
 	 */
-	public HtmlSchemaDocSerializer(PropertyStore ps) {
-		this(ps, "text/html", "text/html+schema");
+	public HtmlSchemaDocSerializer(ContextProperties cp) {
+		this(cp, "text/html", "text/html+schema");
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -78,9 +78,9 @@ public final class HtmlSchemaDocSerializer extends HtmlDocSerializer {
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public HtmlSchemaDocSerializer(PropertyStore ps, String produces, String accept) {
+	public HtmlSchemaDocSerializer(ContextProperties cp, String produces, String accept) {
 		super(
-			ps.builder()
+			cp.builder()
 				.setDefault(BEANTRAVERSE_detectRecursions, true)
 				.setDefault(BEANTRAVERSE_ignoreRecursions, true)
 				.build(),
@@ -88,7 +88,7 @@ public final class HtmlSchemaDocSerializer extends HtmlDocSerializer {
 			accept
 		);
 
-		generator = JsonSchemaGenerator.create().apply(getPropertyStore()).build();
+		generator = JsonSchemaGenerator.create().apply(getContextProperties()).build();
 	}
 
 	@Override /* Serializer */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
index 8a7ed69..54b1db2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
@@ -52,16 +52,16 @@ public class HtmlSchemaSerializer extends HtmlSerializer {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings.*/
-	public static final HtmlSchemaSerializer DEFAULT = new HtmlSchemaSerializer(PropertyStore.DEFAULT);
+	public static final HtmlSchemaSerializer DEFAULT = new HtmlSchemaSerializer(ContextProperties.DEFAULT);
 
 	/** Default serializer, all default settings.*/
-	public static final HtmlSchemaSerializer DEFAULT_READABLE = new Readable(PropertyStore.DEFAULT);
+	public static final HtmlSchemaSerializer DEFAULT_READABLE = new Readable(ContextProperties.DEFAULT);
 
 	/** Default serializer, single quotes, simple mode. */
-	public static final HtmlSchemaSerializer DEFAULT_SIMPLE = new Simple(PropertyStore.DEFAULT);
+	public static final HtmlSchemaSerializer DEFAULT_SIMPLE = new Simple(ContextProperties.DEFAULT);
 
 	/** Default serializer, single quotes, simple mode, with whitespace. */
-	public static final HtmlSchemaSerializer DEFAULT_SIMPLE_READABLE = new SimpleReadable(PropertyStore.DEFAULT);
+	public static final HtmlSchemaSerializer DEFAULT_SIMPLE_READABLE = new SimpleReadable(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Predefined subclasses
@@ -73,11 +73,11 @@ public class HtmlSchemaSerializer extends HtmlSerializer {
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Readable(PropertyStore ps) {
+		public Readable(ContextProperties cp) {
 			super(
-				ps.builder().setDefault(WSERIALIZER_useWhitespace, true).build()
+				cp.builder().setDefault(WSERIALIZER_useWhitespace, true).build()
 			);
 		}
 	}
@@ -88,11 +88,11 @@ public class HtmlSchemaSerializer extends HtmlSerializer {
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Simple(PropertyStore ps) {
+		public Simple(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.build()
 				);
@@ -105,11 +105,11 @@ public class HtmlSchemaSerializer extends HtmlSerializer {
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public SimpleReadable(PropertyStore ps) {
+		public SimpleReadable(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.setDefault(WSERIALIZER_useWhitespace, true)
 					.build()
@@ -126,24 +126,24 @@ public class HtmlSchemaSerializer extends HtmlSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store to use for creating the context for this serializer.
 	 */
-	public HtmlSchemaSerializer(PropertyStore ps) {
+	public HtmlSchemaSerializer(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.setDefault(BEANTRAVERSE_detectRecursions, true)
 				.setDefault(BEANTRAVERSE_ignoreRecursions, true)
 				.build(),
 			"text/html", "text/html+schema"
 		);
 
-		generator = JsonSchemaGenerator.create().apply(getPropertyStore()).build();
+		generator = JsonSchemaGenerator.create().apply(getContextProperties()).build();
 	}
 
 	@Override /* Context */
 	public HtmlSchemaSerializerBuilder builder() {
-		return new HtmlSchemaSerializerBuilder(getPropertyStore());
+		return new HtmlSchemaSerializerBuilder(getContextProperties());
 	}
 
 	@Override /* Context */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
index 344857e..bba8a0b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
@@ -45,10 +45,10 @@ public class HtmlSchemaSerializerBuilder extends HtmlSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public HtmlSchemaSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public HtmlSchemaSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -254,7 +254,7 @@ public class HtmlSchemaSerializerBuilder extends HtmlSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public HtmlSchemaSerializerBuilder apply(PropertyStore copyFrom) {
+	public HtmlSchemaSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index 792ed92..3358576 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -611,13 +611,13 @@ public class HtmlSerializer extends XmlSerializer implements HtmlMetaProvider, H
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings. */
-	public static final HtmlSerializer DEFAULT = new HtmlSerializer(PropertyStore.DEFAULT);
+	public static final HtmlSerializer DEFAULT = new HtmlSerializer(ContextProperties.DEFAULT);
 
 	/** Default serializer, single quotes. */
-	public static final HtmlSerializer DEFAULT_SQ = new HtmlSerializer.Sq(PropertyStore.DEFAULT);
+	public static final HtmlSerializer DEFAULT_SQ = new HtmlSerializer.Sq(ContextProperties.DEFAULT);
 
 	/** Default serializer, single quotes, whitespace added. */
-	public static final HtmlSerializer DEFAULT_SQ_READABLE = new HtmlSerializer.SqReadable(PropertyStore.DEFAULT);
+	public static final HtmlSerializer DEFAULT_SQ_READABLE = new HtmlSerializer.SqReadable(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -630,11 +630,11 @@ public class HtmlSerializer extends XmlSerializer implements HtmlMetaProvider, H
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Sq(PropertyStore ps) {
+		public Sq(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.build()
 			);
@@ -647,11 +647,11 @@ public class HtmlSerializer extends XmlSerializer implements HtmlMetaProvider, H
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public SqReadable(PropertyStore ps) {
+		public SqReadable(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.setDefault(WSERIALIZER_useWhitespace, true)
 					.build()
@@ -679,17 +679,17 @@ public class HtmlSerializer extends XmlSerializer implements HtmlMetaProvider, H
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public HtmlSerializer(PropertyStore ps) {
-		this(ps, "text/html", (String)null);
+	public HtmlSerializer(ContextProperties cp) {
+		this(cp, "text/html", (String)null);
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -713,19 +713,19 @@ public class HtmlSerializer extends XmlSerializer implements HtmlMetaProvider, H
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public HtmlSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
-		uriAnchorText = ps.get(HTML_uriAnchorText, AnchorText.class).orElse(AnchorText.TO_STRING);
-		detectLabelParameters = ! ps.getBoolean(HTML_disableDetectLabelParameters).orElse(false);
-		detectLinksInStrings = ! ps.getBoolean(HTML_disableDetectLinksInStrings).orElse(false);
-		labelParameter = ps.getString(HTML_labelParameter).orElse("label");
-		addKeyValueTableHeaders = ps.getBoolean(HTML_addKeyValueTableHeaders).orElse(false);
-		addBeanTypes = ps.getFirstBoolean(HTML_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
+	public HtmlSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
+		uriAnchorText = cp.get(HTML_uriAnchorText, AnchorText.class).orElse(AnchorText.TO_STRING);
+		detectLabelParameters = ! cp.getBoolean(HTML_disableDetectLabelParameters).orElse(false);
+		detectLinksInStrings = ! cp.getBoolean(HTML_disableDetectLinksInStrings).orElse(false);
+		labelParameter = cp.getString(HTML_labelParameter).orElse("label");
+		addKeyValueTableHeaders = cp.getBoolean(HTML_addKeyValueTableHeaders).orElse(false);
+		addBeanTypes = cp.getFirstBoolean(HTML_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
 	}
 
 	@Override /* Context */
 	public HtmlSerializerBuilder builder() {
-		return new HtmlSerializerBuilder(getPropertyStore());
+		return new HtmlSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
index 2650e0e..fcf691a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
@@ -41,10 +41,10 @@ public class HtmlSerializerBuilder extends XmlSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public HtmlSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public HtmlSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -170,7 +170,7 @@ public class HtmlSerializerBuilder extends XmlSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public HtmlSerializerBuilder apply(PropertyStore copyFrom) {
+	public HtmlSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
index 832857e..7788b3c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
@@ -40,7 +40,7 @@ public class HtmlStrippedDocSerializer extends HtmlSerializer {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings. */
-	public static final HtmlStrippedDocSerializer DEFAULT = new HtmlStrippedDocSerializer(PropertyStore.DEFAULT);
+	public static final HtmlStrippedDocSerializer DEFAULT = new HtmlStrippedDocSerializer(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Configurable properties
@@ -51,16 +51,16 @@ public class HtmlStrippedDocSerializer extends HtmlSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public HtmlStrippedDocSerializer(PropertyStore ps) {
-		this(ps, "text/html", "text/html+stripped");
+	public HtmlStrippedDocSerializer(ContextProperties cp) {
+		this(cp, "text/html", "text/html+stripped");
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -84,13 +84,13 @@ public class HtmlStrippedDocSerializer extends HtmlSerializer {
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public HtmlStrippedDocSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
+	public HtmlStrippedDocSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
 	}
 
 	@Override /* Context */
 	public HtmlStrippedDocSerializerBuilder builder() {
-		return new HtmlStrippedDocSerializerBuilder(getPropertyStore());
+		return new HtmlStrippedDocSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
index 6aa3f89..b62f186 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
@@ -38,10 +38,10 @@ public class HtmlStrippedDocSerializerBuilder extends HtmlSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public HtmlStrippedDocSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public HtmlStrippedDocSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -74,7 +74,7 @@ public class HtmlStrippedDocSerializerBuilder extends HtmlSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public HtmlStrippedDocSerializerBuilder apply(PropertyStore copyFrom) {
+	public HtmlStrippedDocSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
index e0b9fbf..651f857 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
@@ -265,7 +265,7 @@ public class HtmlAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Html} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Html} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Html> {
 
@@ -280,13 +280,13 @@ public class HtmlAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Html> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Html> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Html a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
index ed7f0f8..fe848c5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
@@ -24,7 +24,7 @@ import org.apache.juneau.svl.*;
 public class HtmlConfigAnnotation {
 
 	/**
-	 * Applies {@link HtmlConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link HtmlConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<HtmlConfig> {
 
@@ -39,15 +39,15 @@ public class HtmlConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<HtmlConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<HtmlConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			HtmlConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(HTML_addBeanTypes, bool(a.addBeanTypes()));
-			psb.setIfNotEmpty(HTML_addKeyValueTableHeaders, bool(a.addKeyValueTableHeaders()));
-			psb.setIfNotEmpty(HTML_disableDetectLabelParameters, bool(a.disableDetectLabelParameters()));
-			psb.setIfNotEmpty(HTML_disableDetectLinksInStrings, bool(a.disableDetectLinksInStrings()));
-			psb.setIfNotEmpty(HTML_labelParameter, string(a.labelParameter()));
-			psb.setIfNotEmpty(HTML_uriAnchorText, string(a.uriAnchorText()));
+			cpb.setIfNotEmpty(HTML_addBeanTypes, bool(a.addBeanTypes()));
+			cpb.setIfNotEmpty(HTML_addKeyValueTableHeaders, bool(a.addKeyValueTableHeaders()));
+			cpb.setIfNotEmpty(HTML_disableDetectLabelParameters, bool(a.disableDetectLabelParameters()));
+			cpb.setIfNotEmpty(HTML_disableDetectLinksInStrings, bool(a.disableDetectLinksInStrings()));
+			cpb.setIfNotEmpty(HTML_labelParameter, string(a.labelParameter()));
+			cpb.setIfNotEmpty(HTML_uriAnchorText, string(a.uriAnchorText()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
index 540f550..7b680f6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
@@ -30,7 +30,7 @@ import org.apache.juneau.svl.*;
 public class HtmlDocConfigAnnotation {
 
 	/**
-	 * Applies {@link HtmlDocConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link HtmlDocConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<HtmlDocConfig> {
 
@@ -45,23 +45,23 @@ public class HtmlDocConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<HtmlDocConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<HtmlDocConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			HtmlDocConfig a = ai.getAnnotation();
 
-			psb.setIf(a.aside().length > 0, HTMLDOC_aside, resolveList(a.aside(), psb.peek(String[].class, HTMLDOC_aside)));
-			psb.setIf(! "DEFAULT".equalsIgnoreCase(a.asideFloat()), HTMLDOC_asideFloat, a.asideFloat().toUpperCase());
-			psb.setIf(a.footer().length > 0, HTMLDOC_footer, resolveList(a.footer(), psb.peek(String[].class, HTMLDOC_footer)));
-			psb.setIf(a.head().length > 0, HTMLDOC_head, resolveList(a.head(), psb.peek(String[].class, HTMLDOC_head)));
-			psb.setIf(a.header().length > 0, HTMLDOC_header, resolveList(a.header(), psb.peek(String[].class, HTMLDOC_header)));
-			psb.setIf(a.nav().length > 0, HTMLDOC_nav, resolveList(a.nav(), psb.peek(String[].class, HTMLDOC_nav)));
-			psb.setIf(a.navlinks().length > 0, HTMLDOC_navlinks, resolveLinks(a.navlinks(), psb.peek(String[].class, HTMLDOC_navlinks)));
-			psb.setIfNotEmpty(HTMLDOC_noResultsMessage, string(a.noResultsMessage()));
-			psb.setIfNotEmpty(HTMLDOC_nowrap, bool(a.nowrap()));
-			psb.setIf(a.script().length > 0, HTMLDOC_script, resolveList(a.script(), psb.peek(String[].class, HTMLDOC_script)));
-			psb.setIf(a.style().length > 0, HTMLDOC_style, resolveList(a.style(), psb.peek(String[].class, HTMLDOC_style)));
-			psb.setIf(a.stylesheet().length > 0, HTMLDOC_stylesheet, resolveList(a.stylesheet(), psb.peek(String[].class, HTMLDOC_stylesheet)));
-			psb.setIf(a.template() != HtmlDocTemplate.Null.class, HTMLDOC_template, a.template());
-			asList(a.widgets()).stream().forEach(x -> psb.prependTo(HTMLDOC_widgets, x));
+			cpb.setIf(a.aside().length > 0, HTMLDOC_aside, resolveList(a.aside(), cpb.peek(String[].class, HTMLDOC_aside)));
+			cpb.setIf(! "DEFAULT".equalsIgnoreCase(a.asideFloat()), HTMLDOC_asideFloat, a.asideFloat().toUpperCase());
+			cpb.setIf(a.footer().length > 0, HTMLDOC_footer, resolveList(a.footer(), cpb.peek(String[].class, HTMLDOC_footer)));
+			cpb.setIf(a.head().length > 0, HTMLDOC_head, resolveList(a.head(), cpb.peek(String[].class, HTMLDOC_head)));
+			cpb.setIf(a.header().length > 0, HTMLDOC_header, resolveList(a.header(), cpb.peek(String[].class, HTMLDOC_header)));
+			cpb.setIf(a.nav().length > 0, HTMLDOC_nav, resolveList(a.nav(), cpb.peek(String[].class, HTMLDOC_nav)));
+			cpb.setIf(a.navlinks().length > 0, HTMLDOC_navlinks, resolveLinks(a.navlinks(), cpb.peek(String[].class, HTMLDOC_navlinks)));
+			cpb.setIfNotEmpty(HTMLDOC_noResultsMessage, string(a.noResultsMessage()));
+			cpb.setIfNotEmpty(HTMLDOC_nowrap, bool(a.nowrap()));
+			cpb.setIf(a.script().length > 0, HTMLDOC_script, resolveList(a.script(), cpb.peek(String[].class, HTMLDOC_script)));
+			cpb.setIf(a.style().length > 0, HTMLDOC_style, resolveList(a.style(), cpb.peek(String[].class, HTMLDOC_style)));
+			cpb.setIf(a.stylesheet().length > 0, HTMLDOC_stylesheet, resolveList(a.stylesheet(), cpb.peek(String[].class, HTMLDOC_stylesheet)));
+			cpb.setIf(a.template() != HtmlDocTemplate.Null.class, HTMLDOC_template, a.template());
+			asList(a.widgets()).stream().forEach(x -> cpb.prependTo(HTMLDOC_widgets, x));
 		}
 
 		private static final Pattern INDEXED_LINK_PATTERN = Pattern.compile("(?s)(\\S*)\\[(\\d+)\\]\\:(.*)");
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
index e1035b7..3250ebc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
@@ -172,7 +172,7 @@ public class HtmlLinkAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link HtmlLink} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link HtmlLink} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<HtmlLink> {
 
@@ -187,13 +187,13 @@ public class HtmlLinkAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<HtmlLink> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<HtmlLink> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			HtmlLink a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/BodyAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/BodyAnnotation.java
index 680f77f..175f649 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/BodyAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/BodyAnnotation.java
@@ -357,7 +357,7 @@ public class BodyAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Body} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Body} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Body> {
 
@@ -372,13 +372,13 @@ public class BodyAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Body> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Body> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Body a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
index 038bcb8..6ca3d88 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
@@ -1074,7 +1074,7 @@ public class FormDataAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link FormData} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link FormData} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<FormData> {
 
@@ -1089,13 +1089,13 @@ public class FormDataAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<FormData> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<FormData> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			FormData a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
index 43ad923..40b9ae2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
@@ -1075,7 +1075,7 @@ public class HeaderAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Header} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Header} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Header> {
 
@@ -1090,13 +1090,13 @@ public class HeaderAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Header> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Header> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Header a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
index 7891f35..7ff5bd1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
@@ -985,7 +985,7 @@ public class PathAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Path} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Path} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Path> {
 
@@ -1000,13 +1000,13 @@ public class PathAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Path> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Path> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Path a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
index 4cc01d7..7ddfd2a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
@@ -1074,7 +1074,7 @@ public class QueryAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Query} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Query} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Query> {
 
@@ -1089,13 +1089,13 @@ public class QueryAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Query> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Query> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Query a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
index 0972a2f..27341c9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
@@ -175,7 +175,7 @@ public class RequestAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Request} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Request} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Request> {
 
@@ -190,13 +190,13 @@ public class RequestAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Request> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Request> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Request a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
index 4629040..c852e04 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
@@ -401,7 +401,7 @@ public class ResponseAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Response} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Response} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Response> {
 
@@ -416,13 +416,13 @@ public class ResponseAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Response> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Response> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Response a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java
index 716df51..9ec5e1b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseBodyAnnotation.java
@@ -139,7 +139,7 @@ public class ResponseBodyAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link ResponseBody} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link ResponseBody} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<ResponseBody> {
 
@@ -154,13 +154,13 @@ public class ResponseBodyAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<ResponseBody> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<ResponseBody> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			ResponseBody a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java
index 0a51e11..2bcf00c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseHeaderAnnotation.java
@@ -975,7 +975,7 @@ public class ResponseHeaderAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link ResponseHeader} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link ResponseHeader} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<ResponseHeader> {
 
@@ -990,13 +990,13 @@ public class ResponseHeaderAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<ResponseHeader> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<ResponseHeader> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			ResponseHeader a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation.java
index f3cdc67..423c300 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseStatusAnnotation.java
@@ -139,7 +139,7 @@ public class ResponseStatusAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link ResponseStatus} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link ResponseStatus} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<ResponseStatus> {
 
@@ -154,13 +154,13 @@ public class ResponseStatusAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<ResponseStatus> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<ResponseStatus> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			ResponseStatus a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartParser.java
index 34d20ef..a4c8e39 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartParser.java
@@ -30,7 +30,7 @@ import org.apache.juneau.parser.*;
  *
  * <p>
  * Implementations must include either a public no-args constructor or a public constructor that takes in a single
- * {@link PropertyStore} object.
+ * {@link ContextProperties} object.
  */
 public interface HttpPartParser {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSerializer.java
index 6a909b0..f6475a6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSerializer.java
@@ -42,7 +42,7 @@ import org.apache.juneau.serializer.*;
  *
  * <p>
  * Implementations must include either a public no-args constructor or a public constructor that takes in a single
- * {@link PropertyStore} object.
+ * {@link ContextProperties} object.
  */
 public interface HttpPartSerializer {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
index 58339ee..d689238 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
@@ -33,31 +33,31 @@ public class RequestBeanMeta {
 	 * Create metadata from specified parameter.
 	 *
 	 * @param mpi The method parameter.
-	 * @param ps
+	 * @param cp
 	 * 	Configuration information used to instantiate part serializers and part parsers.
 	 * 	<br>Can be <jk>null</jk>.
 	 * @return Metadata about the parameter, or <jk>null</jk> if parameter or parameter type not annotated with {@link Request}.
 	 */
-	public static RequestBeanMeta create(ParamInfo mpi, PropertyStore ps) {
+	public static RequestBeanMeta create(ParamInfo mpi, ContextProperties cp) {
 		if (! mpi.hasAnnotation(Request.class))
 			return null;
-		return new RequestBeanMeta.Builder(ps).apply(mpi).build();
+		return new RequestBeanMeta.Builder(cp).apply(mpi).build();
 	}
 
 	/**
 	 * Create metadata from specified class.
 	 *
 	 * @param c The class annotated with {@link Request}.
-	 * @param ps
+	 * @param cp
 	 * 	Configuration information used to instantiate part serializers and part parsers.
 	 * 	<br>Can be <jk>null</jk>.
 	 * @return Metadata about the class, or <jk>null</jk> if class not annotated with {@link Request}.
 	 */
-	public static RequestBeanMeta create(Class<?> c, PropertyStore ps) {
+	public static RequestBeanMeta create(Class<?> c, ContextProperties cp) {
 		ClassInfo ci = ClassInfo.of(c);
 		if (! ci.hasAnnotation(Request.class))
 			return null;
-		return new RequestBeanMeta.Builder(ps).apply(c).build();
+		return new RequestBeanMeta.Builder(cp).apply(c).build();
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -71,8 +71,8 @@ public class RequestBeanMeta {
 
 	RequestBeanMeta(Builder b) {
 		this.cm = b.cm;
-		this.serializer = castOrCreate(HttpPartSerializer.class, b.serializer, true, b.ps);
-		this.parser = castOrCreate(HttpPartParser.class, b.parser, true, b.ps);
+		this.serializer = castOrCreate(HttpPartSerializer.class, b.serializer, true, b.cp);
+		this.parser = castOrCreate(HttpPartParser.class, b.parser, true, b.cp);
 		Map<String,RequestBeanPropertyMeta> properties = new LinkedHashMap<>();
 		for (Map.Entry<String,RequestBeanPropertyMeta.Builder> e : b.properties.entrySet())
 			properties.put(e.getKey(), e.getValue().build(serializer, parser));
@@ -81,13 +81,13 @@ public class RequestBeanMeta {
 
 	static class Builder {
 		ClassMeta<?> cm;
-		PropertyStore ps;
+		ContextProperties cp;
 		Class<? extends HttpPartSerializer> serializer;
 		Class<? extends HttpPartParser> parser;
 		Map<String,RequestBeanPropertyMeta.Builder> properties = new LinkedHashMap<>();
 
-		Builder(PropertyStore ps) {
-			this.ps = ps;
+		Builder(ContextProperties cp) {
+			this.cp = cp;
 		}
 
 		Builder apply(ParamInfo mpi) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
index 9287e66..204e826 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
@@ -48,15 +48,15 @@ public class RequestBeanPropertyMeta {
 		this.partType = b.partType;
 		this.schema = b.schema;
 		this.getter = b.getter;
-		this.serializer = schema.getSerializer() == null ? serializer : castOrCreate(HttpPartSerializer.class, schema.getSerializer(), true, b.ps);
-		this.parser = schema.getParser() == null ? parser : castOrCreate(HttpPartParser.class, schema.getParser(), true, b.ps);
+		this.serializer = schema.getSerializer() == null ? serializer : castOrCreate(HttpPartSerializer.class, schema.getSerializer(), true, b.cp);
+		this.parser = schema.getParser() == null ? parser : castOrCreate(HttpPartParser.class, schema.getParser(), true, b.cp);
 	}
 
 	static class Builder {
 		HttpPartType partType;
 		HttpPartSchema schema;
 		Method getter;
-		PropertyStore ps = PropertyStore.DEFAULT;
+		ContextProperties cp = ContextProperties.DEFAULT;
 
 		Builder getter(Method value) {
 			getter = value;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
index 002d8ab..d4d865d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
@@ -35,22 +35,22 @@ public class ResponseBeanMeta {
 	/**
 	 * Represents a non-existent meta object.
 	 */
-	public static ResponseBeanMeta NULL = new ResponseBeanMeta(new Builder(PropertyStore.DEFAULT));
+	public static ResponseBeanMeta NULL = new ResponseBeanMeta(new Builder(ContextProperties.DEFAULT));
 
 	/**
 	 * Create metadata from specified class.
 	 *
 	 * @param t The class annotated with {@link Response}.
-	 * @param ps
+	 * @param cp
 	 * 	Configuration information used to instantiate part serializers and part parsers.
 	 * 	<br>Can be <jk>null</jk>.
 	 * @return Metadata about the class, or <jk>null</jk> if class not annotated with {@link Response}.
 	 */
-	public static ResponseBeanMeta create(Type t, PropertyStore ps) {
+	public static ResponseBeanMeta create(Type t, ContextProperties cp) {
 		ClassInfo ci = ClassInfo.of(t).unwrap(Value.class, Optional.class);
 		if (! ci.hasAnnotation(Response.class))
 			return null;
-		Builder b = new Builder(ps);
+		Builder b = new Builder(cp);
 		b.apply(ci.innerType());
 		for (Response r : ci.getAnnotations(Response.class))
 			b.apply(r);
@@ -61,15 +61,15 @@ public class ResponseBeanMeta {
 	 * Create metadata from specified method return.
 	 *
 	 * @param m The method annotated with {@link Response}.
-	 * @param ps
+	 * @param cp
 	 * 	Configuration information used to instantiate part serializers and part parsers.
 	 * 	<br>Can be <jk>null</jk>.
 	 * @return Metadata about the class, or <jk>null</jk> if class not annotated with {@link Response}.
 	 */
-	public static ResponseBeanMeta create(MethodInfo m, PropertyStore ps) {
+	public static ResponseBeanMeta create(MethodInfo m, ContextProperties cp) {
 		if (! (m.hasAnnotation(Response.class) || m.getReturnType().unwrap(Value.class,Optional.class).hasAnnotation(Response.class)))
 			return null;
-		Builder b = new Builder(ps);
+		Builder b = new Builder(cp);
 		b.apply(m.getReturnType().unwrap(Value.class, Optional.class).innerType());
 		for (Response r : m.getAnnotations(Response.class))
 			b.apply(r);
@@ -80,15 +80,15 @@ public class ResponseBeanMeta {
 	 * Create metadata from specified method parameter.
 	 *
 	 * @param mpi The method parameter.
-	 * @param ps
+	 * @param cp
 	 * 	Configuration information used to instantiate part serializers and part parsers.
 	 * 	<br>Can be <jk>null</jk>.
 	 * @return Metadata about the class, or <jk>null</jk> if class not annotated with {@link Response}.
 	 */
-	public static ResponseBeanMeta create(ParamInfo mpi, PropertyStore ps) {
+	public static ResponseBeanMeta create(ParamInfo mpi, ContextProperties cp) {
 		if (! mpi.hasAnnotation(Response.class))
 			return null;
-		Builder b = new Builder(ps);
+		Builder b = new Builder(cp);
 		b.apply(mpi.getParameterType().unwrap(Value.class, Optional.class).innerType());
 		for (Response r : mpi.getAnnotations(Response.class))
 			b.apply(r);
@@ -111,8 +111,8 @@ public class ResponseBeanMeta {
 	ResponseBeanMeta(Builder b) {
 		this.cm = b.cm;
 		this.code = b.code;
-		this.partSerializer = castOrCreate(HttpPartSerializer.class, b.partSerializer, true, b.ps);
-		this.partParser = castOrCreate(HttpPartParser.class, b.partParser, true, b.ps);
+		this.partSerializer = castOrCreate(HttpPartSerializer.class, b.partSerializer, true, b.cp);
+		this.partParser = castOrCreate(HttpPartParser.class, b.partParser, true, b.cp);
 		this.schema = b.schema.build();
 
 		Map<String,ResponseBeanPropertyMeta> properties = new LinkedHashMap<>();
@@ -139,7 +139,7 @@ public class ResponseBeanMeta {
 	static class Builder {
 		ClassMeta<?> cm;
 		int code;
-		PropertyStore ps;
+		ContextProperties cp;
 		Class<? extends HttpPartSerializer> partSerializer;
 		Class<? extends HttpPartParser> partParser;
 		HttpPartSchemaBuilder schema = HttpPartSchema.create();
@@ -148,8 +148,8 @@ public class ResponseBeanMeta {
 		ResponseBeanPropertyMeta.Builder bodyMethod;
 		ResponseBeanPropertyMeta.Builder statusMethod;
 
-		Builder(PropertyStore ps) {
-			this.ps = ps;
+		Builder(ContextProperties cp) {
+			this.cp = cp;
 		}
 
 		Builder apply(Type t) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanPropertyMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanPropertyMeta.java
index 5db236e..dcc9736 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanPropertyMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanPropertyMeta.java
@@ -48,8 +48,8 @@ public class ResponseBeanPropertyMeta {
 		this.partType = b.partType;
 		this.schema = b.schema;
 		this.getter = b.getter;
-		this.serializer = schema.getSerializer() == null ? serializer : castOrCreate(HttpPartSerializer.class, schema.getSerializer(), true, b.ps);
-		this.parser = schema.getParser() == null ? parser : castOrCreate(HttpPartParser.class, schema.getParser(), true, b.ps);
+		this.serializer = schema.getSerializer() == null ? serializer : castOrCreate(HttpPartSerializer.class, schema.getSerializer(), true, b.cp);
+		this.parser = schema.getParser() == null ? parser : castOrCreate(HttpPartParser.class, schema.getParser(), true, b.cp);
 	}
 
 	static class Builder {
@@ -57,7 +57,7 @@ public class ResponseBeanPropertyMeta {
 		HttpPartSchema schema = HttpPartSchema.DEFAULT;
 		String name;
 		Method getter;
-		PropertyStore ps = PropertyStore.DEFAULT;
+		ContextProperties cp = ContextProperties.DEFAULT;
 
 		Builder name(String value) {
 			name = value;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParser.java
index bd0af7d..7c010e6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParser.java
@@ -42,7 +42,7 @@ public final class JsoParser extends InputStreamParser implements JsoMetaProvide
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default parser, all default settings.*/
-	public static final JsoParser DEFAULT = new JsoParser(PropertyStore.DEFAULT);
+	public static final JsoParser DEFAULT = new JsoParser(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -54,15 +54,15 @@ public final class JsoParser extends InputStreamParser implements JsoMetaProvide
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public JsoParser(PropertyStore ps) {
-		super(ps, "application/x-java-serialized-object");
+	public JsoParser(ContextProperties cp) {
+		super(cp, "application/x-java-serialized-object");
 	}
 
 	@Override /* Context */
 	public JsoParserBuilder builder() {
-		return new JsoParserBuilder(getPropertyStore());
+		return new JsoParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
index 1203f6f..bd6ac9b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
@@ -37,10 +37,10 @@ public class JsoParserBuilder extends InputStreamParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public JsoParserBuilder(PropertyStore ps) {
-		super(ps);
+	public JsoParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -73,7 +73,7 @@ public class JsoParserBuilder extends InputStreamParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public JsoParserBuilder apply(PropertyStore copyFrom) {
+	public JsoParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializer.java
index 226757d..0b6f7c3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializer.java
@@ -44,7 +44,7 @@ public class JsoSerializer extends OutputStreamSerializer implements JsoMetaProv
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings.*/
-	public static final JsoSerializer DEFAULT = new JsoSerializer(PropertyStore.DEFAULT);
+	public static final JsoSerializer DEFAULT = new JsoSerializer(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
@@ -56,15 +56,15 @@ public class JsoSerializer extends OutputStreamSerializer implements JsoMetaProv
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public JsoSerializer(PropertyStore ps) {
-		super(ps, "application/x-java-serialized-object", null);
+	public JsoSerializer(ContextProperties cp) {
+		super(cp, "application/x-java-serialized-object", null);
 	}
 
 	@Override /* Context */
 	public JsoSerializerBuilder builder() {
-		return new JsoSerializerBuilder(getPropertyStore());
+		return new JsoSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
index a656646..3ad66c3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
@@ -37,10 +37,10 @@ public class JsoSerializerBuilder extends OutputStreamSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public JsoSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public JsoSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -73,7 +73,7 @@ public class JsoSerializerBuilder extends OutputStreamSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public JsoSerializerBuilder apply(PropertyStore copyFrom) {
+	public JsoSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
index 3db4805..0c384a1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
@@ -145,7 +145,7 @@ public class JsoAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Jso} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Jso} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Jso> {
 
@@ -160,13 +160,13 @@ public class JsoAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Jso> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Jso> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Jso a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigAnnotation.java
index 3bb4a8b..e83cb8c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigAnnotation.java
@@ -22,7 +22,7 @@ import org.apache.juneau.svl.*;
 public class JsoConfigAnnotation {
 
 	/**
-	 * Applies {@link JsoConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link JsoConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<JsoConfig> {
 
@@ -37,7 +37,7 @@ public class JsoConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<JsoConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<JsoConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
index 1cf2188..c0f6fe5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
@@ -56,7 +56,7 @@ import org.apache.juneau.parser.*;
  * 		JSON objects (<js>"{...}"</js>) are converted to {@link OMap OMaps}.
  * 		<b>Note:</b>  If a <code><xa>_type</xa>=<xs>'xxx'</xs></code> attribute is specified on the object, then an
  * 		attempt is made to convert the object to an instance of the specified Java bean class.
- * 		See the <c>beanTypeName</c> setting on the {@link PropertyStore} for more information about parsing
+ * 		See the <c>beanTypeName</c> setting on the {@link ContextProperties} for more information about parsing
  * 		beans from JSON.
  * 	<li>
  * 		JSON arrays (<js>"[...]"</js>) are converted to {@link OList OLists}.
@@ -165,10 +165,10 @@ public class JsonParser extends ReaderParser implements JsonMetaProvider, JsonCo
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default parser, all default settings.*/
-	public static final JsonParser DEFAULT = new JsonParser(PropertyStore.DEFAULT);
+	public static final JsonParser DEFAULT = new JsonParser(ContextProperties.DEFAULT);
 
 	/** Default parser, all default settings.*/
-	public static final JsonParser DEFAULT_STRICT = new JsonParser.Strict(PropertyStore.DEFAULT);
+	public static final JsonParser DEFAULT_STRICT = new JsonParser.Strict(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -181,10 +181,10 @@ public class JsonParser extends ReaderParser implements JsonMetaProvider, JsonCo
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Strict(PropertyStore ps) {
-			super(ps.builder().setDefault(PARSER_strict, true).setDefault(JSON_validateEnd, true).build());
+		public Strict(ContextProperties cp) {
+			super(cp.builder().setDefault(PARSER_strict, true).setDefault(JSON_validateEnd, true).build());
 		}
 	}
 
@@ -201,26 +201,26 @@ public class JsonParser extends ReaderParser implements JsonMetaProvider, JsonCo
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public JsonParser(PropertyStore ps) {
-		this(ps, "application/json", "text/json");
+	public JsonParser(ContextProperties cp) {
+		this(cp, "application/json", "text/json");
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 * @param consumes The list of media types that this parser consumes (e.g. <js>"application/json"</js>).
 	 */
-	public JsonParser(PropertyStore ps, String...consumes) {
-		super(ps, consumes);
-		validateEnd = ps.getBoolean(JSON_validateEnd).orElse(false);
+	public JsonParser(ContextProperties cp, String...consumes) {
+		super(cp, consumes);
+		validateEnd = cp.getBoolean(JSON_validateEnd).orElse(false);
 	}
 
 	@Override /* Context */
 	public JsonParserBuilder builder() {
-		return new JsonParserBuilder(getPropertyStore());
+		return new JsonParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
index 4ec485e..ffdbd21 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
@@ -41,10 +41,10 @@ public class JsonParserBuilder extends ReaderParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public JsonParserBuilder(PropertyStore ps) {
-		super(ps);
+	public JsonParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -94,7 +94,7 @@ public class JsonParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public JsonParserBuilder apply(PropertyStore copyFrom) {
+	public JsonParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
index 0a56714..0f4a433 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
@@ -48,16 +48,16 @@ public class JsonSchemaSerializer extends JsonSerializer implements JsonSchemaMe
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings.*/
-	public static final JsonSchemaSerializer DEFAULT = new JsonSchemaSerializer(PropertyStore.DEFAULT);
+	public static final JsonSchemaSerializer DEFAULT = new JsonSchemaSerializer(ContextProperties.DEFAULT);
 
 	/** Default serializer, all default settings.*/
-	public static final JsonSchemaSerializer DEFAULT_READABLE = new Readable(PropertyStore.DEFAULT);
+	public static final JsonSchemaSerializer DEFAULT_READABLE = new Readable(ContextProperties.DEFAULT);
 
 	/** Default serializer, single quotes, simple mode. */
-	public static final JsonSchemaSerializer DEFAULT_SIMPLE = new Simple(PropertyStore.DEFAULT);
+	public static final JsonSchemaSerializer DEFAULT_SIMPLE = new Simple(ContextProperties.DEFAULT);
 
 	/** Default serializer, single quotes, simple mode, with whitespace. */
-	public static final JsonSchemaSerializer DEFAULT_SIMPLE_READABLE = new SimpleReadable(PropertyStore.DEFAULT);
+	public static final JsonSchemaSerializer DEFAULT_SIMPLE_READABLE = new SimpleReadable(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -70,11 +70,11 @@ public class JsonSchemaSerializer extends JsonSerializer implements JsonSchemaMe
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Readable(PropertyStore ps) {
+		public Readable(ContextProperties cp) {
 			super(
-				ps.builder().setDefault(WSERIALIZER_useWhitespace, true).build()
+				cp.builder().setDefault(WSERIALIZER_useWhitespace, true).build()
 			);
 		}
 	}
@@ -85,11 +85,11 @@ public class JsonSchemaSerializer extends JsonSerializer implements JsonSchemaMe
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Simple(PropertyStore ps) {
+		public Simple(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(JSON_simpleMode, true)
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.build()
@@ -103,11 +103,11 @@ public class JsonSchemaSerializer extends JsonSerializer implements JsonSchemaMe
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public SimpleReadable(PropertyStore ps) {
+		public SimpleReadable(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(JSON_simpleMode, true)
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.setDefault(WSERIALIZER_useWhitespace, true)
@@ -128,23 +128,23 @@ public class JsonSchemaSerializer extends JsonSerializer implements JsonSchemaMe
 	/**
 	 * Constructor.
 	 *
-	 * @param ps Initialize with the specified config property store.
+	 * @param cp Initialize with the specified config property store.
 	 */
-	public JsonSchemaSerializer(PropertyStore ps) {
+	public JsonSchemaSerializer(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.setDefault(BEANTRAVERSE_detectRecursions, true)
 				.setDefault(BEANTRAVERSE_ignoreRecursions, true)
 				.build(),
 			"application/json", "application/json+schema,text/json+schema"
 		);
 
-		generator = JsonSchemaGenerator.create().apply(getPropertyStore()).build();
+		generator = JsonSchemaGenerator.create().apply(getContextProperties()).build();
 	}
 
 	@Override /* Context */
 	public JsonSchemaSerializerBuilder builder() {
-		return new JsonSchemaSerializerBuilder(getPropertyStore());
+		return new JsonSchemaSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
index a9cb186..707c0e3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
@@ -44,10 +44,10 @@ public class JsonSchemaSerializerBuilder extends JsonSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public JsonSchemaSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public JsonSchemaSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -253,7 +253,7 @@ public class JsonSchemaSerializerBuilder extends JsonSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public JsonSchemaSerializerBuilder apply(PropertyStore copyFrom) {
+	public JsonSchemaSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
index c076ea1..52792de 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -277,10 +277,10 @@ public class JsonSerializer extends WriterSerializer implements JsonMetaProvider
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings.*/
-	public static final JsonSerializer DEFAULT = new JsonSerializer(PropertyStore.DEFAULT);
+	public static final JsonSerializer DEFAULT = new JsonSerializer(ContextProperties.DEFAULT);
 
 	/** Default serializer, all default settings.*/
-	public static final JsonSerializer DEFAULT_READABLE = new Readable(PropertyStore.DEFAULT);
+	public static final JsonSerializer DEFAULT_READABLE = new Readable(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -293,11 +293,11 @@ public class JsonSerializer extends WriterSerializer implements JsonMetaProvider
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Readable(PropertyStore ps) {
+		public Readable(ContextProperties cp) {
 			super(
-				ps.builder().setDefault(WSERIALIZER_useWhitespace, true).build()
+				cp.builder().setDefault(WSERIALIZER_useWhitespace, true).build()
 			);
 		}
 	}
@@ -311,11 +311,11 @@ public class JsonSerializer extends WriterSerializer implements JsonMetaProvider
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public ReadableSafe(PropertyStore ps) {
+		public ReadableSafe(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(JSON_simpleMode, true)
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.setDefault(WSERIALIZER_useWhitespace, true)
@@ -342,17 +342,17 @@ public class JsonSerializer extends WriterSerializer implements JsonMetaProvider
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public JsonSerializer(PropertyStore ps) {
-		this(ps, "application/json", "application/json,text/json");
+	public JsonSerializer(ContextProperties cp) {
+		this(cp, "application/json", "application/json,text/json");
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -375,17 +375,17 @@ public class JsonSerializer extends WriterSerializer implements JsonMetaProvider
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public JsonSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
+	public JsonSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
 
-		simpleMode = ps.getBoolean(JSON_simpleMode).orElse(false);
-		escapeSolidus = ps.getBoolean(JSON_escapeSolidus).orElse(false);
-		addBeanTypes = ps.getFirstBoolean(JSON_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
+		simpleMode = cp.getBoolean(JSON_simpleMode).orElse(false);
+		escapeSolidus = cp.getBoolean(JSON_escapeSolidus).orElse(false);
+		addBeanTypes = cp.getFirstBoolean(JSON_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
 	}
 
 	@Override /* Context */
 	public JsonSerializerBuilder builder() {
-		return new JsonSerializerBuilder(getPropertyStore());
+		return new JsonSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
index 5e19342..1811d63 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
@@ -41,10 +41,10 @@ public class JsonSerializerBuilder extends WriterSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public JsonSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public JsonSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -130,7 +130,7 @@ public class JsonSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public JsonSerializerBuilder apply(PropertyStore copyFrom) {
+	public JsonSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
index ea36ae0..e461a24 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
@@ -33,20 +33,20 @@ public class SimpleJsonParser extends JsonParser {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default parser, Accept=application/json+simple. */
-	public static final SimpleJsonParser DEFAULT = new SimpleJsonParser(PropertyStore.DEFAULT);
+	public static final SimpleJsonParser DEFAULT = new SimpleJsonParser(ContextProperties.DEFAULT);
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public SimpleJsonParser(PropertyStore ps) {
-		super(ps, "application/json+simple", "text/json+simple", "application/json", "text/json");
+	public SimpleJsonParser(ContextProperties cp) {
+		super(cp, "application/json+simple", "text/json+simple", "application/json", "text/json");
 	}
 
 	@Override /* Context */
 	public SimpleJsonParserBuilder builder() {
-		return new SimpleJsonParserBuilder(getPropertyStore());
+		return new SimpleJsonParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParserBuilder.java
index e7cd24b..c36ce6e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParserBuilder.java
@@ -37,10 +37,10 @@ public class SimpleJsonParserBuilder extends JsonParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public SimpleJsonParserBuilder(PropertyStore ps) {
-		super(ps);
+	public SimpleJsonParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -73,7 +73,7 @@ public class SimpleJsonParserBuilder extends JsonParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public SimpleJsonParserBuilder apply(PropertyStore copyFrom) {
+	public SimpleJsonParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
index 8d2f6b7..b932c1f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
@@ -43,10 +43,10 @@ public class SimpleJsonSerializer extends JsonSerializer {
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, single quotes, {@link #JSON_simpleMode simple mode}. */
-	public static final SimpleJsonSerializer DEFAULT = new SimpleJsonSerializer(PropertyStore.DEFAULT);
+	public static final SimpleJsonSerializer DEFAULT = new SimpleJsonSerializer(ContextProperties.DEFAULT);
 
 	/** Default serializer, single quotes, simple mode, with whitespace. */
-	public static final SimpleJsonSerializer DEFAULT_READABLE = new Readable(PropertyStore.DEFAULT);
+	public static final SimpleJsonSerializer DEFAULT_READABLE = new Readable(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Predefined subclasses
@@ -58,11 +58,11 @@ public class SimpleJsonSerializer extends JsonSerializer {
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Readable(PropertyStore ps) {
+		public Readable(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(JSON_simpleMode, true)
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.setDefault(WSERIALIZER_useWhitespace, true)
@@ -74,11 +74,11 @@ public class SimpleJsonSerializer extends JsonSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public SimpleJsonSerializer(PropertyStore ps) {
+	public SimpleJsonSerializer(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.setDefault(JSON_simpleMode, true)
 				.setDefault(WSERIALIZER_quoteChar, '\'')
 				.build(),
@@ -88,7 +88,7 @@ public class SimpleJsonSerializer extends JsonSerializer {
 
 	@Override /* Context */
 	public SimpleJsonSerializerBuilder builder() {
-		return new SimpleJsonSerializerBuilder(getPropertyStore());
+		return new SimpleJsonSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializerBuilder.java
index b3e5096..235c67c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializerBuilder.java
@@ -37,10 +37,10 @@ public class SimpleJsonSerializerBuilder extends JsonSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public SimpleJsonSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public SimpleJsonSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -73,7 +73,7 @@ public class SimpleJsonSerializerBuilder extends JsonSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public SimpleJsonSerializerBuilder apply(PropertyStore copyFrom) {
+	public SimpleJsonSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
index a999c11..7373683 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
@@ -167,7 +167,7 @@ public class JsonAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Json} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Json} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Json> {
 
@@ -182,13 +182,13 @@ public class JsonAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Json> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Json> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Json a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
index 2823ab2..7032fa4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.juneau.svl.*;
 public class JsonConfigAnnotation {
 
 	/**
-	 * Applies {@link JsonConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link JsonConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<JsonConfig> {
 
@@ -40,13 +40,13 @@ public class JsonConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<JsonConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<JsonConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			JsonConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(JSON_addBeanTypes, bool(a.addBeanTypes()));
-			psb.setIfNotEmpty(JSON_escapeSolidus, bool(a.escapeSolidus()));
-			psb.setIfNotEmpty(JSON_simpleMode, bool(a.simpleMode()));
-			psb.setIfNotEmpty(JSON_validateEnd, bool(a.validateEnd()));
+			cpb.setIfNotEmpty(JSON_addBeanTypes, bool(a.addBeanTypes()));
+			cpb.setIfNotEmpty(JSON_escapeSolidus, bool(a.escapeSolidus()));
+			cpb.setIfNotEmpty(JSON_simpleMode, bool(a.simpleMode()));
+			cpb.setIfNotEmpty(JSON_validateEnd, bool(a.validateEnd()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
index b37469c..9397768 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
@@ -295,7 +295,7 @@ public class JsonSchemaGenerator extends BeanTraverseContext implements JsonSche
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings.*/
-	public static final JsonSchemaGenerator DEFAULT = new JsonSchemaGenerator(PropertyStore.DEFAULT);
+	public static final JsonSchemaGenerator DEFAULT = new JsonSchemaGenerator(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -313,29 +313,29 @@ public class JsonSchemaGenerator extends BeanTraverseContext implements JsonSche
 	/**
 	 * Constructor.
 	 *
-	 * @param ps Initialize with the specified config property store.
+	 * @param cp Initialize with the specified config property store.
 	 */
-	public JsonSchemaGenerator(PropertyStore ps) {
-		super(ps.builder().setDefault(BEANTRAVERSE_detectRecursions, true).setDefault(BEANTRAVERSE_ignoreRecursions, true).build());
+	public JsonSchemaGenerator(ContextProperties cp) {
+		super(cp.builder().setDefault(BEANTRAVERSE_detectRecursions, true).setDefault(BEANTRAVERSE_ignoreRecursions, true).build());
 
-		useBeanDefs = ps.getBoolean(JSONSCHEMA_useBeanDefs).orElse(false);
-		allowNestedExamples = ps.getBoolean(JSONSCHEMA_allowNestedExamples).orElse(false);
-		allowNestedDescriptions = ps.getBoolean(JSONSCHEMA_allowNestedDescriptions).orElse(false);
-		beanDefMapper = ps.getInstance(JSONSCHEMA_beanDefMapper, BeanDefMapper.class).orElseGet(BasicBeanDefMapper::new);
-		addExamplesTo = TypeCategory.parse(ps.getString(JSONSCHEMA_addExamplesTo).orElse(null));
-		addDescriptionsTo = TypeCategory.parse(ps.getString(JSONSCHEMA_addDescriptionsTo).orElse(null));
+		useBeanDefs = cp.getBoolean(JSONSCHEMA_useBeanDefs).orElse(false);
+		allowNestedExamples = cp.getBoolean(JSONSCHEMA_allowNestedExamples).orElse(false);
+		allowNestedDescriptions = cp.getBoolean(JSONSCHEMA_allowNestedDescriptions).orElse(false);
+		beanDefMapper = cp.getInstance(JSONSCHEMA_beanDefMapper, BeanDefMapper.class).orElseGet(BasicBeanDefMapper::new);
+		addExamplesTo = TypeCategory.parse(cp.getString(JSONSCHEMA_addExamplesTo).orElse(null));
+		addDescriptionsTo = TypeCategory.parse(cp.getString(JSONSCHEMA_addDescriptionsTo).orElse(null));
 
 		Set<Pattern> ignoreTypes = new LinkedHashSet<>();
-		for (String s : split(ps.get(JSONSCHEMA_ignoreTypes, String.class).orElse("")))
+		for (String s : split(cp.get(JSONSCHEMA_ignoreTypes, String.class).orElse("")))
 			ignoreTypes.add(Pattern.compile(s.replace(".", "\\.").replace("*", ".*")));
 		this.ignoreTypes = ignoreTypes;
 
-		jsonSerializer = new JsonSerializer(ps);
+		jsonSerializer = new JsonSerializer(cp);
 	}
 
 	@Override /* Context */
 	public JsonSchemaGeneratorBuilder builder() {
-		return new JsonSchemaGeneratorBuilder(getPropertyStore());
+		return new JsonSchemaGeneratorBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
index 9ac5331..cf04993 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
@@ -42,10 +42,10 @@ public class JsonSchemaGeneratorBuilder extends BeanTraverseBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public JsonSchemaGeneratorBuilder(PropertyStore ps) {
-		super(ps);
+	public JsonSchemaGeneratorBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -283,7 +283,7 @@ public class JsonSchemaGeneratorBuilder extends BeanTraverseBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public JsonSchemaGeneratorBuilder apply(PropertyStore copyFrom) {
+	public JsonSchemaGeneratorBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
index ba88948..ed02a7c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.juneau.svl.*;
 public class JsonSchemaConfigAnnotation {
 
 	/**
-	 * Applies {@link JsonSchemaConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link JsonSchemaConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<JsonSchemaConfig> {
 
@@ -40,16 +40,16 @@ public class JsonSchemaConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<JsonSchemaConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<JsonSchemaConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			JsonSchemaConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(JSONSCHEMA_addDescriptionsTo, string(a.addDescriptionsTo()));
-			psb.setIfNotEmpty(JSONSCHEMA_addExamplesTo, string(a.addExamplesTo()));
-			psb.setIfNotEmpty(JSONSCHEMA_allowNestedDescriptions, bool(a.allowNestedDescriptions()));
-			psb.setIfNotEmpty(JSONSCHEMA_allowNestedExamples, bool(a.allowNestedExamples()));
-			psb.setIf(a.beanDefMapper() != BeanDefMapper.Null.class, JSONSCHEMA_beanDefMapper, a.beanDefMapper());
-			psb.setIfNotEmpty(JSONSCHEMA_ignoreTypes, string(a.ignoreTypes()));
-			psb.setIfNotEmpty(JSONSCHEMA_useBeanDefs, bool(a.useBeanDefs()));
+			cpb.setIfNotEmpty(JSONSCHEMA_addDescriptionsTo, string(a.addDescriptionsTo()));
+			cpb.setIfNotEmpty(JSONSCHEMA_addExamplesTo, string(a.addExamplesTo()));
+			cpb.setIfNotEmpty(JSONSCHEMA_allowNestedDescriptions, bool(a.allowNestedDescriptions()));
+			cpb.setIfNotEmpty(JSONSCHEMA_allowNestedExamples, bool(a.allowNestedExamples()));
+			cpb.setIf(a.beanDefMapper() != BeanDefMapper.Null.class, JSONSCHEMA_beanDefMapper, a.beanDefMapper());
+			cpb.setIfNotEmpty(JSONSCHEMA_ignoreTypes, string(a.ignoreTypes()));
+			cpb.setIfNotEmpty(JSONSCHEMA_useBeanDefs, bool(a.useBeanDefs()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
index da9cc0f..1b21404 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
@@ -1278,7 +1278,7 @@ public class SchemaAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Schema} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Schema} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Schema> {
 
@@ -1293,13 +1293,13 @@ public class SchemaAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Schema> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Schema> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Schema a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
index 6743230..e266167 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
@@ -41,13 +41,13 @@ public class MsgPackParser extends InputStreamParser implements MsgPackMetaProvi
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default parser, all default settings.*/
-	public static final MsgPackParser DEFAULT = new MsgPackParser(PropertyStore.DEFAULT);
+	public static final MsgPackParser DEFAULT = new MsgPackParser(ContextProperties.DEFAULT);
 
 	/** Default parser, all default settings, string input encoded as spaced-hex.*/
-	public static final MsgPackParser DEFAULT_SPACED_HEX = new SpacedHex(PropertyStore.DEFAULT);
+	public static final MsgPackParser DEFAULT_SPACED_HEX = new SpacedHex(ContextProperties.DEFAULT);
 
 	/** Default parser, all default settings, string input encoded as BASE64.*/
-	public static final MsgPackParser DEFAULT_BASE64 = new Base64(PropertyStore.DEFAULT);
+	public static final MsgPackParser DEFAULT_BASE64 = new Base64(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Predefined subclasses
@@ -59,11 +59,11 @@ public class MsgPackParser extends InputStreamParser implements MsgPackMetaProvi
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public SpacedHex(PropertyStore ps) {
+		public SpacedHex(ContextProperties cp) {
 			super(
-				ps.builder().setDefault(ISPARSER_binaryFormat, BinaryFormat.SPACED_HEX).build()
+				cp.builder().setDefault(ISPARSER_binaryFormat, BinaryFormat.SPACED_HEX).build()
 			);
 		}
 	}
@@ -74,11 +74,11 @@ public class MsgPackParser extends InputStreamParser implements MsgPackMetaProvi
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Base64(PropertyStore ps) {
+		public Base64(ContextProperties cp) {
 			super(
-				ps.builder().setDefault(ISPARSER_binaryFormat, BinaryFormat.BASE64).build()
+				cp.builder().setDefault(ISPARSER_binaryFormat, BinaryFormat.BASE64).build()
 			);
 		}
 	}
@@ -93,15 +93,15 @@ public class MsgPackParser extends InputStreamParser implements MsgPackMetaProvi
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public MsgPackParser(PropertyStore ps) {
-		super(ps, "octal/msgpack");
+	public MsgPackParser(ContextProperties cp) {
+		super(cp, "octal/msgpack");
 	}
 
 	@Override /* Context */
 	public MsgPackParserBuilder builder() {
-		return new MsgPackParserBuilder(getPropertyStore());
+		return new MsgPackParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
index 85d64c4..9d6a334 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
@@ -37,10 +37,10 @@ public class MsgPackParserBuilder extends InputStreamParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cpb The initial configuration settings for this builder.
 	 */
-	public MsgPackParserBuilder(PropertyStore ps) {
-		super(ps);
+	public MsgPackParserBuilder(ContextProperties cpb) {
+		super(cpb);
 	}
 
 	@Override /* ContextBuilder */
@@ -73,7 +73,7 @@ public class MsgPackParserBuilder extends InputStreamParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public MsgPackParserBuilder apply(PropertyStore copyFrom) {
+	public MsgPackParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index fc1560f..852f514 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -77,13 +77,13 @@ public class MsgPackSerializer extends OutputStreamSerializer implements MsgPack
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings.*/
-	public static final MsgPackSerializer DEFAULT = new MsgPackSerializer(PropertyStore.DEFAULT);
+	public static final MsgPackSerializer DEFAULT = new MsgPackSerializer(ContextProperties.DEFAULT);
 
 	/** Default serializer, all default settings, spaced-hex string output.*/
-	public static final MsgPackSerializer DEFAULT_SPACED_HEX = new SpacedHex(PropertyStore.DEFAULT);
+	public static final MsgPackSerializer DEFAULT_SPACED_HEX = new SpacedHex(ContextProperties.DEFAULT);
 
 	/** Default serializer, all default settings, spaced-hex string output.*/
-	public static final MsgPackSerializer DEFAULT_BASE64 = new Base64(PropertyStore.DEFAULT);
+	public static final MsgPackSerializer DEFAULT_BASE64 = new Base64(ContextProperties.DEFAULT);
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// Predefined subclasses
@@ -95,11 +95,11 @@ public class MsgPackSerializer extends OutputStreamSerializer implements MsgPack
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public SpacedHex(PropertyStore ps) {
+		public SpacedHex(ContextProperties cp) {
 			super(
-				ps.builder().setDefault(OSSERIALIZER_binaryFormat, BinaryFormat.SPACED_HEX).build()
+				cp.builder().setDefault(OSSERIALIZER_binaryFormat, BinaryFormat.SPACED_HEX).build()
 			);
 		}
 	}
@@ -110,11 +110,11 @@ public class MsgPackSerializer extends OutputStreamSerializer implements MsgPack
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Base64(PropertyStore ps) {
+		public Base64(ContextProperties cp) {
 			super(
-				ps.builder().setDefault(OSSERIALIZER_binaryFormat, BinaryFormat.BASE64).build()
+				cp.builder().setDefault(OSSERIALIZER_binaryFormat, BinaryFormat.BASE64).build()
 			);
 		}
 	}
@@ -131,16 +131,16 @@ public class MsgPackSerializer extends OutputStreamSerializer implements MsgPack
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public MsgPackSerializer(PropertyStore ps) {
-		super(ps, "octal/msgpack", null);
-		this.addBeanTypes = ps.getFirstBoolean(MSGPACK_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
+	public MsgPackSerializer(ContextProperties cp) {
+		super(cp, "octal/msgpack", null);
+		this.addBeanTypes = cp.getFirstBoolean(MSGPACK_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
 	}
 
 	@Override /* Context */
 	public MsgPackSerializerBuilder builder() {
-		return new MsgPackSerializerBuilder(getPropertyStore());
+		return new MsgPackSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
index c8110f3..f0dae28 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
@@ -37,10 +37,10 @@ public class MsgPackSerializerBuilder extends OutputStreamSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public MsgPackSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public MsgPackSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -73,7 +73,7 @@ public class MsgPackSerializerBuilder extends OutputStreamSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public MsgPackSerializerBuilder apply(PropertyStore copyFrom) {
+	public MsgPackSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
index 12f035a..bda69fe 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
@@ -145,7 +145,7 @@ public class MsgPackAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link MsgPack} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link MsgPack} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<MsgPack> {
 
@@ -160,13 +160,13 @@ public class MsgPackAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<MsgPack> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<MsgPack> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			MsgPack a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
index fb6e9aa..87a6d60 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
@@ -24,7 +24,7 @@ import org.apache.juneau.svl.*;
 public class MsgPackConfigAnnotation {
 
 	/**
-	 * Applies {@link MsgPackConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link MsgPackConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<MsgPackConfig> {
 
@@ -39,10 +39,10 @@ public class MsgPackConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<MsgPackConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<MsgPackConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			MsgPackConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(MSGPACK_addBeanTypes, bool(a.addBeanTypes()));
+			cpb.setIfNotEmpty(MSGPACK_addBeanTypes, bool(a.addBeanTypes()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
index 03df6e9..6169075 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
@@ -44,7 +44,7 @@ public class OpenApiParser extends UonParser implements OpenApiMetaProvider, Ope
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Reusable instance of {@link OpenApiParser}. */
-	public static final OpenApiParser DEFAULT = new OpenApiParser(PropertyStore.DEFAULT);
+	public static final OpenApiParser DEFAULT = new OpenApiParser(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -59,29 +59,29 @@ public class OpenApiParser extends UonParser implements OpenApiMetaProvider, Ope
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public OpenApiParser(PropertyStore ps) {
-		this(ps, "text/openapi");
+	public OpenApiParser(ContextProperties cp) {
+		this(cp, "text/openapi");
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param consumes
 	 * 	The list of media types that this parser consumes (e.g. <js>"application/json"</js>, <js>"*&#8203;/json"</js>).
 	 */
-	public OpenApiParser(PropertyStore ps, String...consumes) {
-		super(ps, consumes);
-		format = ps.get(OAPI_format, HttpPartFormat.class).orElse(HttpPartFormat.NO_FORMAT);
-		collectionFormat = ps.get(OAPI_collectionFormat, HttpPartCollectionFormat.class).orElse(HttpPartCollectionFormat.NO_COLLECTION_FORMAT);
+	public OpenApiParser(ContextProperties cp, String...consumes) {
+		super(cp, consumes);
+		format = cp.get(OAPI_format, HttpPartFormat.class).orElse(HttpPartFormat.NO_FORMAT);
+		collectionFormat = cp.get(OAPI_collectionFormat, HttpPartCollectionFormat.class).orElse(HttpPartCollectionFormat.NO_COLLECTION_FORMAT);
 	}
 
 	@Override /* Context */
 	public OpenApiParserBuilder builder() {
-		return new OpenApiParserBuilder(getPropertyStore());
+		return new OpenApiParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
index cf9c111..4705093 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
@@ -42,10 +42,10 @@ public class OpenApiParserBuilder extends UonParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public OpenApiParserBuilder(PropertyStore ps) {
-		super(ps);
+	public OpenApiParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -189,7 +189,7 @@ public class OpenApiParserBuilder extends UonParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public OpenApiParserBuilder apply(PropertyStore copyFrom) {
+	public OpenApiParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializer.java
index c1d7e4d..1484347 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializer.java
@@ -44,7 +44,7 @@ public class OpenApiSerializer extends UonSerializer implements OpenApiMetaProvi
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Reusable instance of {@link OpenApiSerializer}, all default settings. */
-	public static final OpenApiSerializer DEFAULT = new OpenApiSerializer(PropertyStore.DEFAULT);
+	public static final OpenApiSerializer DEFAULT = new OpenApiSerializer(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -59,7 +59,7 @@ public class OpenApiSerializer extends UonSerializer implements OpenApiMetaProvi
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -82,31 +82,31 @@ public class OpenApiSerializer extends UonSerializer implements OpenApiMetaProvi
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public OpenApiSerializer(PropertyStore ps, String produces, String accept) {
+	public OpenApiSerializer(ContextProperties cp, String produces, String accept) {
 		super(
-			ps.builder()
+			cp.builder()
 				.setDefault(UON_encoding, false)
 				.build(),
 			produces,
 			accept
 		);
-		format = ps.get(OAPI_format, HttpPartFormat.class).orElse(HttpPartFormat.NO_FORMAT);
-		collectionFormat = ps.get(OAPI_collectionFormat, HttpPartCollectionFormat.class).orElse(HttpPartCollectionFormat.NO_COLLECTION_FORMAT);
+		format = cp.get(OAPI_format, HttpPartFormat.class).orElse(HttpPartFormat.NO_FORMAT);
+		collectionFormat = cp.get(OAPI_collectionFormat, HttpPartCollectionFormat.class).orElse(HttpPartCollectionFormat.NO_COLLECTION_FORMAT);
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public OpenApiSerializer(PropertyStore ps) {
-		this(ps, "text/openapi", null);
+	public OpenApiSerializer(ContextProperties cp) {
+		this(cp, "text/openapi", null);
 	}
 
 	@Override /* Context */
 	public OpenApiSerializerBuilder builder() {
-		return new OpenApiSerializerBuilder(getPropertyStore());
+		return new OpenApiSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
index d92abb0..eba0f0c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
@@ -42,10 +42,10 @@ public class OpenApiSerializerBuilder extends UonSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public OpenApiSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public OpenApiSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -200,7 +200,7 @@ public class OpenApiSerializerBuilder extends UonSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public OpenApiSerializerBuilder apply(PropertyStore copyFrom) {
+	public OpenApiSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
index 29b559c..19f40cb 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
@@ -145,7 +145,7 @@ public class OpenApiAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link OpenApi} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link OpenApi} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<OpenApi> {
 
@@ -160,13 +160,13 @@ public class OpenApiAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<OpenApi> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<OpenApi> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			OpenApi a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
index c39b5bf..ff79182 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
@@ -24,7 +24,7 @@ import org.apache.juneau.svl.*;
 public class OpenApiConfigAnnotation {
 
 	/**
-	 * Applies {@link OpenApiConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link OpenApiConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<OpenApiConfig> {
 
@@ -39,11 +39,11 @@ public class OpenApiConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<OpenApiConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<OpenApiConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			OpenApiConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(OAPI_format, string(a.format()));
-			psb.setIfNotEmpty(OAPI_collectionFormat, string(a.collectionFormat()));
+			cpb.setIfNotEmpty(OAPI_format, string(a.format()));
+			cpb.setIfNotEmpty(OAPI_collectionFormat, string(a.collectionFormat()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
index 348ec46..e2a9d6f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
@@ -85,7 +85,7 @@ public abstract class InputStreamParser extends Parser {
 	 */
 	public static final String ISPARSER_binaryFormat = PREFIX + ".binaryFormat.s";
 
-	static final InputStreamParser DEFAULT = new InputStreamParser(PropertyStore.create().build(), "") {
+	static final InputStreamParser DEFAULT = new InputStreamParser(ContextProperties.create().build(), "") {
 		@Override
 		public InputStreamParserSession createSession(ParserSessionArgs args) {
 			throw new NoSuchMethodError();
@@ -101,12 +101,12 @@ public abstract class InputStreamParser extends Parser {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 * @param consumes The list of media types that this parser consumes (e.g. <js>"application/json"</js>).
 	 */
-	protected InputStreamParser(PropertyStore ps, String...consumes) {
-		super(ps, consumes);
-		binaryFormat = ps.get(ISPARSER_binaryFormat, BinaryFormat.class).orElse(BinaryFormat.HEX);
+	protected InputStreamParser(ContextProperties cp, String...consumes) {
+		super(cp, consumes);
+		binaryFormat = cp.get(ISPARSER_binaryFormat, BinaryFormat.class).orElse(BinaryFormat.HEX);
 	}
 
 	@Override /* Parser */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
index b8859ba..c9c3bb9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
@@ -39,10 +39,10 @@ public class InputStreamParserBuilder extends ParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public InputStreamParserBuilder(PropertyStore ps) {
-		super(ps);
+	public InputStreamParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -104,7 +104,7 @@ public class InputStreamParserBuilder extends ParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public InputStreamParserBuilder apply(PropertyStore copyFrom) {
+	public InputStreamParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
index 76d82ba..f2484e4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
@@ -124,8 +124,8 @@ public abstract class Parser extends BeanContext {
 	 * Represents no Parser.
 	 */
 	public static abstract class Null extends Parser {
-		private Null(PropertyStore ps, String[] consumes) {
-			super(ps, consumes);
+		private Null(ContextProperties cp, String[] consumes) {
+			super(cp, consumes);
 		}
 	}
 
@@ -512,7 +512,7 @@ public abstract class Parser extends BeanContext {
 	 */
 	public static final String PARSER_unbuffered = PREFIX + ".unbuffered.b";
 
-	static Parser DEFAULT = new Parser(PropertyStore.create().build()) {
+	static Parser DEFAULT = new Parser(ContextProperties.create().build()) {
 		@Override
 		public ParserSession createSession(ParserSessionArgs args) {
 			throw new NoSuchMethodError();
@@ -533,18 +533,18 @@ public abstract class Parser extends BeanContext {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 * @param consumes The list of media types that this parser consumes (e.g. <js>"application/json"</js>).
 	 */
-	protected Parser(PropertyStore ps, String...consumes) {
-		super(ps);
-
-		trimStrings = ps.getBoolean(PARSER_trimStrings).orElse(false);
-		strict = ps.getBoolean(PARSER_strict).orElse(false);
-		autoCloseStreams = ps.getBoolean(PARSER_autoCloseStreams).orElse(false);
-		debugOutputLines = ps.getInteger(PARSER_debugOutputLines).orElse(5);
-		unbuffered = ps.getBoolean(PARSER_unbuffered).orElse(false);
-		listener = ps.getClass(PARSER_listener, ParserListener.class).orElse(null);
+	protected Parser(ContextProperties cp, String...consumes) {
+		super(cp);
+
+		trimStrings = cp.getBoolean(PARSER_trimStrings).orElse(false);
+		strict = cp.getBoolean(PARSER_strict).orElse(false);
+		autoCloseStreams = cp.getBoolean(PARSER_autoCloseStreams).orElse(false);
+		debugOutputLines = cp.getInteger(PARSER_debugOutputLines).orElse(5);
+		unbuffered = cp.getBoolean(PARSER_unbuffered).orElse(false);
+		listener = cp.getClass(PARSER_listener, ParserListener.class).orElse(null);
 		this.consumes = new MediaType[consumes.length];
 		for (int i = 0; i < consumes.length; i++) {
 			this.consumes[i] = MediaType.of(consumes[i]);
@@ -553,7 +553,7 @@ public abstract class Parser extends BeanContext {
 
 	@Override /* Context */
 	public ParserBuilder builder() {
-		return new ParserBuilder(getPropertyStore());
+		return new ParserBuilder(getContextProperties());
 	}
 
 	/**
@@ -569,7 +569,7 @@ public abstract class Parser extends BeanContext {
 	 * @return A new {@link ParserBuilder} object.
 	 */
 	public static ParserBuilder create() {
-		return new ParserBuilder(PropertyStore.DEFAULT);
+		return new ParserBuilder(ContextProperties.DEFAULT);
 	}
 
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
index a6c7b5d..f887740 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
@@ -44,10 +44,10 @@ public class ParserBuilder extends BeanContextBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public ParserBuilder(PropertyStore ps) {
-		super(ps);
+	public ParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -352,7 +352,7 @@ public class ParserBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public ParserBuilder apply(PropertyStore copyFrom) {
+	public ParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroup.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroup.java
index 4e8bd2f..e0b7500 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroup.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroup.java
@@ -112,7 +112,7 @@ public final class ParserGroup extends BeanContext {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The modifiable properties that were used to initialize the parsers.
 	 * 	A snapshot of these will be made so that we can clone and modify this group.
 	 * @param parsers
@@ -120,8 +120,8 @@ public final class ParserGroup extends BeanContext {
 	 * 	The order is important because they will be tried in reverse order (e.g. newer first) in which they will be
 	 * 	tried to match against media types.
 	 */
-	public ParserGroup(PropertyStore ps, Parser[] parsers) {
-		super(ps);
+	public ParserGroup(ContextProperties cp, Parser[] parsers) {
+		super(cp);
 		this.parsers = AList.unmodifiable(parsers);
 
 		AList<MediaType> lmt = AList.create();
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java
index d3e7139..86fd212 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java
@@ -47,7 +47,7 @@ public class ParserGroupBuilder extends BeanContextBuilder {
 	 * @param copyFrom The parser group that we're copying settings and parsers from.
 	 */
 	public ParserGroupBuilder(ParserGroup copyFrom) {
-		super(copyFrom.getPropertyStore());
+		super(copyFrom.getContextProperties());
 		this.parsers = AList.create().appendReverse(copyFrom.getParsers());
 	}
 
@@ -119,15 +119,15 @@ public class ParserGroupBuilder extends BeanContextBuilder {
 		List<Parser> l = new ArrayList<>();
 		for (Object p : parsers) {
 			Class<? extends Parser> c = null;
-			PropertyStore ps = getPropertyStore();
+			ContextProperties cp = getContextProperties();
 			if (p instanceof Class) {
 				c = (Class<? extends Parser>)p;
-				l.add(ContextCache.INSTANCE.create(c, ps));
+				l.add(ContextCache.INSTANCE.create(c, cp));
 			} else {
 				l.add((Parser)p);
 			}
 		}
-		return new ParserGroup(getPropertyStore(), ArrayUtils.toReverseArray(Parser.class, l));
+		return new ParserGroup(getContextProperties(), ArrayUtils.toReverseArray(Parser.class, l));
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -391,7 +391,7 @@ public class ParserGroupBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public ParserGroupBuilder apply(PropertyStore copyFrom) {
+	public ParserGroupBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
index b0356fb..288d3cd 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
@@ -142,7 +142,7 @@ public abstract class ReaderParser extends Parser {
 	 */
 	public static final String RPARSER_streamCharset = PREFIX + ".streamCharset.s";
 
-	static final ReaderParser DEFAULT = new ReaderParser(PropertyStore.create().build(), "") {
+	static final ReaderParser DEFAULT = new ReaderParser(ContextProperties.create().build(), "") {
 		@Override
 		public ReaderParserSession createSession(ParserSessionArgs args) {
 			throw new NoSuchMethodError();
@@ -158,14 +158,14 @@ public abstract class ReaderParser extends Parser {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 * @param consumes The list of media types that this parser consumes (e.g. <js>"application/json"</js>, <js>"*&#8203;/json"</js>).
 	 */
-	protected ReaderParser(PropertyStore ps, String...consumes) {
-		super(ps, consumes);
+	protected ReaderParser(ContextProperties cp, String...consumes) {
+		super(cp, consumes);
 
-		streamCharset = ps.get(RPARSER_streamCharset, Charset.class).orElse(IOUtils.UTF8);
-		fileCharset = ps.get(RPARSER_fileCharset, Charset.class).orElse(Charset.defaultCharset());
+		streamCharset = cp.get(RPARSER_streamCharset, Charset.class).orElse(IOUtils.UTF8);
+		fileCharset = cp.get(RPARSER_fileCharset, Charset.class).orElse(Charset.defaultCharset());
 	}
 
 	@Override /* Parser */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
index 07253aa..1b63ba4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
@@ -40,10 +40,10 @@ public abstract class ReaderParserBuilder extends ParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public ReaderParserBuilder(PropertyStore ps) {
-		super(ps);
+	public ReaderParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -141,7 +141,7 @@ public abstract class ReaderParserBuilder extends ParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public ReaderParserBuilder apply(PropertyStore copyFrom) {
+	public ReaderParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
index 0718413..2ae1270 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
@@ -28,7 +28,7 @@ import org.apache.juneau.svl.*;
 public class ParserConfigAnnotation {
 
 	/**
-	 * Applies {@link ParserConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link ParserConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<ParserConfig> {
 
@@ -43,18 +43,18 @@ public class ParserConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<ParserConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<ParserConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			ParserConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(PARSER_autoCloseStreams, bool(a.autoCloseStreams()));
-			psb.setIfNotEmpty(PARSER_debugOutputLines, integer(a.debugOutputLines(), "debugOutputLines"));
-			psb.setIf(a.listener() != ParserListener.Null.class, PARSER_listener, a.listener());
-			psb.setIfNotEmpty(PARSER_strict, bool(a.strict()));
-			psb.setIfNotEmpty(PARSER_trimStrings, bool(a.trimStrings()));
-			psb.setIfNotEmpty(PARSER_unbuffered, bool(a.unbuffered()));
-			psb.setIfNotEmpty(ISPARSER_binaryFormat, string(a.binaryFormat()));
-			psb.setIfNotEmpty(RPARSER_fileCharset, charset(a.fileCharset()));
-			psb.setIfNotEmpty(RPARSER_streamCharset, charset(a.streamCharset()));
+			cpb.setIfNotEmpty(PARSER_autoCloseStreams, bool(a.autoCloseStreams()));
+			cpb.setIfNotEmpty(PARSER_debugOutputLines, integer(a.debugOutputLines(), "debugOutputLines"));
+			cpb.setIf(a.listener() != ParserListener.Null.class, PARSER_listener, a.listener());
+			cpb.setIfNotEmpty(PARSER_strict, bool(a.strict()));
+			cpb.setIfNotEmpty(PARSER_trimStrings, bool(a.trimStrings()));
+			cpb.setIfNotEmpty(PARSER_unbuffered, bool(a.unbuffered()));
+			cpb.setIfNotEmpty(ISPARSER_binaryFormat, string(a.binaryFormat()));
+			cpb.setIfNotEmpty(RPARSER_fileCharset, charset(a.fileCharset()));
+			cpb.setIfNotEmpty(RPARSER_streamCharset, charset(a.streamCharset()));
 		}
 
 		private Object charset(String in) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
index 6b73201..fcf92b0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParser.java
@@ -56,7 +56,7 @@ public class PlainTextParser extends ReaderParser implements PlainTextMetaProvid
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default parser, all default settings.*/
-	public static final PlainTextParser DEFAULT = new PlainTextParser(PropertyStore.DEFAULT);
+	public static final PlainTextParser DEFAULT = new PlainTextParser(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -69,27 +69,27 @@ public class PlainTextParser extends ReaderParser implements PlainTextMetaProvid
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public PlainTextParser(PropertyStore ps) {
-		this(ps, "text/plain");
+	public PlainTextParser(ContextProperties cp) {
+		this(cp, "text/plain");
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 * @param consumes The media types that this parser consumes.
 	 * 	<p>
 	 * 	Can contain meta-characters per the <c>media-type</c> specification of {@doc ExtRFC2616.section14.1}
 	 */
-	public PlainTextParser(PropertyStore ps, String...consumes) {
-		super(ps, consumes);
+	public PlainTextParser(ContextProperties cp, String...consumes) {
+		super(cp, consumes);
 	}
 
 	@Override /* Context */
 	public PlainTextParserBuilder builder() {
-		return new PlainTextParserBuilder(getPropertyStore());
+		return new PlainTextParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
index 5d069ae..18b8a6e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
@@ -38,10 +38,10 @@ public class PlainTextParserBuilder extends ReaderParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public PlainTextParserBuilder(PropertyStore ps) {
-		super(ps);
+	public PlainTextParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -74,7 +74,7 @@ public class PlainTextParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public PlainTextParserBuilder apply(PropertyStore copyFrom) {
+	public PlainTextParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
index 1a4bef6..a437404 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializer.java
@@ -52,7 +52,7 @@ public class PlainTextSerializer extends WriterSerializer implements PlainTextMe
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer, all default settings.*/
-	public static final PlainTextSerializer DEFAULT = new PlainTextSerializer(PropertyStore.DEFAULT);
+	public static final PlainTextSerializer DEFAULT = new PlainTextSerializer(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -65,17 +65,17 @@ public class PlainTextSerializer extends WriterSerializer implements PlainTextMe
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public PlainTextSerializer(PropertyStore ps) {
-		this(ps, "text/plain", (String)null);
+	public PlainTextSerializer(ContextProperties cp) {
+		this(cp, "text/plain", (String)null);
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -98,14 +98,14 @@ public class PlainTextSerializer extends WriterSerializer implements PlainTextMe
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public PlainTextSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
+	public PlainTextSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
 	}
 
 
 	@Override /* Context */
 	public PlainTextSerializerBuilder builder() {
-		return new PlainTextSerializerBuilder(getPropertyStore());
+		return new PlainTextSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
index 9e74506..c0d03ec 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
@@ -38,10 +38,10 @@ public class PlainTextSerializerBuilder extends WriterSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public PlainTextSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public PlainTextSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -74,7 +74,7 @@ public class PlainTextSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public PlainTextSerializerBuilder apply(PropertyStore copyFrom) {
+	public PlainTextSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
index dd033db..084abb8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
@@ -145,7 +145,7 @@ public class PlainTextAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link PlainText} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link PlainText} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<PlainText> {
 
@@ -160,13 +160,13 @@ public class PlainTextAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<PlainText> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<PlainText> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			PlainText a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigAnnotation.java
index 5f2bff9..985f2c2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigAnnotation.java
@@ -22,7 +22,7 @@ import org.apache.juneau.svl.*;
 public class PlainTextConfigAnnotation {
 
 	/**
-	 * Applies {@link PlainTextConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link PlainTextConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<PlainTextConfig> {
 
@@ -37,7 +37,7 @@ public class PlainTextConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<PlainTextConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<PlainTextConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
index aea4de2..803eeae 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
@@ -80,7 +80,7 @@ public abstract class OutputStreamSerializer extends Serializer {
 	 */
 	public static final String OSSERIALIZER_binaryFormat = PREFIX + ".binaryFormat.s";
 
-	static final OutputStreamSerializer DEFAULT = new OutputStreamSerializer(PropertyStore.create().build(), "", "") {
+	static final OutputStreamSerializer DEFAULT = new OutputStreamSerializer(ContextProperties.create().build(), "", "") {
 		@Override
 		public OutputStreamSerializerSession createSession(SerializerSessionArgs args) {
 			throw new NoSuchMethodError();
@@ -96,7 +96,7 @@ public abstract class OutputStreamSerializer extends Serializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -119,10 +119,10 @@ public abstract class OutputStreamSerializer extends Serializer {
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	protected OutputStreamSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
+	protected OutputStreamSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
 
-		binaryFormat = ps.get(OSSERIALIZER_binaryFormat, BinaryFormat.class).orElse(BinaryFormat.HEX);
+		binaryFormat = cp.get(OSSERIALIZER_binaryFormat, BinaryFormat.class).orElse(BinaryFormat.HEX);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
index 470b2c7..bc4e7f4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
@@ -39,10 +39,10 @@ public class OutputStreamSerializerBuilder extends SerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public OutputStreamSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public OutputStreamSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -107,7 +107,7 @@ public class OutputStreamSerializerBuilder extends SerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public OutputStreamSerializerBuilder apply(PropertyStore copyFrom) {
+	public OutputStreamSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
index 1d77766..9fcf834 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
@@ -46,8 +46,8 @@ public abstract class Serializer extends BeanTraverseContext {
 	 * Represents no Serializer.
 	 */
 	public static abstract class Null extends Serializer {
-		private Null(PropertyStore ps, String produces, String accept) {
-			super(ps, produces, accept);
+		private Null(ContextProperties cp, String produces, String accept) {
+			super(cp, produces, accept);
 		}
 	}
 
@@ -768,7 +768,7 @@ public abstract class Serializer extends BeanTraverseContext {
 	 */
 	public static final String SERIALIZER_uriResolution = PREFIX + ".uriResolution.s";
 
-	static final Serializer DEFAULT = new Serializer(PropertyStore.create().build(), "", "") {
+	static final Serializer DEFAULT = new Serializer(ContextProperties.create().build(), "", "") {
 		@Override
 		public SerializerSession createSession(SerializerSessionArgs args) {
 			throw new NoSuchMethodError();
@@ -800,7 +800,7 @@ public abstract class Serializer extends BeanTraverseContext {
 	/**
 	 * Constructor
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -823,21 +823,21 @@ public abstract class Serializer extends BeanTraverseContext {
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	protected Serializer(PropertyStore ps, String produces, String accept) {
-		super(ps);
+	protected Serializer(ContextProperties cp, String produces, String accept) {
+		super(cp);
 
-		addBeanTypes = ps.getBoolean(SERIALIZER_addBeanTypes).orElse(false);
-		keepNullProperties = ps.getBoolean(SERIALIZER_keepNullProperties).orElse(false);
-		trimEmptyCollections = ps.getBoolean(SERIALIZER_trimEmptyCollections).orElse(false);
-		trimEmptyMaps = ps.getBoolean(SERIALIZER_trimEmptyMaps).orElse(false);
-		trimStrings = ps.getBoolean(SERIALIZER_trimStrings).orElse(false);
-		sortCollections = ps.getBoolean(SERIALIZER_sortCollections).orElse(false);
-		sortMaps = ps.getBoolean(SERIALIZER_sortMaps).orElse(false);
-		addRootType = ps.getBoolean(SERIALIZER_addRootType).orElse(false);
-		uriContext = ps.get(SERIALIZER_uriContext, UriContext.class).orElse(UriContext.DEFAULT);
-		uriResolution = ps.get(SERIALIZER_uriResolution, UriResolution.class).orElse(UriResolution.NONE);
-		uriRelativity = ps.get(SERIALIZER_uriRelativity, UriRelativity.class).orElse(UriRelativity.RESOURCE);
-		listener = ps.getClass(SERIALIZER_listener, SerializerListener.class).orElse(null);
+		addBeanTypes = cp.getBoolean(SERIALIZER_addBeanTypes).orElse(false);
+		keepNullProperties = cp.getBoolean(SERIALIZER_keepNullProperties).orElse(false);
+		trimEmptyCollections = cp.getBoolean(SERIALIZER_trimEmptyCollections).orElse(false);
+		trimEmptyMaps = cp.getBoolean(SERIALIZER_trimEmptyMaps).orElse(false);
+		trimStrings = cp.getBoolean(SERIALIZER_trimStrings).orElse(false);
+		sortCollections = cp.getBoolean(SERIALIZER_sortCollections).orElse(false);
+		sortMaps = cp.getBoolean(SERIALIZER_sortMaps).orElse(false);
+		addRootType = cp.getBoolean(SERIALIZER_addRootType).orElse(false);
+		uriContext = cp.get(SERIALIZER_uriContext, UriContext.class).orElse(UriContext.DEFAULT);
+		uriResolution = cp.get(SERIALIZER_uriResolution, UriResolution.class).orElse(UriResolution.NONE);
+		uriRelativity = cp.get(SERIALIZER_uriRelativity, UriRelativity.class).orElse(UriRelativity.RESOURCE);
+		listener = cp.getClass(SERIALIZER_listener, SerializerListener.class).orElse(null);
 
 		this.produces = MediaType.of(produces);
 		this.accept = accept == null ? MediaRanges.of(produces) : MediaRanges.of(accept);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
index da57b39..9c56008 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
@@ -40,10 +40,10 @@ public class SerializerBuilder extends BeanTraverseBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public SerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public SerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -572,7 +572,7 @@ public class SerializerBuilder extends BeanTraverseBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public SerializerBuilder apply(PropertyStore copyFrom) {
+	public SerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroup.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
index c41d87c..d73e0bc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
@@ -106,7 +106,7 @@ public final class SerializerGroup extends BeanTraverseContext {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The modifiable properties that were used to initialize the serializers.
 	 * 	A snapshot of these will be made so that we can clone and modify this group.
 	 * @param serializers
@@ -114,8 +114,8 @@ public final class SerializerGroup extends BeanTraverseContext {
 	 * 	The order is important because they will be tried in reverse order (e.g.newer first) in which they will be tried
 	 * 	to match against media types.
 	 */
-	public SerializerGroup(PropertyStore ps, Serializer[] serializers) {
-		super(ps);
+	public SerializerGroup(ContextProperties cp, Serializer[] serializers) {
+		super(cp);
 		this.serializers = AList.unmodifiable(serializers);
 
 		AList<MediaRange> lmtr = AList.create();
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
index 785639b..9f9ec00 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
@@ -47,7 +47,7 @@ public class SerializerGroupBuilder extends BeanTraverseBuilder {
 	 * @param copyFrom The serializer group that we're copying settings and serializers from.
 	 */
 	public SerializerGroupBuilder(SerializerGroup copyFrom) {
-		super(copyFrom.getPropertyStore());
+		super(copyFrom.getContextProperties());
 		this.serializers = AList.create().appendReverse(copyFrom.getSerializers());
 	}
 
@@ -117,17 +117,17 @@ public class SerializerGroupBuilder extends BeanTraverseBuilder {
 	@SuppressWarnings("unchecked")
 	public SerializerGroup build() {
 		List<Serializer> l = new ArrayList<>();
-		PropertyStore ps = getPropertyStore();
+		ContextProperties cp = getContextProperties();
 		for (Object s : serializers) {
 			Class<? extends Serializer> c = null;
 			if (s instanceof Class) {
 				c = (Class<? extends Serializer>)s;
-				l.add(ContextCache.INSTANCE.create(c, ps));
+				l.add(ContextCache.INSTANCE.create(c, cp));
 			} else {
 				l.add((Serializer)s);
 			}
 		}
-		return new SerializerGroup(getPropertyStore(), ArrayUtils.toReverseArray(Serializer.class, l));
+		return new SerializerGroup(getContextProperties(), ArrayUtils.toReverseArray(Serializer.class, l));
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -529,7 +529,7 @@ public class SerializerGroupBuilder extends BeanTraverseBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public SerializerGroupBuilder apply(PropertyStore copyFrom) {
+	public SerializerGroupBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
index b62ac87..4bd434d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
@@ -293,7 +293,7 @@ public abstract class WriterSerializer extends Serializer {
 	 */
 	public static final String WSERIALIZER_useWhitespace = PREFIX + ".useWhitespace.b";
 
-	static final WriterSerializer DEFAULT = new WriterSerializer(PropertyStore.create().build(), "", "") {
+	static final WriterSerializer DEFAULT = new WriterSerializer(ContextProperties.create().build(), "", "") {
 		@Override
 		public WriterSerializerSession createSession(SerializerSessionArgs args) {
 			throw new NoSuchMethodError();
@@ -313,7 +313,7 @@ public abstract class WriterSerializer extends Serializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -336,14 +336,14 @@ public abstract class WriterSerializer extends Serializer {
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	protected WriterSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
+	protected WriterSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
 
-		maxIndent = ps.getInteger(WSERIALIZER_maxIndent).orElse(100);
-		quoteChar = ps.getString(WSERIALIZER_quoteChar).orElse("\"").charAt(0);
-		streamCharset = ps.get(WSERIALIZER_streamCharset, Charset.class).orElse(IOUtils.UTF8);
-		fileCharset = ps.get(WSERIALIZER_fileCharset, Charset.class).orElse(Charset.defaultCharset());
-		useWhitespace = ps.getBoolean(WSERIALIZER_useWhitespace).orElse(false);
+		maxIndent = cp.getInteger(WSERIALIZER_maxIndent).orElse(100);
+		quoteChar = cp.getString(WSERIALIZER_quoteChar).orElse("\"").charAt(0);
+		streamCharset = cp.get(WSERIALIZER_streamCharset, Charset.class).orElse(IOUtils.UTF8);
+		fileCharset = cp.get(WSERIALIZER_fileCharset, Charset.class).orElse(Charset.defaultCharset());
+		useWhitespace = cp.getBoolean(WSERIALIZER_useWhitespace).orElse(false);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
index b0e087d..00075fe 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
@@ -40,10 +40,10 @@ public class WriterSerializerBuilder extends SerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public WriterSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public WriterSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -321,7 +321,7 @@ public class WriterSerializerBuilder extends SerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public WriterSerializerBuilder apply(PropertyStore copyFrom) {
+	public WriterSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
index b4f2e23..a692a90 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
@@ -28,7 +28,7 @@ import org.apache.juneau.svl.*;
 public class SerializerConfigAnnotation {
 
 	/**
-	 * Applies {@link SerializerConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link SerializerConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<SerializerConfig> {
 
@@ -43,27 +43,27 @@ public class SerializerConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<SerializerConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<SerializerConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			SerializerConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(SERIALIZER_addBeanTypes, bool(a.addBeanTypes()));
-			psb.setIfNotEmpty(SERIALIZER_addRootType, bool(a.addRootType()));
-			psb.setIfNotEmpty(SERIALIZER_keepNullProperties, bool(a.keepNullProperties()));
-			psb.setIf(a.listener() != SerializerListener.Null.class, SERIALIZER_listener, a.listener());
-			psb.setIfNotEmpty(SERIALIZER_sortCollections, bool(a.sortCollections()));
-			psb.setIfNotEmpty(SERIALIZER_sortMaps, bool(a.sortMaps()));
-			psb.setIfNotEmpty(SERIALIZER_trimEmptyCollections, bool(a.trimEmptyCollections()));
-			psb.setIfNotEmpty(SERIALIZER_trimEmptyMaps, bool(a.trimEmptyMaps()));
-			psb.setIfNotEmpty(SERIALIZER_trimStrings, bool(a.trimStrings()));
-			psb.setIfNotEmpty(SERIALIZER_uriContext, string(a.uriContext()));
-			psb.setIfNotEmpty(SERIALIZER_uriRelativity, string(a.uriRelativity()));
-			psb.setIfNotEmpty(SERIALIZER_uriResolution, string(a.uriResolution()));
-			psb.setIfNotEmpty(OSSERIALIZER_binaryFormat, string(a.binaryFormat()));
-			psb.setIfNotEmpty(WSERIALIZER_fileCharset, charset(a.fileCharset()));
-			psb.setIfNotEmpty(WSERIALIZER_maxIndent, integer(a.maxIndent(), "maxIndent"));
-			psb.setIfNotEmpty(WSERIALIZER_quoteChar, character(a.quoteChar(), "quoteChar"));
-			psb.setIfNotEmpty(WSERIALIZER_streamCharset, charset(a.streamCharset()));
-			psb.setIfNotEmpty(WSERIALIZER_useWhitespace, bool(a.useWhitespace()));
+			cpb.setIfNotEmpty(SERIALIZER_addBeanTypes, bool(a.addBeanTypes()));
+			cpb.setIfNotEmpty(SERIALIZER_addRootType, bool(a.addRootType()));
+			cpb.setIfNotEmpty(SERIALIZER_keepNullProperties, bool(a.keepNullProperties()));
+			cpb.setIf(a.listener() != SerializerListener.Null.class, SERIALIZER_listener, a.listener());
+			cpb.setIfNotEmpty(SERIALIZER_sortCollections, bool(a.sortCollections()));
+			cpb.setIfNotEmpty(SERIALIZER_sortMaps, bool(a.sortMaps()));
+			cpb.setIfNotEmpty(SERIALIZER_trimEmptyCollections, bool(a.trimEmptyCollections()));
+			cpb.setIfNotEmpty(SERIALIZER_trimEmptyMaps, bool(a.trimEmptyMaps()));
+			cpb.setIfNotEmpty(SERIALIZER_trimStrings, bool(a.trimStrings()));
+			cpb.setIfNotEmpty(SERIALIZER_uriContext, string(a.uriContext()));
+			cpb.setIfNotEmpty(SERIALIZER_uriRelativity, string(a.uriRelativity()));
+			cpb.setIfNotEmpty(SERIALIZER_uriResolution, string(a.uriResolution()));
+			cpb.setIfNotEmpty(OSSERIALIZER_binaryFormat, string(a.binaryFormat()));
+			cpb.setIfNotEmpty(WSERIALIZER_fileCharset, charset(a.fileCharset()));
+			cpb.setIfNotEmpty(WSERIALIZER_maxIndent, integer(a.maxIndent(), "maxIndent"));
+			cpb.setIfNotEmpty(WSERIALIZER_quoteChar, character(a.quoteChar(), "quoteChar"));
+			cpb.setIfNotEmpty(WSERIALIZER_streamCharset, charset(a.streamCharset()));
+			cpb.setIfNotEmpty(WSERIALIZER_useWhitespace, bool(a.useWhitespace()));
 		}
 
 		private Object charset(String in) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
index 7f74852..21c7a3c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
@@ -78,16 +78,16 @@ public final class SoapXmlSerializer extends XmlSerializer implements SoapXmlMet
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public SoapXmlSerializer(PropertyStore ps) {
-		super(ps, "text/xml", "text/xml+soap");
-		soapAction = ps.getString(SOAPXML_SOAPAction).orElse("http://www.w3.org/2003/05/soap-envelope");
+	public SoapXmlSerializer(ContextProperties cp) {
+		super(cp, "text/xml", "text/xml+soap");
+		soapAction = cp.getString(SOAPXML_SOAPAction).orElse("http://www.w3.org/2003/05/soap-envelope");
 	}
 
 	@Override /* Context */
 	public SoapXmlSerializerBuilder builder() {
-		return new SoapXmlSerializerBuilder(getPropertyStore());
+		return new SoapXmlSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
index 56b518b..6ca15ea 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
@@ -41,10 +41,10 @@ public class SoapXmlSerializerBuilder extends XmlSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public SoapXmlSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public SoapXmlSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -94,7 +94,7 @@ public class SoapXmlSerializerBuilder extends XmlSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public SoapXmlSerializerBuilder apply(PropertyStore copyFrom) {
+	public SoapXmlSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
index 53b4ddc..d0c48bc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
@@ -145,7 +145,7 @@ public class SoapXmlAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link SoapXml} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link SoapXml} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<SoapXml> {
 
@@ -160,13 +160,13 @@ public class SoapXmlAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<SoapXml> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<SoapXml> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			SoapXml a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
index 90473f1..28d0696 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
@@ -24,7 +24,7 @@ import org.apache.juneau.svl.*;
 public class SoapXmlConfigAnnotation {
 
 	/**
-	 * Applies {@link SoapXmlConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link SoapXmlConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<SoapXmlConfig> {
 
@@ -39,10 +39,10 @@ public class SoapXmlConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<SoapXmlConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<SoapXmlConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			SoapXmlConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(SOAPXML_SOAPAction, string(a.soapAction()));
+			cpb.setIfNotEmpty(SOAPXML_SOAPAction, string(a.soapAction()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
index 04d3da7..005b712 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
@@ -143,10 +143,10 @@ public class UonParser extends ReaderParser implements HttpPartParser, UonMetaPr
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Reusable instance of {@link UonParser}, all default settings. */
-	public static final UonParser DEFAULT = new UonParser(PropertyStore.DEFAULT);
+	public static final UonParser DEFAULT = new UonParser(ContextProperties.DEFAULT);
 
 	/** Reusable instance of {@link UonParser} with decodeChars set to true. */
-	public static final UonParser DEFAULT_DECODING = new UonParser.Decoding(PropertyStore.DEFAULT);
+	public static final UonParser DEFAULT_DECODING = new UonParser.Decoding(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -159,10 +159,10 @@ public class UonParser extends ReaderParser implements HttpPartParser, UonMetaPr
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Decoding(PropertyStore ps) {
-			super(ps.builder().setDefault(UON_decoding, true).build());
+		public Decoding(ContextProperties cp) {
+			super(cp.builder().setDefault(UON_decoding, true).build());
 		}
 	}
 
@@ -233,37 +233,37 @@ public class UonParser extends ReaderParser implements HttpPartParser, UonMetaPr
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public UonParser(PropertyStore ps) {
-		this(ps, "text/uon");
+	public UonParser(ContextProperties cp) {
+		this(cp, "text/uon");
 	}
 
 	/**
 	 * No-arg constructor.
 	 */
 	public UonParser() {
-		this(PropertyStore.DEFAULT, "text/uon");
+		this(ContextProperties.DEFAULT, "text/uon");
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param consumes
 	 * 	The list of media types that this parser consumes (e.g. <js>"application/json"</js>, <js>"*&#8203;/json"</js>).
 	 */
-	public UonParser(PropertyStore ps, String...consumes) {
-		super(ps, consumes);
-		this.decoding = ps.getBoolean(UON_decoding).orElse(false);
-		this.validateEnd = ps.getBoolean(UON_validateEnd).orElse(false);
+	public UonParser(ContextProperties cp, String...consumes) {
+		super(cp, consumes);
+		this.decoding = cp.getBoolean(UON_decoding).orElse(false);
+		this.validateEnd = cp.getBoolean(UON_validateEnd).orElse(false);
 	}
 
 	@Override /* Context */
 	public UonParserBuilder builder() {
-		return new UonParserBuilder(getPropertyStore());
+		return new UonParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
index e2b8da5..f6fee85 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
@@ -42,10 +42,10 @@ public class UonParserBuilder extends ReaderParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public UonParserBuilder(PropertyStore ps) {
-		super(ps);
+	public UonParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -133,7 +133,7 @@ public class UonParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public UonParserBuilder apply(PropertyStore copyFrom) {
+	public UonParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
index 0590ed5..9b13428 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
@@ -285,13 +285,13 @@ public class UonSerializer extends WriterSerializer implements HttpPartSerialize
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Reusable instance of {@link UonSerializer}, all default settings. */
-	public static final UonSerializer DEFAULT = new UonSerializer(PropertyStore.DEFAULT);
+	public static final UonSerializer DEFAULT = new UonSerializer(ContextProperties.DEFAULT);
 
 	/** Reusable instance of {@link UonSerializer.Readable}. */
-	public static final UonSerializer DEFAULT_READABLE = new Readable(PropertyStore.DEFAULT);
+	public static final UonSerializer DEFAULT_READABLE = new Readable(ContextProperties.DEFAULT);
 
 	/** Reusable instance of {@link UonSerializer.Encoding}. */
-	public static final UonSerializer DEFAULT_ENCODING = new Encoding(PropertyStore.DEFAULT);
+	public static final UonSerializer DEFAULT_ENCODING = new Encoding(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -306,10 +306,10 @@ public class UonSerializer extends WriterSerializer implements HttpPartSerialize
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Readable(PropertyStore ps) {
-			super(ps.builder().setDefault(WSERIALIZER_useWhitespace, true).build());
+		public Readable(ContextProperties cp) {
+			super(cp.builder().setDefault(WSERIALIZER_useWhitespace, true).build());
 		}
 	}
 
@@ -321,10 +321,10 @@ public class UonSerializer extends WriterSerializer implements HttpPartSerialize
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Encoding(PropertyStore ps) {
-			super(ps.builder().setDefault(UON_encoding, true).build());
+		public Encoding(ContextProperties cp) {
+			super(cp.builder().setDefault(UON_encoding, true).build());
 		}
 	}
 
@@ -369,24 +369,24 @@ public class UonSerializer extends WriterSerializer implements HttpPartSerialize
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public UonSerializer(PropertyStore ps) {
-		this(ps, "text/uon", (String)null);
+	public UonSerializer(ContextProperties cp) {
+		this(cp, "text/uon", (String)null);
 	}
 
 	/**
 	 * No-arg constructor.
 	 */
 	public UonSerializer() {
-		this(PropertyStore.DEFAULT, "text/uon", (String)null);
+		this(ContextProperties.DEFAULT, "text/uon", (String)null);
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -409,17 +409,17 @@ public class UonSerializer extends WriterSerializer implements HttpPartSerialize
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public UonSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
-		encoding = ps.getBoolean(UON_encoding).orElse(false);
-		addBeanTypes = ps.getFirstBoolean(UON_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
-		paramFormat = ps.get(UON_paramFormat, ParamFormat.class).orElse(ParamFormat.UON);
-		quoteChar = ps.getString(WSERIALIZER_quoteChar).orElse("'").charAt(0);
+	public UonSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
+		encoding = cp.getBoolean(UON_encoding).orElse(false);
+		addBeanTypes = cp.getFirstBoolean(UON_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
+		paramFormat = cp.get(UON_paramFormat, ParamFormat.class).orElse(ParamFormat.UON);
+		quoteChar = cp.getString(WSERIALIZER_quoteChar).orElse("'").charAt(0);
 	}
 
 	@Override /* Context */
 	public UonSerializerBuilder builder() {
-		return new UonSerializerBuilder(getPropertyStore());
+		return new UonSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
index 1c2f15e..395314d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
@@ -41,10 +41,10 @@ public class UonSerializerBuilder extends WriterSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public UonSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public UonSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -254,7 +254,7 @@ public class UonSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public UonSerializerBuilder apply(PropertyStore copyFrom) {
+	public UonSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
index 97be1e8..33617d7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
@@ -145,7 +145,7 @@ public class UonAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Uon} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Uon} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Uon> {
 
@@ -160,13 +160,13 @@ public class UonAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Uon> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Uon> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Uon a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
index f0c0c10..fa9c0cd 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.juneau.svl.*;
 public class UonConfigAnnotation {
 
 	/**
-	 * Applies {@link UonConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link UonConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<UonConfig> {
 
@@ -40,14 +40,14 @@ public class UonConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<UonConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<UonConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			UonConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(UON_addBeanTypes, bool(a.addBeanTypes()));
-			psb.setIfNotEmpty(UON_encoding, bool(a.encoding()));
-			psb.setIfNotEmpty(UON_paramFormat, string(a.paramFormat()));
-			psb.setIfNotEmpty(UON_decoding, bool(a.decoding()));
-			psb.setIfNotEmpty(UON_validateEnd, bool(a.validateEnd()));
+			cpb.setIfNotEmpty(UON_addBeanTypes, bool(a.addBeanTypes()));
+			cpb.setIfNotEmpty(UON_encoding, bool(a.encoding()));
+			cpb.setIfNotEmpty(UON_paramFormat, string(a.paramFormat()));
+			cpb.setIfNotEmpty(UON_decoding, bool(a.decoding()));
+			cpb.setIfNotEmpty(UON_validateEnd, bool(a.validateEnd()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
index 9e48ddf..e9fef82 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
@@ -111,7 +111,7 @@ public class UrlEncodingParser extends UonParser implements UrlEncodingMetaProvi
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Reusable instance of {@link UrlEncodingParser}. */
-	public static final UrlEncodingParser DEFAULT = new UrlEncodingParser(PropertyStore.DEFAULT);
+	public static final UrlEncodingParser DEFAULT = new UrlEncodingParser(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -125,21 +125,21 @@ public class UrlEncodingParser extends UonParser implements UrlEncodingMetaProvi
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public UrlEncodingParser(PropertyStore ps) {
+	public UrlEncodingParser(ContextProperties cp) {
 		super(
-			ps.builder()
+			cp.builder()
 				.setDefault(UON_decoding, true)
 				.build(),
 			"application/x-www-form-urlencoded"
 		);
-		expandedParams = ps.getBoolean(URLENC_expandedParams).orElse(false);
+		expandedParams = cp.getBoolean(URLENC_expandedParams).orElse(false);
 	}
 
 	@Override /* Context */
 	public UrlEncodingParserBuilder builder() {
-		return new UrlEncodingParserBuilder(getPropertyStore());
+		return new UrlEncodingParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
index cbd71d4..3748c10 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
@@ -41,10 +41,10 @@ public class UrlEncodingParserBuilder extends UonParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public UrlEncodingParserBuilder(PropertyStore ps) {
-		super(ps);
+	public UrlEncodingParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -94,7 +94,7 @@ public class UrlEncodingParserBuilder extends UonParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public UrlEncodingParserBuilder apply(PropertyStore copyFrom) {
+	public UrlEncodingParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
index 6003179..726269c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
@@ -191,16 +191,16 @@ public class UrlEncodingSerializer extends UonSerializer implements UrlEncodingM
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Reusable instance of {@link UrlEncodingSerializer}, all default settings. */
-	public static final UrlEncodingSerializer DEFAULT = new UrlEncodingSerializer(PropertyStore.DEFAULT);
+	public static final UrlEncodingSerializer DEFAULT = new UrlEncodingSerializer(ContextProperties.DEFAULT);
 
 	/** Reusable instance of {@link UrlEncodingSerializer.PlainText}. */
-	public static final UrlEncodingSerializer DEFAULT_PLAINTEXT = new PlainText(PropertyStore.DEFAULT);
+	public static final UrlEncodingSerializer DEFAULT_PLAINTEXT = new PlainText(ContextProperties.DEFAULT);
 
 	/** Reusable instance of {@link UrlEncodingSerializer.Expanded}. */
-	public static final UrlEncodingSerializer DEFAULT_EXPANDED = new Expanded(PropertyStore.DEFAULT);
+	public static final UrlEncodingSerializer DEFAULT_EXPANDED = new Expanded(ContextProperties.DEFAULT);
 
 	/** Reusable instance of {@link UrlEncodingSerializer.Readable}. */
-	public static final UrlEncodingSerializer DEFAULT_READABLE = new Readable(PropertyStore.DEFAULT);
+	public static final UrlEncodingSerializer DEFAULT_READABLE = new Readable(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -215,10 +215,10 @@ public class UrlEncodingSerializer extends UonSerializer implements UrlEncodingM
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Expanded(PropertyStore ps) {
-			super(ps.builder().setDefault(URLENC_expandedParams, true).build());
+		public Expanded(ContextProperties cp) {
+			super(cp.builder().setDefault(URLENC_expandedParams, true).build());
 		}
 	}
 
@@ -230,10 +230,10 @@ public class UrlEncodingSerializer extends UonSerializer implements UrlEncodingM
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Readable(PropertyStore ps) {
-			super(ps.builder().setDefault(WSERIALIZER_useWhitespace, true).build());
+		public Readable(ContextProperties cp) {
+			super(cp.builder().setDefault(WSERIALIZER_useWhitespace, true).build());
 		}
 	}
 
@@ -245,10 +245,10 @@ public class UrlEncodingSerializer extends UonSerializer implements UrlEncodingM
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public PlainText(PropertyStore ps) {
-			super(ps.builder().setDefault(UON_paramFormat, "PLAINTEXT").build());
+		public PlainText(ContextProperties cp) {
+			super(cp.builder().setDefault(UON_paramFormat, "PLAINTEXT").build());
 		}
 	}
 
@@ -265,17 +265,17 @@ public class UrlEncodingSerializer extends UonSerializer implements UrlEncodingM
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public UrlEncodingSerializer(PropertyStore ps) {
-		this(ps, "application/x-www-form-urlencoded", (String)null);
+	public UrlEncodingSerializer(ContextProperties cp) {
+		this(cp, "application/x-www-form-urlencoded", (String)null);
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -298,20 +298,20 @@ public class UrlEncodingSerializer extends UonSerializer implements UrlEncodingM
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public UrlEncodingSerializer(PropertyStore ps, String produces, String accept) {
+	public UrlEncodingSerializer(ContextProperties cp, String produces, String accept) {
 		super(
-			ps.builder()
+			cp.builder()
 				.setDefault(UON_encoding, true)
 				.build(),
 			produces,
 			accept
 		);
-		expandedParams = ps.getBoolean(URLENC_expandedParams).orElse(false);
+		expandedParams = cp.getBoolean(URLENC_expandedParams).orElse(false);
 	}
 
 	@Override /* Context */
 	public UrlEncodingSerializerBuilder builder() {
-		return new UrlEncodingSerializerBuilder(getPropertyStore());
+		return new UrlEncodingSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
index 5a86208..4616f3f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
@@ -41,10 +41,10 @@ public class UrlEncodingSerializerBuilder extends UonSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public UrlEncodingSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public UrlEncodingSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -94,7 +94,7 @@ public class UrlEncodingSerializerBuilder extends UonSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public UrlEncodingSerializerBuilder apply(PropertyStore copyFrom) {
+	public UrlEncodingSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
index 82a22e8..1166009 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
@@ -169,7 +169,7 @@ public class UrlEncodingAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link UrlEncoding} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link UrlEncoding} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<UrlEncoding> {
 
@@ -184,13 +184,13 @@ public class UrlEncodingAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<UrlEncoding> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<UrlEncoding> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			UrlEncoding a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigAnnotation.java
index 981995f..762d4bc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigAnnotation.java
@@ -23,7 +23,7 @@ import org.apache.juneau.urlencoding.*;
 public class UrlEncodingConfigAnnotation {
 
 	/**
-	 * Applies {@link UrlEncodingConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link UrlEncodingConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<UrlEncodingConfig> {
 
@@ -38,12 +38,12 @@ public class UrlEncodingConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<UrlEncodingConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<UrlEncodingConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			UrlEncodingConfig a = ai.getAnnotation();
 
 			if (! a.expandedParams().isEmpty()) {
-				psb.set(UrlEncodingSerializer.URLENC_expandedParams, bool(a.expandedParams()));
-				psb.set(UrlEncodingParser.URLENC_expandedParams, bool(a.expandedParams()));
+				cpb.set(UrlEncodingSerializer.URLENC_expandedParams, bool(a.expandedParams()));
+				cpb.set(UrlEncodingParser.URLENC_expandedParams, bool(a.expandedParams()));
 			}
 		}
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java
index 41513d9..3171fd8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlDocSerializer.java
@@ -43,10 +43,10 @@ public class XmlDocSerializer extends XmlSerializer {
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Ns(PropertyStore ps) {
-			super(ps.builder().setDefault(XML_enableNamespaces, true).build());
+		public Ns(ContextProperties cp) {
+			super(cp.builder().setDefault(XML_enableNamespaces, true).build());
 		}
 	}
 
@@ -57,10 +57,10 @@ public class XmlDocSerializer extends XmlSerializer {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing all the settings for this object.
+	 * @param cp The property store containing all the settings for this object.
 	 */
-	public XmlDocSerializer(PropertyStore ps) {
-		super(ps);
+	public XmlDocSerializer(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* Serializer */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
index 8c7d4ab..2d20492 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
@@ -215,7 +215,7 @@ public class XmlParser extends ReaderParser implements XmlMetaProvider, XmlCommo
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default parser, all default settings.*/
-	public static final XmlParser DEFAULT = new XmlParser(PropertyStore.DEFAULT);
+	public static final XmlParser DEFAULT = new XmlParser(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -235,33 +235,33 @@ public class XmlParser extends ReaderParser implements XmlMetaProvider, XmlCommo
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public XmlParser(PropertyStore ps) {
-		this(ps, "text/xml", "application/xml");
+	public XmlParser(ContextProperties cp) {
+		this(cp, "text/xml", "application/xml");
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param consumes
 	 * 	The list of media types that this parser consumes (e.g. <js>"application/json"</js>, <js>"*&#8203;/json"</js>).
 	 */
-	public XmlParser(PropertyStore ps, String...consumes) {
-		super(ps, consumes);
-		validating = ps.getBoolean(XML_validating).orElse(false);
-		preserveRootElement = ps.getBoolean(XML_preserveRootElement).orElse(false);
-		reporter = ps.getInstance(XML_reporter, XMLReporter.class).orElse(null);
-		resolver = ps.getInstance(XML_resolver, XMLResolver.class).orElse(null);
-		eventAllocator = ps.getInstance(XML_eventAllocator, XMLEventAllocator.class).orElse(null);
+	public XmlParser(ContextProperties cp, String...consumes) {
+		super(cp, consumes);
+		validating = cp.getBoolean(XML_validating).orElse(false);
+		preserveRootElement = cp.getBoolean(XML_preserveRootElement).orElse(false);
+		reporter = cp.getInstance(XML_reporter, XMLReporter.class).orElse(null);
+		resolver = cp.getInstance(XML_resolver, XMLResolver.class).orElse(null);
+		eventAllocator = cp.getInstance(XML_eventAllocator, XMLEventAllocator.class).orElse(null);
 	}
 
 	@Override /* Context */
 	public XmlParserBuilder builder() {
-		return new XmlParserBuilder(getPropertyStore());
+		return new XmlParserBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
index 9072a5c..9e87309 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
@@ -44,10 +44,10 @@ public class XmlParserBuilder extends ReaderParserBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public XmlParserBuilder(PropertyStore ps) {
-		super(ps);
+	public XmlParserBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -222,7 +222,7 @@ public class XmlParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public XmlParserBuilder apply(PropertyStore copyFrom) {
+	public XmlParserBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index 2bc2b61..963336b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -342,22 +342,22 @@ public class XmlSerializer extends WriterSerializer implements XmlMetaProvider,
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/** Default serializer without namespaces. */
-	public static final XmlSerializer DEFAULT = new XmlSerializer(PropertyStore.DEFAULT);
+	public static final XmlSerializer DEFAULT = new XmlSerializer(ContextProperties.DEFAULT);
 
 	/** Default serializer without namespaces, with single quotes. */
-	public static final XmlSerializer DEFAULT_SQ = new Sq(PropertyStore.DEFAULT);
+	public static final XmlSerializer DEFAULT_SQ = new Sq(ContextProperties.DEFAULT);
 
 	/** Default serializer without namespaces, with single quotes, whitespace added. */
-	public static final XmlSerializer DEFAULT_SQ_READABLE = new SqReadable(PropertyStore.DEFAULT);
+	public static final XmlSerializer DEFAULT_SQ_READABLE = new SqReadable(ContextProperties.DEFAULT);
 
 	/** Default serializer, all default settings. */
-	public static final XmlSerializer DEFAULT_NS = new Ns(PropertyStore.DEFAULT);
+	public static final XmlSerializer DEFAULT_NS = new Ns(ContextProperties.DEFAULT);
 
 	/** Default serializer, single quotes. */
-	public static final XmlSerializer DEFAULT_NS_SQ = new NsSq(PropertyStore.DEFAULT);
+	public static final XmlSerializer DEFAULT_NS_SQ = new NsSq(ContextProperties.DEFAULT);
 
 	/** Default serializer, single quotes, whitespace added. */
-	public static final XmlSerializer DEFAULT_NS_SQ_READABLE = new NsSqReadable(PropertyStore.DEFAULT);
+	public static final XmlSerializer DEFAULT_NS_SQ_READABLE = new NsSqReadable(ContextProperties.DEFAULT);
 
 
 	//-------------------------------------------------------------------------------------------------------------------
@@ -370,11 +370,11 @@ public class XmlSerializer extends WriterSerializer implements XmlMetaProvider,
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Sq(PropertyStore ps) {
+		public Sq(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.build()
 				);
@@ -387,11 +387,11 @@ public class XmlSerializer extends WriterSerializer implements XmlMetaProvider,
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public SqReadable(PropertyStore ps) {
+		public SqReadable(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.setDefault(WSERIALIZER_useWhitespace, true)
 					.build()
@@ -405,11 +405,11 @@ public class XmlSerializer extends WriterSerializer implements XmlMetaProvider,
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public Ns(PropertyStore ps) {
+		public Ns(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(XML_enableNamespaces, true)
 					.build(),
 				"text/xml",
@@ -424,11 +424,11 @@ public class XmlSerializer extends WriterSerializer implements XmlMetaProvider,
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public NsSq(PropertyStore ps) {
+		public NsSq(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(XML_enableNamespaces, true)
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.build()
@@ -442,11 +442,11 @@ public class XmlSerializer extends WriterSerializer implements XmlMetaProvider,
 		/**
 		 * Constructor.
 		 *
-		 * @param ps The property store containing all the settings for this object.
+		 * @param cp The property store containing all the settings for this object.
 		 */
-		public NsSqReadable(PropertyStore ps) {
+		public NsSqReadable(ContextProperties cp) {
 			super(
-				ps.builder()
+				cp.builder()
 					.setDefault(XML_enableNamespaces, true)
 					.setDefault(WSERIALIZER_quoteChar, '\'')
 					.setDefault(WSERIALIZER_useWhitespace, true)
@@ -478,17 +478,17 @@ public class XmlSerializer extends WriterSerializer implements XmlMetaProvider,
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 */
-	public XmlSerializer(PropertyStore ps) {
-		this(ps, "text/xml", (String)null);
+	public XmlSerializer(ContextProperties cp) {
+		this(cp, "text/xml", (String)null);
 	}
 
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The property store containing all the settings for this object.
 	 * @param produces
 	 * 	The media type that this serializer produces.
@@ -511,19 +511,19 @@ public class XmlSerializer extends WriterSerializer implements XmlMetaProvider,
 	 * <p>
 	 * The accept value can also contain q-values.
 	 */
-	public XmlSerializer(PropertyStore ps, String produces, String accept) {
-		super(ps, produces, accept);
-		autoDetectNamespaces = ! ps.getBoolean(XML_disableAutoDetectNamespaces).orElse(false);
-		enableNamespaces = ps.getBoolean(XML_enableNamespaces).orElse(false);
-		addNamespaceUrlsToRoot = ps.getBoolean(XML_addNamespaceUrisToRoot).orElse(false);
-		defaultNamespace = ps.getInstance(XML_defaultNamespace, Namespace.class).orElse(DEFAULT_JUNEAU_NAMESPACE);
-		addBeanTypes = ps.getFirstBoolean(XML_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
-		namespaces = ps.getInstanceArray(XML_namespaces, Namespace.class).orElse(new Namespace[0]);
+	public XmlSerializer(ContextProperties cp, String produces, String accept) {
+		super(cp, produces, accept);
+		autoDetectNamespaces = ! cp.getBoolean(XML_disableAutoDetectNamespaces).orElse(false);
+		enableNamespaces = cp.getBoolean(XML_enableNamespaces).orElse(false);
+		addNamespaceUrlsToRoot = cp.getBoolean(XML_addNamespaceUrisToRoot).orElse(false);
+		defaultNamespace = cp.getInstance(XML_defaultNamespace, Namespace.class).orElse(DEFAULT_JUNEAU_NAMESPACE);
+		addBeanTypes = cp.getFirstBoolean(XML_addBeanTypes, SERIALIZER_addBeanTypes).orElse(false);
+		namespaces = cp.getInstanceArray(XML_namespaces, Namespace.class).orElse(new Namespace[0]);
 	}
 
 	@Override /* Context */
 	public XmlSerializerBuilder builder() {
-		return new XmlSerializerBuilder(getPropertyStore());
+		return new XmlSerializerBuilder(getContextProperties());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
index fb507cf..ef6d5fa 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
@@ -41,10 +41,10 @@ public class XmlSerializerBuilder extends WriterSerializerBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The initial configuration settings for this builder.
+	 * @param cp The initial configuration settings for this builder.
 	 */
-	public XmlSerializerBuilder(PropertyStore ps) {
-		super(ps);
+	public XmlSerializerBuilder(ContextProperties cp) {
+		super(cp);
 	}
 
 	@Override /* ContextBuilder */
@@ -201,7 +201,7 @@ public class XmlSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public XmlSerializerBuilder apply(PropertyStore copyFrom) {
+	public XmlSerializerBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
index 68d43bb..7eedf19 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
@@ -223,7 +223,7 @@ public class XmlAnnotation {
 	}
 
 	/**
-	 * Applies targeted {@link Xml} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies targeted {@link Xml} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Xml> {
 
@@ -238,13 +238,13 @@ public class XmlAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Xml> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Xml> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Xml a = ai.getAnnotation();
 
 			if (isEmpty(a.on()) && isEmpty(a.onClass()))
 				return;
 
-			psb.prependTo(BEAN_annotations, copy(a, vr));
+			cpb.prependTo(BEAN_annotations, copy(a, vr));
 		}
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
index e194459..d384739 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
@@ -26,7 +26,7 @@ import org.apache.juneau.xml.*;
 public class XmlConfigAnnotation {
 
 	/**
-	 * Applies {@link XmlConfig} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link XmlConfig} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<XmlConfig> {
 
@@ -41,20 +41,20 @@ public class XmlConfigAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<XmlConfig> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<XmlConfig> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			XmlConfig a = ai.getAnnotation();
 
-			psb.setIfNotEmpty(XML_addBeanTypes, bool(a.addBeanTypes()));
-			psb.setIfNotEmpty(XML_addNamespaceUrisToRoot, bool(a.addNamespaceUrisToRoot()));
-			psb.setIfNotEmpty(XML_disableAutoDetectNamespaces, bool(a.disableAutoDetectNamespaces()));
-			psb.setIfNotEmpty(XML_defaultNamespace, string(a.defaultNamespace()));
-			psb.setIfNotEmpty(XML_enableNamespaces, bool(a.enableNamespaces()));
-			psb.setIf(a.namespaces().length > 0, XML_namespaces, Namespace.createArray(stringList(a.namespaces())));
-			psb.setIf(a.eventAllocator() != XmlEventAllocator.Null.class, XML_eventAllocator, a.eventAllocator());
-			psb.setIfNotEmpty(XML_preserveRootElement, bool(a.preserveRootElement()));
-			psb.setIf(a.reporter() != XmlReporter.Null.class, XML_reporter, a.reporter());
-			psb.setIf(a.resolver() != XmlResolver.Null.class, XML_resolver, a.resolver());
-			psb.setIfNotEmpty(XML_validating, bool(a.validating()));
+			cpb.setIfNotEmpty(XML_addBeanTypes, bool(a.addBeanTypes()));
+			cpb.setIfNotEmpty(XML_addNamespaceUrisToRoot, bool(a.addNamespaceUrisToRoot()));
+			cpb.setIfNotEmpty(XML_disableAutoDetectNamespaces, bool(a.disableAutoDetectNamespaces()));
+			cpb.setIfNotEmpty(XML_defaultNamespace, string(a.defaultNamespace()));
+			cpb.setIfNotEmpty(XML_enableNamespaces, bool(a.enableNamespaces()));
+			cpb.setIf(a.namespaces().length > 0, XML_namespaces, Namespace.createArray(stringList(a.namespaces())));
+			cpb.setIf(a.eventAllocator() != XmlEventAllocator.Null.class, XML_eventAllocator, a.eventAllocator());
+			cpb.setIfNotEmpty(XML_preserveRootElement, bool(a.preserveRootElement()));
+			cpb.setIf(a.reporter() != XmlReporter.Null.class, XML_reporter, a.reporter());
+			cpb.setIf(a.resolver() != XmlResolver.Null.class, XML_resolver, a.resolver());
+			cpb.setIfNotEmpty(XML_validating, bool(a.validating()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallHandler.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallHandler.java
index 2734f4e..7e5e9af 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallHandler.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallHandler.java
@@ -32,7 +32,7 @@ import org.apache.juneau.*;
  * The constructor on the implementation class can optionally take in any of the following parameters:
  * <ul>
  * 	<li>{@link RestClient} - The client using this handler.
- * 	<li>{@link PropertyStore} - The properties used to initialize the client.
+ * 	<li>{@link ContextProperties} - The properties used to initialize the client.
  * </ul>
  *
  * <p>
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index b74cbcd..6008623 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -2016,12 +2016,12 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re
 	 * @return A new {@link RestClientBuilder} object.
 	 */
 	public static RestClientBuilder create() {
-		return new RestClientBuilder(PropertyStore.DEFAULT);
+		return new RestClientBuilder(ContextProperties.DEFAULT);
 	}
 
 	@Override /* Context */
 	public RestClientBuilder builder() {
-		return new RestClientBuilder(getPropertyStore());
+		return new RestClientBuilder(getContextProperties());
 	}
 
 	private static final
@@ -2033,35 +2033,35 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re
 	/**
 	 * Constructor.
 	 *
-	 * @param ps The property store containing the unmodifiable configuration for this client.
+	 * @param cp The property store containing the unmodifiable configuration for this client.
 	 */
 	@SuppressWarnings("unchecked")
-	protected RestClient(PropertyStore ps) {
-		super(ps);
-		this.httpClient = ps.getInstance(RESTCLIENT_httpClient, CloseableHttpClient.class).orElse(null);
-		this.connectionManager = ps.getInstance(RESTCLIENT_connectionManager, HttpClientConnectionManager.class).orElse(null);
-		this.keepHttpClientOpen = ps.getBoolean(RESTCLIENT_keepHttpClientOpen).orElse(false);
-		this.errorCodes = ps.getInstance(RESTCLIENT_errorCodes, Predicate.class).orElse(ERROR_CODES_DEFAULT);
-		this.executorServiceShutdownOnClose = ps.getBoolean(RESTCLIENT_executorServiceShutdownOnClose).orElse(false);
-		this.rootUri = StringUtils.nullIfEmpty(ps.getString(RESTCLIENT_rootUri).orElse("").replaceAll("\\/$", ""));
-		this.leakDetection = ps.getBoolean(RESTCLIENT_leakDetection).orElse(isDebug());
-		this.ignoreErrors = ps.getBoolean(RESTCLIENT_ignoreErrors).orElse(false);
-		this.logger = ps.getInstance(RESTCLIENT_logger, Logger.class).orElseGet(()->Logger.getLogger(RestClient.class.getName()));
-		this.logRequests = ps.getInstance(RESTCLIENT_logRequests, DetailLevel.class).orElse(isDebug() ? DetailLevel.FULL : DetailLevel.NONE);
-		this.logRequestsLevel = ps.getInstance(RESTCLIENT_logRequestsLevel, Level.class).orElse(isDebug() ? Level.WARNING : Level.OFF);
-		this.logToConsole = ps.getBoolean(RESTCLIENT_logToConsole).orElse(isDebug());
-		this.console = ps.getInstance(RESTCLIENT_console, PrintStream.class).orElse(System.err);
-		this.logRequestsPredicate = ps.getInstance(RESTCLIENT_logRequestsPredicate, BiPredicate.class).orElse(LOG_REQUESTS_PREDICATE_DEFAULT);
+	protected RestClient(ContextProperties cp) {
+		super(cp);
+		this.httpClient = cp.getInstance(RESTCLIENT_httpClient, CloseableHttpClient.class).orElse(null);
+		this.connectionManager = cp.getInstance(RESTCLIENT_connectionManager, HttpClientConnectionManager.class).orElse(null);
+		this.keepHttpClientOpen = cp.getBoolean(RESTCLIENT_keepHttpClientOpen).orElse(false);
+		this.errorCodes = cp.getInstance(RESTCLIENT_errorCodes, Predicate.class).orElse(ERROR_CODES_DEFAULT);
+		this.executorServiceShutdownOnClose = cp.getBoolean(RESTCLIENT_executorServiceShutdownOnClose).orElse(false);
+		this.rootUri = StringUtils.nullIfEmpty(cp.getString(RESTCLIENT_rootUri).orElse("").replaceAll("\\/$", ""));
+		this.leakDetection = cp.getBoolean(RESTCLIENT_leakDetection).orElse(isDebug());
+		this.ignoreErrors = cp.getBoolean(RESTCLIENT_ignoreErrors).orElse(false);
+		this.logger = cp.getInstance(RESTCLIENT_logger, Logger.class).orElseGet(()->Logger.getLogger(RestClient.class.getName()));
+		this.logRequests = cp.getInstance(RESTCLIENT_logRequests, DetailLevel.class).orElse(isDebug() ? DetailLevel.FULL : DetailLevel.NONE);
+		this.logRequestsLevel = cp.getInstance(RESTCLIENT_logRequestsLevel, Level.class).orElse(isDebug() ? Level.WARNING : Level.OFF);
+		this.logToConsole = cp.getBoolean(RESTCLIENT_logToConsole).orElse(isDebug());
+		this.console = cp.getInstance(RESTCLIENT_console, PrintStream.class).orElse(System.err);
+		this.logRequestsPredicate = cp.getInstance(RESTCLIENT_logRequestsPredicate, BiPredicate.class).orElse(LOG_REQUESTS_PREDICATE_DEFAULT);
 
 		SerializerGroupBuilder sgb = SerializerGroup.create();
-		for (Object o : ps.getArray(RESTCLIENT_serializers, Object.class).orElse(new Object[0])) {
+		for (Object o : cp.getArray(RESTCLIENT_serializers, Object.class).orElse(new Object[0])) {
 			if (o instanceof Serializer) {
 				sgb.append((Serializer)o);  // Don't apply PropertyStore.
 			} else if (o instanceof Class) {
 				Class<?> c = (Class<?>)o;
 				if (! Serializer.class.isAssignableFrom(c))
 					throw new ConfigException("RESTCLIENT_serializers property had invalid class of type ''{0}''", c.getName());
-				sgb.append(ContextCache.INSTANCE.create((Class<? extends Serializer>)o, ps));
+				sgb.append(ContextCache.INSTANCE.create((Class<? extends Serializer>)o, cp));
 			} else {
 				throw new ConfigException("RESTCLIENT_serializers property had invalid object of type ''{0}''", o.getClass().getName());
 			}
@@ -2069,14 +2069,14 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re
 		this.serializers = sgb.build();
 
 		ParserGroupBuilder pgb = ParserGroup.create();
-		for (Object o : ps.getArray(RESTCLIENT_parsers, Object.class).orElse(new Object[0])) {
+		for (Object o : cp.getArray(RESTCLIENT_parsers, Object.class).orElse(new Object[0])) {
 			if (o instanceof Parser) {
 				pgb.append((Parser)o);  // Don't apply PropertyStore.
 			} else if (o instanceof Class) {
 				Class<?> c = (Class<?>)o;
 				if (! Parser.class.isAssignableFrom(c))
 					throw new ConfigException("RESTCLIENT_parsers property had invalid class of type ''{0}''", c.getName());
-				pgb.append(ContextCache.INSTANCE.create((Class<? extends Parser>)o, ps));
+				pgb.append(ContextCache.INSTANCE.create((Class<? extends Parser>)o, cp));
 			} else {
 				throw new ConfigException("RESTCLIENT_parsers property had invalid object of type ''{0}''", o.getClass().getName());
 			}
@@ -2084,18 +2084,18 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re
 		this.parsers = pgb.build();
 
 		BeanFactory bf = new BeanFactory()
-			.addBean(PropertyStore.class, ps)
+			.addBean(ContextProperties.class, cp)
 			.addBean(RestClient.class, this);
 
-		this.urlEncodingSerializer = new SerializerBuilder(ps).build(UrlEncodingSerializer.class);
-		this.partSerializer = ps.getInstance(RESTCLIENT_partSerializer, HttpPartSerializer.class, bf).orElseGet(bf.createBeanSupplier(OpenApiSerializer.class));
-		this.partParser = ps.getInstance(RESTCLIENT_partParser, HttpPartParser.class, bf).orElseGet(bf.createBeanSupplier(OpenApiParser.class));
-		this.executorService = ps.getInstance(RESTCLIENT_executorService, ExecutorService.class).orElse(null);
+		this.urlEncodingSerializer = new SerializerBuilder(cp).build(UrlEncodingSerializer.class);
+		this.partSerializer = cp.getInstance(RESTCLIENT_partSerializer, HttpPartSerializer.class, bf).orElseGet(bf.createBeanSupplier(OpenApiSerializer.class));
+		this.partParser = cp.getInstance(RESTCLIENT_partParser, HttpPartParser.class, bf).orElseGet(bf.createBeanSupplier(OpenApiParser.class));
+		this.executorService = cp.getInstance(RESTCLIENT_executorService, ExecutorService.class).orElse(null);
 
 		HttpPartSerializerSession partSerializerSession = partSerializer.createPartSession(null);
 
 		this.headers = HeaderSupplier.create();
-		for (Object o : ps.getList(RESTCLIENT_headers, Object.class).orElse(emptyList())) {
+		for (Object o : cp.getList(RESTCLIENT_headers, Object.class).orElse(emptyList())) {
 			o = buildBuilders(o, partSerializerSession);
 			if (o instanceof HeaderSupplier)
 				headers.add((HeaderSupplier)o);
@@ -2104,7 +2104,7 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re
 		}
 
 		this.query = NameValuePairSupplier.create();
-		for (Object o : ps.getList(RESTCLIENT_query, Object.class).orElse(emptyList())) {
+		for (Object o : cp.getList(RESTCLIENT_query, Object.class).orElse(emptyList())) {
 			o = buildBuilders(o, partSerializerSession);
 			if (o instanceof NameValuePairSupplier)
 				query.add((NameValuePairSupplier)o);
@@ -2113,7 +2113,7 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re
 		}
 
 		this.formData = NameValuePairSupplier.create();
-		for (Object o : ps.getList(RESTCLIENT_formData, Object.class).orElse(emptyList())) {
+		for (Object o : cp.getList(RESTCLIENT_formData, Object.class).orElse(emptyList())) {
 			o = buildBuilders(o, partSerializerSession);
 			if (o instanceof NameValuePairSupplier)
 				formData.add((NameValuePairSupplier)o);
@@ -2121,9 +2121,9 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re
 				formData.add(BasicNameValuePair.cast(o));
 		}
 
-		this.callHandler = ps.getInstance(RESTCLIENT_callHandler, RestCallHandler.class, bf).orElseGet(bf.createBeanSupplier(BasicRestCallHandler.class));
+		this.callHandler = cp.getInstance(RESTCLIENT_callHandler, RestCallHandler.class, bf).orElseGet(bf.createBeanSupplier(BasicRestCallHandler.class));
 
-		this.interceptors = ps.getInstanceArray(RESTCLIENT_interceptors, RestCallInterceptor.class).orElse(new RestCallInterceptor[0]);
+		this.interceptors = cp.getInstanceArray(RESTCLIENT_interceptors, RestCallInterceptor.class).orElse(new RestCallInterceptor[0]);
 
 		creationStack = isDebug() ? Thread.currentThread().getStackTrace() : null;
 	}
@@ -3783,7 +3783,7 @@ public class RestClient extends BeanContext implements HttpClient, Closeable, Re
 	<T extends Context> T getInstance(Class<T> c) {
 		Context o = requestContexts.get(c);
 		if (o == null) {
-			o = ContextCache.INSTANCE.create(c, getPropertyStore());
+			o = ContextCache.INSTANCE.create(c, getContextProperties());
 			requestContexts.put(c, o);
 		}
 		return (T)o;
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 6d89700..6b8567c 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
@@ -100,11 +100,11 @@ public class RestClientBuilder extends BeanContextBuilder {
 
 	/**
 	 * Constructor.
-	 * @param ps
+	 * @param cp
 	 * 	Initial configuration properties for this builder.
 	 */
-	protected RestClientBuilder(PropertyStore ps) {
-		super(ps);
+	protected RestClientBuilder(ContextProperties cp) {
+		super(cp);
 		HttpClientBuilder httpClientBuilder = peek(HttpClientBuilder.class, RESTCLIENT_httpClientBuilder);
 		this.httpClientBuilder = httpClientBuilder != null ? httpClientBuilder : getHttpClientBuilder();
 	}
@@ -123,7 +123,7 @@ public class RestClientBuilder extends BeanContextBuilder {
 	public RestClient build() {
 		set(RESTCLIENT_httpClient, getHttpClient());
 		set(RESTCLIENT_httpClientBuilder, getHttpClientBuilder());
-		return new RestClient(getPropertyStore());
+		return new RestClient(getContextProperties());
 	}
 
 	@Override /* ContextBuilder */
@@ -4670,7 +4670,7 @@ public class RestClientBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public RestClientBuilder apply(PropertyStore copyFrom) {
+	public RestClientBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
index ab12c9a..09ea3f4 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
@@ -132,7 +132,7 @@ public class RemoteOperationMeta {
 					else
 						bodyArg = rma;
 				}
-				RequestBeanMeta rmba = RequestBeanMeta.create(mpi, PropertyStore.DEFAULT);
+				RequestBeanMeta rmba = RequestBeanMeta.create(mpi, ContextProperties.DEFAULT);
 				if (rmba != null) {
 					requestArgs.add(new RemoteOperationBeanArg(mpi.getIndex(), rmba));
 				}
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationReturn.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationReturn.java
index 5a780f0..7e2fd51 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationReturn.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationReturn.java
@@ -62,7 +62,7 @@ public final class RemoteOperationReturn {
 			rv = RemoteReturn.BODY;
 
 		if (rt.hasAnnotation(Response.class) && rt.isInterface()) {
-			this.meta = ResponseBeanMeta.create(m, PropertyStore.DEFAULT);
+			this.meta = ResponseBeanMeta.create(m, ContextProperties.DEFAULT);
 			rv = RemoteReturn.BEAN;
 		} else {
 			this.meta = null;
diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
index 81d877c..58adf36 100644
--- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
+++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClient.java
@@ -249,31 +249,31 @@ public class MockRestClient extends RestClient implements HttpClientConnection {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	The REST bean or bean class annotated with {@link Rest @Rest}.
 	 * 	<br>If a class, it must have a no-arg constructor.
 	 */
-	public MockRestClient(PropertyStore ps) {
-		super(preInit(ps));
-		ps = getPropertyStore();
-		this.restBeanCtx = ps.getInstance(MOCKRESTCLIENT_restBeanCtx, RestContext.class).get();
+	public MockRestClient(ContextProperties cp) {
+		super(preInit(cp));
+		cp = getContextProperties();
+		this.restBeanCtx = cp.getInstance(MOCKRESTCLIENT_restBeanCtx, RestContext.class).get();
 		this.restObject = restBeanCtx.getResource();
-		this.contextPath = ps.getString(MOCKRESTCLIENT_contextPath).orElse("");
-		this.servletPath = ps.getString(MOCKRESTCLIENT_servletPath).orElse("");
-		this.pathVars = ps.getMap(MOCKRESTCLIENT_pathVars, String.class).orElse(emptyMap());
+		this.contextPath = cp.getString(MOCKRESTCLIENT_contextPath).orElse("");
+		this.servletPath = cp.getString(MOCKRESTCLIENT_servletPath).orElse("");
+		this.pathVars = cp.getMap(MOCKRESTCLIENT_pathVars, String.class).orElse(emptyMap());
 
 		HttpClientConnectionManager ccm = getHttpClientConnectionManager();
 		if (ccm instanceof MockHttpClientConnectionManager)
 			((MockHttpClientConnectionManager)ccm).init(this);
 	}
 
-	private static PropertyStore preInit(PropertyStore ps) {
+	private static ContextProperties preInit(ContextProperties cp) {
 		try {
-			PropertyStoreBuilder psb = ps.builder();
-			Object restBean = ps.getInstance(MOCKRESTCLIENT_restBean, Object.class).orElse(null);
-			String contextPath = ps.get(MOCKRESTCLIENT_contextPath, String.class).orElse(null);
-			String servletPath = ps.get(MOCKRESTCLIENT_servletPath, String.class).orElse(null);
-			String rootUrl = ps.get(RESTCLIENT_rootUri, String.class).orElse("http://localhost");
+			ContextPropertiesBuilder cpb = cp.builder();
+			Object restBean = cp.getInstance(MOCKRESTCLIENT_restBean, Object.class).orElse(null);
+			String contextPath = cp.get(MOCKRESTCLIENT_contextPath, String.class).orElse(null);
+			String servletPath = cp.get(MOCKRESTCLIENT_servletPath, String.class).orElse(null);
+			String rootUrl = cp.get(RESTCLIENT_rootUri, String.class).orElse("http://localhost");
 
 			Class<?> c = restBean instanceof Class ? (Class<?>)restBean : restBean.getClass();
 			if (! REST_CONTEXTS.containsKey(c)) {
@@ -289,16 +289,16 @@ public class MockRestClient extends RestClient implements HttpClientConnection {
 				REST_CONTEXTS.put(c, rc);
 			}
 			RestContext restBeanCtx = REST_CONTEXTS.get(c);
-			psb.set(MOCKRESTCLIENT_restBeanCtx, restBeanCtx);
+			cpb.set(MOCKRESTCLIENT_restBeanCtx, restBeanCtx);
 
 			if (servletPath == null)
 				servletPath = toValidContextPath(restBeanCtx.getFullPath());
 
 			rootUrl = rootUrl + emptyIfNull(contextPath) + emptyIfNull(servletPath);
 
-			psb.set(MOCKRESTCLIENT_servletPath, servletPath);
-			psb.set(RESTCLIENT_rootUri, rootUrl);
-			return psb.build();
+			cpb.set(MOCKRESTCLIENT_servletPath, servletPath);
+			cpb.set(RESTCLIENT_rootUri, rootUrl);
+			return cpb.build();
 		} catch (Exception e) {
 			throw new ConfigException(e, "Could not initialize MockRestClient");
 		}
diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
index db9e76d..2c482ed 100644
--- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
+++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
@@ -67,11 +67,11 @@ public class MockRestClientBuilder extends RestClientBuilder {
 	/**
 	 * Constructor.
 	 *
-	 * @param ps
+	 * @param cp
 	 * 	Initial configuration properties for this builder.
 	 */
-	protected MockRestClientBuilder(PropertyStore ps) {
-		super(ps);
+	protected MockRestClientBuilder(ContextProperties cp) {
+		super(cp);
 		connectionManager(new MockHttpClientConnectionManager());
 	}
 
@@ -246,7 +246,7 @@ public class MockRestClientBuilder extends RestClientBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public MockRestClientBuilder apply(PropertyStore copyFrom) {
+	public MockRestClientBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 29036f6..50c7526 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -1457,7 +1457,7 @@ public class RestContext extends BeanContext {
 	 * 		<ul>
 	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContextBuilder#fileFinder(Class)}
 	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContextBuilder#fileFinder(FileFinder)}
-	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContext#createFileFinder(Object,PropertyStore,BeanFactory)}
+	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContext#createFileFinder(Object,ContextProperties,BeanFactory)}
 	 * 		</ul>
 	 * </ul>
 	 *
@@ -1476,7 +1476,7 @@ public class RestContext extends BeanContext {
 	 * </ul>
 	 *
 	 * <p>
-	 * The file finder is instantiated via the {@link RestContext#createFileFinder(Object,PropertyStore,BeanFactory)} method which in turn instantiates
+	 * The file finder is instantiated via the {@link RestContext#createFileFinder(Object,ContextProperties,BeanFactory)} method which in turn instantiates
 	 * based on the following logic:
 	 * <ul>
 	 * 	<li>Returns the resource class itself if it's an instance of {@link FileFinder}.
@@ -2904,7 +2904,7 @@ public class RestContext extends BeanContext {
 	 * 		<ul>
 	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContextBuilder#staticFiles(Class)}
 	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContextBuilder#staticFiles(StaticFiles)}
-	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContext#createStaticFiles(Object,PropertyStore,BeanFactory)}
+	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContext#createStaticFiles(Object,ContextProperties,BeanFactory)}
 	 * 		</ul>
 	 * </ul>
 	 *
@@ -2925,7 +2925,7 @@ public class RestContext extends BeanContext {
 	 * </ul>
 	 *
 	 * <p>
-	 * The static file finder is instantiated via the {@link RestContext#createStaticFiles(Object,PropertyStore,BeanFactory)} method which in turn instantiates
+	 * The static file finder is instantiated via the {@link RestContext#createStaticFiles(Object,ContextProperties,BeanFactory)} method which in turn instantiates
 	 * based on the following logic:
 	 * <ul>
 	 * 	<li>Returns the resource class itself is an instance of {@link StaticFiles}.
@@ -3449,7 +3449,7 @@ public class RestContext extends BeanContext {
 	 * @throws Exception If any initialization problems were encountered.
 	 */
 	public RestContext(RestContextBuilder builder) throws Exception {
-		super(builder.getPropertyStore());
+		super(builder.getContextProperties());
 
 		startTime = Instant.now();
 
@@ -3458,7 +3458,7 @@ public class RestContext extends BeanContext {
 		HttpException _initException = null;
 
 		try {
-			PropertyStore ps = getPropertyStore();
+			ContextProperties cp = getContextProperties();
 
 			this.builder = builder;
 
@@ -3468,82 +3468,82 @@ public class RestContext extends BeanContext {
 
 			RestContext parent = parentContext = builder.parentContext;
 
-			rootBeanFactory = createBeanFactory(r, ps, parent);
+			rootBeanFactory = createBeanFactory(r, cp, parent);
 
 			BeanFactory bf = beanFactory = BeanFactory.of(rootBeanFactory, r);
 			bf.addBean(BeanFactory.class, bf);
 			bf.addBean(RestContext.class, this);
 			bf.addBean(Object.class, r);
 
-			bf.addBean(PropertyStore.class, ps);
+			bf.addBean(ContextProperties.class, cp);
 
-			Logger l = logger = createLogger(r, ps, bf);
+			Logger l = logger = createLogger(r, cp, bf);
 			bf.addBean(Logger.class, l);
 
-			ThrownStore ts = thrownStore = createThrownStore(r, ps, parent, bf);
+			ThrownStore ts = thrownStore = createThrownStore(r, cp, parent, bf);
 			bf.addBean(ThrownStore.class, ts);
 
-			methodExecStore = createMethodExecStore(r, ps, bf, ts);
+			methodExecStore = createMethodExecStore(r, cp, bf, ts);
 			bf.addBean(MethodExecStore.class, methodExecStore);
 
-			Messages m = messages = createMessages(r, ps);
+			Messages m = messages = createMessages(r, cp);
 
-			VarResolver vr = varResolver = createVarResolver(r, ps, bf, m);
+			VarResolver vr = varResolver = createVarResolver(r, cp, bf, m);
 			bf.addBean(VarResolver.class, vr);
 
 			config = builder.config.resolving(vr.createSession());
 			bf.addBean(Config.class, config);
 
-			responseHandlers = createResponseHandlers(r, ps, bf).asArray();
+			responseHandlers = createResponseHandlers(r, cp, bf).asArray();
 			bf.addBean(ResponseHandler[].class, responseHandlers);
 
-			callLogger = createCallLogger(r, ps, bf, l, ts);
+			callLogger = createCallLogger(r, cp, bf, l, ts);
 			bf.addBean(RestLogger.class, callLogger);
 
-			serializers = createSerializerGroup(r, ps, bf);
+			serializers = createSerializerGroup(r, cp, bf);
 			bf.addBean(SerializerGroup.class, serializers);
 
-			parsers = createParserGroup(r, ps, bf);
+			parsers = createParserGroup(r, cp, bf);
 			bf.addBean(ParserGroup.class, parsers);
 
-			partSerializer = createPartSerializer(r, ps, bf);
+			partSerializer = createPartSerializer(r, cp, bf);
 			bf.addBean(HttpPartSerializer.class, partSerializer);
 
-			partParser = createPartParser(r, ps, bf);
+			partParser = createPartParser(r, cp, bf);
 			bf.addBean(HttpPartParser.class, partParser);
 
-			jsonSchemaGenerator = createJsonSchemaGenerator(r, ps, bf);
+			jsonSchemaGenerator = createJsonSchemaGenerator(r, cp, bf);
 			bf.addBean(JsonSchemaGenerator.class, jsonSchemaGenerator);
 
-			FileFinder ff = fileFinder = createFileFinder(r, ps, bf);
+			FileFinder ff = fileFinder = createFileFinder(r, cp, bf);
 			bf.addBean(FileFinder.class, ff);
 
-			staticFiles = createStaticFiles(r, ps, bf);
+			staticFiles = createStaticFiles(r, cp, bf);
 			bf.addBean(StaticFiles.class, staticFiles);
 
-			defaultRequestHeaders = createDefaultRequestHeaders(r, ps, bf).asArray();
-			defaultResponseHeaders = createDefaultResponseHeaders(r, ps, bf).asArray();
-			defaultRequestAttributes = createDefaultRequestAttributes(r, ps, bf).asArray();
+			defaultRequestHeaders = createDefaultRequestHeaders(r, cp, bf).asArray();
+			defaultResponseHeaders = createDefaultResponseHeaders(r, cp, bf).asArray();
+			defaultRequestAttributes = createDefaultRequestAttributes(r, cp, bf).asArray();
 
-			opParams = createRestOperationParams(r, ps, bf).asArray();
-			hookMethodParams = createHookMethodParams(r, ps, bf).asArray();
+			opParams = createRestOperationParams(r, cp, bf).asArray();
+			hookMethodParams = createHookMethodParams(r, cp, bf).asArray();
 
-			uriContext = nullIfEmpty(ps.getString(REST_uriContext).orElse(null));
-			uriAuthority = nullIfEmpty(ps.getString(REST_uriAuthority).orElse(null));
-			uriResolution = ps.get(REST_uriResolution, UriResolution.class).orElse(UriResolution.ROOT_RELATIVE);
-			uriRelativity = ps.get(REST_uriRelativity, UriRelativity.class).orElse(UriRelativity.RESOURCE);
+			uriContext = nullIfEmpty(cp.getString(REST_uriContext).orElse(null));
+			uriAuthority = nullIfEmpty(cp.getString(REST_uriAuthority).orElse(null));
+			uriResolution = cp.get(REST_uriResolution, UriResolution.class).orElse(UriResolution.ROOT_RELATIVE);
+			uriRelativity = cp.get(REST_uriRelativity, UriRelativity.class).orElse(UriRelativity.RESOURCE);
 
-			allowBodyParam = ! ps.getBoolean(REST_disableAllowBodyParam).orElse(false);
-			allowedHeaderParams = newCaseInsensitiveSet(ps.getString(REST_allowedHeaderParams).map(x -> "NONE".equals(x) ? "" : x).orElse("Accept,Content-Type"));
-			allowedMethodParams = newCaseInsensitiveSet(ps.getString(REST_allowedMethodParams).map(x -> "NONE".equals(x) ? "" : x).orElse("HEAD,OPTIONS"));
-			allowedMethodHeaders = newCaseInsensitiveSet(ps.getString(REST_allowedMethodHeaders).map(x -> "NONE".equals(x) ? "" : x).orElse(""));
-			renderResponseStackTraces = ps.getBoolean(REST_renderResponseStackTraces).orElse(false);
-			clientVersionHeader = ps.getString(REST_clientVersionHeader).orElse("X-Client-Version");
+			allowBodyParam = ! cp.getBoolean(REST_disableAllowBodyParam).orElse(false);
+			allowedHeaderParams = newCaseInsensitiveSet(cp.getString(REST_allowedHeaderParams).map(x -> "NONE".equals(x) ? "" : x).orElse("Accept,Content-Type"));
+			allowedMethodParams = newCaseInsensitiveSet(cp.getString(REST_allowedMethodParams).map(x -> "NONE".equals(x) ? "" : x).orElse("HEAD,OPTIONS"));
+			allowedMethodHeaders = newCaseInsensitiveSet(cp.getString(REST_allowedMethodHeaders).map(x -> "NONE".equals(x) ? "" : x).orElse(""));
+			renderResponseStackTraces = cp.getBoolean(REST_renderResponseStackTraces).orElse(false);
+			clientVersionHeader = cp.getString(REST_clientVersionHeader).orElse("X-Client-Version");
 
-			debugEnablement = createDebugEnablement(r, ps, bf);
+			debugEnablement = createDebugEnablement(r, cp, bf);
 
-			consumes = ps.getList(REST_consumes, MediaType.class).orElse(parsers.getSupportedMediaTypes());
-			produces = ps.getList(REST_produces, MediaType.class).orElse(serializers.getSupportedMediaTypes());
+			consumes = cp.getList(REST_consumes, MediaType.class).orElse(parsers.getSupportedMediaTypes());
+			produces = cp.getList(REST_produces, MediaType.class).orElse(serializers.getSupportedMediaTypes());
 
 			fullPath = (builder.parentContext == null ? "" : (builder.parentContext.fullPath + '/')) + builder.getPath();
 			path = builder.getPath();
@@ -3553,19 +3553,19 @@ public class RestContext extends BeanContext {
 				p += "/*";
 			pathMatcher = UrlPathMatcher.of(p);
 
-			startCallMethods = createStartCallMethods(r, ps, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
-			endCallMethods = createEndCallMethods(r, ps, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
-			postInitMethods = createPostInitMethods(r, ps, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
-			postInitChildFirstMethods = createPostInitChildFirstMethods(r, ps, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
-			destroyMethods = createDestroyMethods(r, ps, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
+			startCallMethods = createStartCallMethods(r, cp, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
+			endCallMethods = createEndCallMethods(r, cp, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
+			postInitMethods = createPostInitMethods(r, cp, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
+			postInitChildFirstMethods = createPostInitChildFirstMethods(r, cp, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
+			destroyMethods = createDestroyMethods(r, cp, bf).stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
 
-			preCallMethods = createPreCallMethods(r, ps, bf).stream().map(this::toRestOperationInvoker).toArray(RestOperationInvoker[]:: new);
-			postCallMethods = createPostCallMethods(r, ps, bf).stream().map(this::toRestOperationInvoker).toArray(RestOperationInvoker[]:: new);
+			preCallMethods = createPreCallMethods(r, cp, bf).stream().map(this::toRestOperationInvoker).toArray(RestOperationInvoker[]:: new);
+			postCallMethods = createPostCallMethods(r, cp, bf).stream().map(this::toRestOperationInvoker).toArray(RestOperationInvoker[]:: new);
 
-			restOperations = createRestOperations(r, ps, bf);
-			restChildren = createRestChildren(r, ps, bf, builder.inner);
+			restOperations = createRestOperations(r, cp, bf);
+			restChildren = createRestChildren(r, cp, bf, builder.inner);
 
-			swaggerProvider = createSwaggerProvider(r, ps, bf, ff, m, vr);
+			swaggerProvider = createSwaggerProvider(r, cp, bf, ff, m, vr);
 
 		} catch (HttpException e) {
 			_initException = e;
@@ -3655,7 +3655,7 @@ public class RestContext extends BeanContext {
 	 * @return The bean factory for this REST resource.
 	 * @throws Exception If bean factory could not be instantiated.
 	 */
-	protected BeanFactory createBeanFactory(Object resource, PropertyStore properties, RestContext parent) throws Exception {
+	protected BeanFactory createBeanFactory(Object resource, ContextProperties properties, RestContext parent) throws Exception {
 
 		BeanFactory x = null;
 
@@ -3693,7 +3693,7 @@ public class RestContext extends BeanContext {
 	 * @return The bean factory builder for this REST resource.
 	 * @throws Exception If bean factory could not be instantiated.
 	 */
-	protected BeanFactoryBuilder createBeanFactoryBuilder(Object resource, PropertyStore properties, RestContext parent) throws Exception {
+	protected BeanFactoryBuilder createBeanFactoryBuilder(Object resource, ContextProperties properties, RestContext parent) throws Exception {
 
 		Class<? extends BeanFactory> c = properties.getIfClass(REST_beanFactory, BeanFactory.class).orElse(null);
 
@@ -3734,9 +3734,9 @@ public class RestContext extends BeanContext {
 	 * 			<li>{@link RestContextBuilder#fileFinder(Class)}/{@link RestContextBuilder#fileFinder(FileFinder)}
 	 * 			<li>{@link Rest#fileFinder()}.
 	 * 		</ul>
-	 * 	<li>Resolves it via the {@link #createBeanFactory(Object,PropertyStore,RestContext) bean factory} registered in this context (including Spring beans if using SpringRestServlet).
+	 * 	<li>Resolves it via the {@link #createBeanFactory(Object,ContextProperties,RestContext) bean factory} registered in this context (including Spring beans if using SpringRestServlet).
 	 * 	<li>Looks for value in {@link #REST_fileFinderDefault} setting.
-	 * 	<li>Instantiates via {@link #createFileFinderBuilder(Object,PropertyStore,BeanFactory)}.
+	 * 	<li>Instantiates via {@link #createFileFinderBuilder(Object,ContextProperties,BeanFactory)}.
 	 * </ul>
 	 *
 	 * <p>
@@ -3758,7 +3758,7 @@ public class RestContext extends BeanContext {
 	 * The <c>createFileFinder()</c> method can be static or non-static can contain any of the following arguments:
 	 * <ul>
 	 * 	<li>{@link FileFinder} - The file finder that would have been returned by this method.
-	 * 	<li>{@link FileFinderBuilder} - The file finder returned by {@link #createFileFinderBuilder(Object,PropertyStore,BeanFactory)}.
+	 * 	<li>{@link FileFinderBuilder} - The file finder returned by {@link #createFileFinderBuilder(Object,ContextProperties,BeanFactory)}.
 	 * 	<li>{@link RestContext} - This REST context.
 	 * 	<li>{@link BeanFactory} - The bean factory of this REST context.
 	 * 	<li>Any {@doc RestInjection injected bean} types.  Use {@link Optional} arguments for beans that may not exist.
@@ -3775,11 +3775,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The file finder for this REST resource.
 	 * @throws Exception If file finder could not be instantiated.
 	 */
-	protected FileFinder createFileFinder(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected FileFinder createFileFinder(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		FileFinder x = null;
 
@@ -3813,7 +3813,7 @@ public class RestContext extends BeanContext {
 	 * Instantiates the file finder builder for this REST resource.
 	 *
 	 * <p>
-	 * Allows subclasses to intercept and modify the builder used by the {@link #createFileFinder(Object,PropertyStore,BeanFactory)} method.
+	 * Allows subclasses to intercept and modify the builder used by the {@link #createFileFinder(Object,ContextProperties,BeanFactory)} method.
 	 *
 	 * @param resource
 	 * 	The REST servlet or bean that this context defines.
@@ -3822,11 +3822,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The file finder builder for this REST resource.
 	 * @throws Exception If file finder builder could not be instantiated.
 	 */
-	protected FileFinderBuilder createFileFinderBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected FileFinderBuilder createFileFinderBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		Class<? extends FileFinder> c = properties.getIfClass(REST_fileFinder, FileFinder.class).orElse(null);
 
@@ -3891,11 +3891,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The file finder for this REST resource.
 	 * @throws Exception If file finder could not be instantiated.
 	 */
-	protected StaticFiles createStaticFiles(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected StaticFiles createStaticFiles(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		StaticFiles x = null;
 
@@ -3929,7 +3929,7 @@ public class RestContext extends BeanContext {
 	 * Instantiates the static files builder for this REST resource.
 	 *
 	 * <p>
-	 * Allows subclasses to intercept and modify the builder used by the {@link #createStaticFiles(Object,PropertyStore,BeanFactory)} method.
+	 * Allows subclasses to intercept and modify the builder used by the {@link #createStaticFiles(Object,ContextProperties,BeanFactory)} method.
 	 *
 	 * @param resource
 	 * 	The REST servlet or bean that this context defines.
@@ -3938,12 +3938,12 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The static files builder for this REST resource.
 	 * @throws Exception If static files builder could not be instantiated.
 	 */
 	@SuppressWarnings("unchecked")
-	protected StaticFilesBuilder createStaticFilesBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected StaticFilesBuilder createStaticFilesBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		Class<? extends StaticFiles> c = properties.getIfClass(REST_staticFiles, StaticFiles.class).orElse(null);
 
@@ -4009,17 +4009,17 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @param logger
 	 * 	The Java logger to use for logging messages.
-	 * 	<br>Created by {@link #createLogger(Object,PropertyStore,BeanFactory)}.
+	 * 	<br>Created by {@link #createLogger(Object,ContextProperties,BeanFactory)}.
 	 * @param thrownStore
 	 * 	The thrown exception statistics store.
-	 * 	<br>Created by {@link #createThrownStore(Object,PropertyStore,RestContext,BeanFactory)}.
+	 * 	<br>Created by {@link #createThrownStore(Object,ContextProperties,RestContext,BeanFactory)}.
 	 * @return The file finder for this REST resource.
 	 * @throws Exception If file finder could not be instantiated.
 	 */
-	protected RestLogger createCallLogger(Object resource, PropertyStore properties, BeanFactory beanFactory, Logger logger, ThrownStore thrownStore) throws Exception {
+	protected RestLogger createCallLogger(Object resource, ContextProperties properties, BeanFactory beanFactory, Logger logger, ThrownStore thrownStore) throws Exception {
 
 		RestLogger x = null;
 
@@ -4053,7 +4053,7 @@ public class RestContext extends BeanContext {
 	 * Instantiates the call logger builder for this REST resource.
 	 *
 	 * <p>
-	 * Allows subclasses to intercept and modify the builder used by the {@link #createCallLogger(Object,PropertyStore,BeanFactory,Logger,ThrownStore)} method.
+	 * Allows subclasses to intercept and modify the builder used by the {@link #createCallLogger(Object,ContextProperties,BeanFactory,Logger,ThrownStore)} method.
 	 *
 	 * @param resource
 	 * 	The REST servlet or bean that this context defines.
@@ -4062,17 +4062,17 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @param logger
 	 * 	The Java logger to use for logging messages.
-	 * 	<br>Created by {@link #createLogger(Object,PropertyStore,BeanFactory)}.
+	 * 	<br>Created by {@link #createLogger(Object,ContextProperties,BeanFactory)}.
 	 * @param thrownStore
 	 * 	The thrown exception statistics store.
-	 * 	<br>Created by {@link #createThrownStore(Object,PropertyStore,RestContext,BeanFactory)}.
+	 * 	<br>Created by {@link #createThrownStore(Object,ContextProperties,RestContext,BeanFactory)}.
 	 * @return The call logger builder for this REST resource.
 	 * @throws Exception If call logger builder could not be instantiated.
 	 */
-	protected RestLoggerBuilder createCallLoggerBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory, Logger logger, ThrownStore thrownStore) throws Exception {
+	protected RestLoggerBuilder createCallLoggerBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory, Logger logger, ThrownStore thrownStore) throws Exception {
 
 		Class<? extends RestLogger> c = properties.getIfClass(REST_callLogger, RestLogger.class).orElse(null);
 
@@ -4151,11 +4151,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The response handlers for this REST resource.
 	 * @throws Exception If response handlers could not be instantiated.
 	 */
-	protected ResponseHandlerList createResponseHandlers(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected ResponseHandlerList createResponseHandlers(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		ResponseHandlerList x = ResponseHandlerList.create();
 
@@ -4205,14 +4205,14 @@ public class RestContext extends BeanContext {
 	 * 	The REST servlet or bean that this context defines.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @param properties
 	 * 	The properties of this bean.
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @return The serializers for this REST resource.
 	 * @throws Exception If serializers could not be instantiated.
 	 */
-	protected SerializerGroup createSerializerGroup(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected SerializerGroup createSerializerGroup(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		SerializerGroup g = beanFactory.getBean(SerializerGroup.class).orElse(null);
 
@@ -4240,11 +4240,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The serializers for this REST resource.
 	 * @throws Exception If serializers could not be instantiated.
 	 */
-	protected SerializerGroupBuilder createSerializerGroupBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected SerializerGroupBuilder createSerializerGroupBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		Object[] x = properties.getArray(REST_serializers, Object.class).orElse(null);
 
@@ -4303,11 +4303,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The parsers for this REST resource.
 	 * @throws Exception If parsers could not be instantiated.
 	 */
-	protected ParserGroup createParserGroup(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected ParserGroup createParserGroup(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		ParserGroup g = beanFactory.getBean(ParserGroup.class).orElse(null);
 
@@ -4335,11 +4335,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The serializers for this REST resource.
 	 * @throws Exception If serializers could not be instantiated.
 	 */
-	protected ParserGroupBuilder createParserGroupBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected ParserGroupBuilder createParserGroupBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		Object[] x = properties.getArray(REST_parsers, Object.class).orElse(null);
 
@@ -4399,11 +4399,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The HTTP part serializer for this REST resource.
 	 * @throws Exception If serializer could not be instantiated.
 	 */
-	protected HttpPartSerializer createPartSerializer(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected HttpPartSerializer createPartSerializer(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		HttpPartSerializer x = null;
 
@@ -4464,11 +4464,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The HTTP part parser for this REST resource.
 	 * @throws Exception If parser could not be instantiated.
 	 */
-	protected HttpPartParser createPartParser(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected HttpPartParser createPartParser(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		HttpPartParser x = null;
 
@@ -4518,12 +4518,12 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The REST method parameter resolvers for this REST resource.
 	 * @throws Exception If parameter resolvers could not be instantiated.
 	 */
 	@SuppressWarnings("unchecked")
-	protected RestOperationParamList createRestOperationParams(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected RestOperationParamList createRestOperationParams(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		RestOperationParamList x = RestOperationParamList.create();
 
@@ -4595,12 +4595,12 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The REST method parameter resolvers for this REST resource.
 	 * @throws Exception If parameter resolvers could not be instantiated.
 	 */
 	@SuppressWarnings("unchecked")
-	protected RestOperationParamList createHookMethodParams(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected RestOperationParamList createHookMethodParams(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		RestOperationParamList x = RestOperationParamList.create();
 
@@ -4660,11 +4660,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The logger for this REST resource.
 	 * @throws Exception If logger could not be instantiated.
 	 */
-	protected Logger createLogger(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected Logger createLogger(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		Logger x = beanFactory.getBean(Logger.class).orElse(null);
 
@@ -4706,11 +4706,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The JSON schema generator for this REST resource.
 	 * @throws Exception If JSON schema generator could not be instantiated.
 	 */
-	protected JsonSchemaGenerator createJsonSchemaGenerator(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected JsonSchemaGenerator createJsonSchemaGenerator(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		JsonSchemaGenerator x = beanFactory.getBean(JsonSchemaGenerator.class).orElse(null);
 
 		if (x == null)
@@ -4731,7 +4731,7 @@ public class RestContext extends BeanContext {
 	 * Instantiates the JSON-schema generator builder for this REST resource.
 	 *
 	 * <p>
-	 * Allows subclasses to intercept and modify the builder used by the {@link #createJsonSchemaGenerator(Object,PropertyStore,BeanFactory)} method.
+	 * Allows subclasses to intercept and modify the builder used by the {@link #createJsonSchemaGenerator(Object,ContextProperties,BeanFactory)} method.
 	 *
 	 * @param resource
 	 * 	The REST servlet or bean that this context defines.
@@ -4740,11 +4740,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The JSON-schema generator builder for this REST resource.
 	 * @throws Exception If JSON-schema generator builder could not be instantiated.
 	 */
-	protected JsonSchemaGeneratorBuilder createJsonSchemaGeneratorBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected JsonSchemaGeneratorBuilder createJsonSchemaGeneratorBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		JsonSchemaGeneratorBuilder x = JsonSchemaGenerator
 			.create()
 			.apply(properties);
@@ -4794,14 +4794,14 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
-	 * @param fileFinder The file finder configured on this bean created by {@link #createFileFinder(Object,PropertyStore,BeanFactory)}.
-	 * @param messages The localized messages configured on this bean created by {@link #createMessages(Object,PropertyStore)}.
-	 * @param varResolver The variable resolver configured on this bean created by {@link #createVarResolver(Object,PropertyStore,BeanFactory,Messages)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
+	 * @param fileFinder The file finder configured on this bean created by {@link #createFileFinder(Object,ContextProperties,BeanFactory)}.
+	 * @param messages The localized messages configured on this bean created by {@link #createMessages(Object,ContextProperties)}.
+	 * @param varResolver The variable resolver configured on this bean created by {@link #createVarResolver(Object,ContextProperties,BeanFactory,Messages)}.
 	 * @return The info provider for this REST resource.
 	 * @throws Exception If info provider could not be instantiated.
 	 */
-	protected SwaggerProvider createSwaggerProvider(Object resource, PropertyStore properties, BeanFactory beanFactory, FileFinder fileFinder, Messages messages, VarResolver varResolver) throws Exception {
+	protected SwaggerProvider createSwaggerProvider(Object resource, ContextProperties properties, BeanFactory beanFactory, FileFinder fileFinder, Messages messages, VarResolver varResolver) throws Exception {
 
 		SwaggerProvider x = null;
 
@@ -4832,7 +4832,7 @@ public class RestContext extends BeanContext {
 	 * Instantiates the REST API builder for this REST resource.
 	 *
 	 * <p>
-	 * Allows subclasses to intercept and modify the builder used by the {@link #createSwaggerProvider(Object,PropertyStore,BeanFactory,FileFinder,Messages,VarResolver)} method.
+	 * Allows subclasses to intercept and modify the builder used by the {@link #createSwaggerProvider(Object,ContextProperties,BeanFactory,FileFinder,Messages,VarResolver)} method.
 	 *
 	 * @param resource
 	 * 	The REST servlet or bean that this context defines.
@@ -4841,14 +4841,14 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
-	 * @param fileFinder The file finder configured on this bean created by {@link #createFileFinder(Object,PropertyStore,BeanFactory)}.
-	 * @param messages The localized messages configured on this bean created by {@link #createMessages(Object,PropertyStore)}.
-	 * @param varResolver The variable resolver configured on this bean created by {@link #createVarResolver(Object,PropertyStore,BeanFactory,Messages)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
+	 * @param fileFinder The file finder configured on this bean created by {@link #createFileFinder(Object,ContextProperties,BeanFactory)}.
+	 * @param messages The localized messages configured on this bean created by {@link #createMessages(Object,ContextProperties)}.
+	 * @param varResolver The variable resolver configured on this bean created by {@link #createVarResolver(Object,ContextProperties,BeanFactory,Messages)}.
 	 * @return The REST API builder for this REST resource.
 	 * @throws Exception If REST API builder could not be instantiated.
 	 */
-	protected SwaggerProviderBuilder createSwaggerProviderBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory, FileFinder fileFinder, Messages messages, VarResolver varResolver) throws Exception {
+	protected SwaggerProviderBuilder createSwaggerProviderBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory, FileFinder fileFinder, Messages messages, VarResolver varResolver) throws Exception {
 
 		Class<? extends SwaggerProvider> c = properties.getIfClass(REST_swaggerProvider, SwaggerProvider.class).orElse(null);
 
@@ -4887,7 +4887,7 @@ public class RestContext extends BeanContext {
 	 * 			<li>Any {@doc RestInjection injected beans}.
 	 * 		</ul>
 	 * 	<li>Resolves it via the bean factory registered in this context.
-	 * 	<li>Instantiates a new {@link VarResolver} using the variables returned by {@link #createVars(Object,PropertyStore,BeanFactory)}.
+	 * 	<li>Instantiates a new {@link VarResolver} using the variables returned by {@link #createVars(Object,ContextProperties,BeanFactory)}.
 	 * </ul>
 	 *
 	 * @param resource
@@ -4897,12 +4897,12 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @param messages The localized messages of this bean.
 	 * @return The variable resolver for this REST resource.
 	 * @throws Exception If variable resolver could not be instantiated.
 	 */
-	protected VarResolver createVarResolver(Object resource, PropertyStore properties, BeanFactory beanFactory, Messages messages) throws Exception {
+	protected VarResolver createVarResolver(Object resource, ContextProperties properties, BeanFactory beanFactory, Messages messages) throws Exception {
 
 		VarResolver x = beanFactory.getBean(VarResolver.class).orElse(null);
 
@@ -4947,12 +4947,12 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The variable resolver variables for this REST resource.
 	 * @throws Exception If variable resolver variables could not be instantiated.
 	 */
 	@SuppressWarnings("unchecked")
-	protected VarList createVars(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected VarList createVars(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		VarList x = beanFactory.getBean(VarList.class).orElse(null);
 
@@ -5013,11 +5013,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Will be <jk>null</jk> if the bean is a top-level resource.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The stack trace store for this REST resource.
 	 * @throws Exception If stack trace store could not be instantiated.
 	 */
-	protected ThrownStore createThrownStore(Object resource, PropertyStore properties, RestContext parent, BeanFactory beanFactory) throws Exception {
+	protected ThrownStore createThrownStore(Object resource, ContextProperties properties, RestContext parent, BeanFactory beanFactory) throws Exception {
 
 		ThrownStore x = beanFactory.getBean(ThrownStore.class).orElse(null);
 
@@ -5048,11 +5048,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Will be <jk>null</jk> if the bean is a top-level resource.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The stack trace store for this REST resource.
 	 * @throws Exception If stack trace store could not be instantiated.
 	 */
-	protected ThrownStoreBuilder createThrownStoreBuilder(Object resource, PropertyStore properties, RestContext parent, BeanFactory beanFactory) throws Exception {
+	protected ThrownStoreBuilder createThrownStoreBuilder(Object resource, ContextProperties properties, RestContext parent, BeanFactory beanFactory) throws Exception {
 
 		ThrownStore p = parent == null ? null : parent.thrownStore;
 
@@ -5082,14 +5082,14 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @param thrownStore
 	 * 	The thrown exception statistics store.
-	 * 	<br>Created by {@link #createThrownStore(Object,PropertyStore,RestContext,BeanFactory)}.
+	 * 	<br>Created by {@link #createThrownStore(Object,ContextProperties,RestContext,BeanFactory)}.
 	 * @return The stack trace store for this REST resource.
 	 * @throws Exception If stack trace store could not be instantiated.
 	 */
-	protected MethodExecStore createMethodExecStore(Object resource, PropertyStore properties, BeanFactory beanFactory, ThrownStore thrownStore) throws Exception {
+	protected MethodExecStore createMethodExecStore(Object resource, ContextProperties properties, BeanFactory beanFactory, ThrownStore thrownStore) throws Exception {
 
 		MethodExecStore x = beanFactory.getBean(MethodExecStore.class).orElse(null);
 
@@ -5117,14 +5117,14 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @param thrownStore
 	 * 	The thrown exception statistics store.
-	 * 	<br>Created by {@link #createThrownStore(Object,PropertyStore,RestContext,BeanFactory)}.
+	 * 	<br>Created by {@link #createThrownStore(Object,ContextProperties,RestContext,BeanFactory)}.
 	 * @return The stack trace store for this REST resource.
 	 * @throws Exception If stack trace store could not be instantiated.
 	 */
-	protected MethodExecStoreBuilder createMethodExecStoreBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory, ThrownStore thrownStore) throws Exception {
+	protected MethodExecStoreBuilder createMethodExecStoreBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory, ThrownStore thrownStore) throws Exception {
 
 		MethodExecStoreBuilder x = MethodExecStore
 			.create()
@@ -5152,11 +5152,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default request headers for this REST object.
 	 * @throws Exception If stack trace store could not be instantiated.
 	 */
-	protected HeaderList createDefaultRequestHeaders(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected HeaderList createDefaultRequestHeaders(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		HeaderList x = HeaderList.create();
 
@@ -5183,11 +5183,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default response headers for this REST object.
 	 * @throws Exception If stack trace store could not be instantiated.
 	 */
-	protected HeaderList createDefaultResponseHeaders(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected HeaderList createDefaultResponseHeaders(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		HeaderList x = HeaderList.create();
 
@@ -5214,11 +5214,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default response headers for this REST object.
 	 * @throws Exception If stack trace store could not be instantiated.
 	 */
-	protected NamedAttributeList createDefaultRequestAttributes(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected NamedAttributeList createDefaultRequestAttributes(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		NamedAttributeList x = NamedAttributeList.create();
 
@@ -5245,11 +5245,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The debug enablement bean for this REST object.
 	 * @throws Exception If bean could not be created.
 	 */
-	protected DebugEnablement createDebugEnablement(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected DebugEnablement createDebugEnablement(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		DebugEnablement x = null;
 
 		if (resource instanceof DebugEnablement)
@@ -5285,11 +5285,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The debug enablement bean builder for this REST object.
 	 * @throws Exception If bean builder could not be created.
 	 */
-	protected DebugEnablementBuilder createDebugEnablementBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected DebugEnablementBuilder createDebugEnablementBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		Class<? extends DebugEnablement> c = properties.getIfClass(REST_debugEnablement, DebugEnablement.class).orElse(null);
 
@@ -5343,7 +5343,7 @@ public class RestContext extends BeanContext {
 	 * @return The messages for this REST object.
 	 * @throws Exception An error occurred.
 	 */
-	protected Messages createMessages(Object resource, PropertyStore properties) throws Exception {
+	protected Messages createMessages(Object resource, ContextProperties properties) throws Exception {
 
 		Messages x = createMessagesBuilder(resource, properties).build();
 
@@ -5362,7 +5362,7 @@ public class RestContext extends BeanContext {
 	 * Instantiates the Messages builder for this REST resource.
 	 *
 	 * <p>
-	 * Allows subclasses to intercept and modify the builder used by the {@link #createMessages(Object,PropertyStore)} method.
+	 * Allows subclasses to intercept and modify the builder used by the {@link #createMessages(Object,ContextProperties)} method.
 	 *
 	 * @param resource
 	 * 	The REST servlet or bean that this context defines.
@@ -5372,7 +5372,7 @@ public class RestContext extends BeanContext {
 	 * @return The messages builder for this REST resource.
 	 * @throws Exception If messages builder could not be instantiated.
 	 */
-	protected MessagesBuilder createMessagesBuilder(Object resource, PropertyStore properties) throws Exception {
+	protected MessagesBuilder createMessagesBuilder(Object resource, ContextProperties properties) throws Exception {
 
 		Tuple2<Class<?>,String>[] mbl = properties.getInstanceArray(REST_messages, Tuple2.class).orElse(new Tuple2[0]);
 		MessagesBuilder x = null;
@@ -5418,11 +5418,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The builder for the {@link RestOperations} object.
 	 * @throws Exception An error occurred.
 	 */
-	protected RestOperations createRestOperations(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected RestOperations createRestOperations(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		RestOperations x = createRestOperationsBuilder(resource, properties, beanFactory).build();
 
@@ -5441,7 +5441,7 @@ public class RestContext extends BeanContext {
 	 * Instantiates the REST methods builder for this REST resource.
 	 *
 	 * <p>
-	 * Allows subclasses to intercept and modify the builder used by the {@link #createRestOperations(Object,PropertyStore,BeanFactory)} method.
+	 * Allows subclasses to intercept and modify the builder used by the {@link #createRestOperations(Object,ContextProperties,BeanFactory)} method.
 	 *
 	 * @param resource
 	 * 	The REST servlet or bean that this context defines.
@@ -5450,11 +5450,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The REST methods builder for this REST resource.
 	 * @throws Exception If REST methods builder could not be instantiated.
 	 */
-	protected RestOperationsBuilder createRestOperationsBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected RestOperationsBuilder createRestOperationsBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		RestOperationsBuilder x = RestOperations
 			.create()
@@ -5533,13 +5533,13 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @param servletConfig
 	 * 	The servlet config passed into the servlet by the servlet container.
 	 * @return The builder for the {@link RestChildren} object.
 	 * @throws Exception An error occurred.
 	 */
-	protected RestChildren createRestChildren(Object resource, PropertyStore properties, BeanFactory beanFactory, ServletConfig servletConfig) throws Exception {
+	protected RestChildren createRestChildren(Object resource, ContextProperties properties, BeanFactory beanFactory, ServletConfig servletConfig) throws Exception {
 
 		RestChildren x = createRestChildrenBuilder(resource, properties, beanFactory, servletConfig).build();
 
@@ -5558,7 +5558,7 @@ public class RestContext extends BeanContext {
 	 * Instantiates the REST children builder for this REST resource.
 	 *
 	 * <p>
-	 * Allows subclasses to intercept and modify the builder used by the {@link #createRestChildren(Object,PropertyStore,BeanFactory,ServletConfig)} method.
+	 * Allows subclasses to intercept and modify the builder used by the {@link #createRestChildren(Object,ContextProperties,BeanFactory,ServletConfig)} method.
 	 *
 	 * @param resource
 	 * 	The REST servlet or bean that this context defines.
@@ -5567,13 +5567,13 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @param servletConfig
 	 * 	The servlet config passed into the servlet by the servlet container.
 	 * @return The REST children builder for this REST resource.
 	 * @throws Exception If REST children builder could not be instantiated.
 	 */
-	protected RestChildrenBuilder createRestChildrenBuilder(Object resource, PropertyStore properties, BeanFactory beanFactory, ServletConfig servletConfig) throws Exception {
+	protected RestChildrenBuilder createRestChildrenBuilder(Object resource, ContextProperties properties, BeanFactory beanFactory, ServletConfig servletConfig) throws Exception {
 
 		RestChildrenBuilder x = RestChildren
 			.create()
@@ -5641,11 +5641,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default response headers for this REST object.
 	 * @throws Exception If list could not be instantiated.
 	 */
-	protected MethodList createStartCallMethods(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected MethodList createStartCallMethods(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		Map<String,Method> x = AMap.create();
 
 		for (MethodInfo m : ClassInfo.ofProxy(resource).getAllMethodsParentFirst())
@@ -5676,11 +5676,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default response headers for this REST object.
 	 * @throws Exception If list could not be instantiated.
 	 */
-	protected MethodList createEndCallMethods(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected MethodList createEndCallMethods(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		Map<String,Method> x = AMap.create();
 
 		for (MethodInfo m : ClassInfo.ofProxy(resource).getAllMethodsParentFirst())
@@ -5711,11 +5711,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default response headers for this REST object.
 	 * @throws Exception If list could not be instantiated.
 	 */
-	protected MethodList createPostInitMethods(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected MethodList createPostInitMethods(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		Map<String,Method> x = AMap.create();
 
 		for (MethodInfo m : ClassInfo.ofProxy(resource).getAllMethodsParentFirst())
@@ -5746,11 +5746,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default response headers for this REST object.
 	 * @throws Exception If list could not be instantiated.
 	 */
-	protected MethodList createPostInitChildFirstMethods(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected MethodList createPostInitChildFirstMethods(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		Map<String,Method> x = AMap.create();
 
 		for (MethodInfo m : ClassInfo.ofProxy(resource).getAllMethodsParentFirst())
@@ -5781,11 +5781,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default response headers for this REST object.
 	 * @throws Exception If list could not be instantiated.
 	 */
-	protected MethodList createDestroyMethods(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected MethodList createDestroyMethods(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		Map<String,Method> x = AMap.create();
 
 		for (MethodInfo m : ClassInfo.ofProxy(resource).getAllMethodsParentFirst())
@@ -5816,11 +5816,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default response headers for this REST object.
 	 * @throws Exception If list could not be instantiated.
 	 */
-	protected MethodList createPreCallMethods(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected MethodList createPreCallMethods(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		Map<String,Method> x = AMap.create();
 
 		for (MethodInfo m : ClassInfo.ofProxy(resource).getAllMethodsParentFirst())
@@ -5851,11 +5851,11 @@ public class RestContext extends BeanContext {
 	 * 	<br>Consists of all properties gathered through the builder and annotations on this class and all parent classes.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The default response headers for this REST object.
 	 * @throws Exception If list could not be instantiated.
 	 */
-	protected MethodList createPostCallMethods(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected MethodList createPostCallMethods(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 		Map<String,Method> x = AMap.create();
 
 		for (MethodInfo m : ClassInfo.ofProxy(resource).getAllMethodsParentFirst())
@@ -6516,7 +6516,7 @@ public class RestContext extends BeanContext {
 	 * @param m The Java method being called.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The array of resolvers.
 	 */
 	protected RestOperationParam[] findRestOperationParams(Method m, BeanFactory beanFactory) {
@@ -6552,7 +6552,7 @@ public class RestContext extends BeanContext {
 	 * @param m The Java method being called.
 	 * @param beanFactory
 	 * 	The factory used for creating beans and retrieving injected beans.
-	 * 	<br>Created by {@link #createBeanFactory(Object,PropertyStore,RestContext)}.
+	 * 	<br>Created by {@link #createBeanFactory(Object,ContextProperties,RestContext)}.
 	 * @return The array of resolvers.
 	 */
 	protected RestOperationParam[] findHookMethodParams(Method m, BeanFactory beanFactory) {
@@ -7076,7 +7076,7 @@ public class RestContext extends BeanContext {
 		Class<?> c = o.getClass();
 		ResponseBeanMeta rbm = responseBeanMetas.get(c);
 		if (rbm == null) {
-			rbm = ResponseBeanMeta.create(c, getPropertyStore());
+			rbm = ResponseBeanMeta.create(c, getContextProperties());
 			if (rbm == null)
 				rbm = ResponseBeanMeta.NULL;
 			responseBeanMetas.put(c, rbm);
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index 29bf666..128ef3e 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -134,11 +134,11 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon
 			// Pass-through default values.
 			if (parentContext.isPresent()) {
 				RestContext pc = parentContext.get();
-				PropertyStore pcps = pc.getPropertyStore();
-				set(REST_callLoggerDefault, pcps.get(REST_callLoggerDefault).orElse(null));
-				set(REST_debugDefault, pcps.get(REST_debugDefault).orElse(null));
-				set(REST_staticFilesDefault, pcps.get(REST_staticFilesDefault).orElse(null));
-				set(REST_fileFinderDefault, pcps.get(REST_fileFinderDefault).orElse(null));
+				ContextProperties pcp = pc.getContextProperties();
+				set(REST_callLoggerDefault, pcp.get(REST_callLoggerDefault).orElse(null));
+				set(REST_debugDefault, pcp.get(REST_debugDefault).orElse(null));
+				set(REST_staticFilesDefault, pcp.get(REST_staticFilesDefault).orElse(null));
+				set(REST_fileFinderDefault, pcp.get(REST_fileFinderDefault).orElse(null));
 			}
 
 			beanFactory = createBeanFactory(parentContext, resource);
@@ -184,7 +184,7 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon
 	@Override /* BeanContextBuilder */
 	public RestContext build() {
 		try {
-			Class<? extends RestContext> c = getPropertyStore().getClass(REST_contextClass, RestContext.class).orElse(getDefaultImplClass());
+			Class<? extends RestContext> c = getContextProperties().getClass(REST_contextClass, RestContext.class).orElse(getDefaultImplClass());
 			return BeanFactory.of(beanFactory, resource.get()).addBeans(RestContextBuilder.class, this).createBean(c);
 		} catch (Exception e) {
 			throw toHttpException(e, InternalServerError.class);
@@ -354,12 +354,12 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon
 	}
 
 	/**
-	 * Creates a new {@link PropertyStore} object initialized with the properties defined in this config.
+	 * Creates a new {@link ContextProperties} object initialized with the properties defined in this config.
 	 *
 	 * @return A new property store.
 	 */
-	protected PropertyStoreBuilder createPropertyStore() {
-		return PropertyStore.create();
+	protected ContextPropertiesBuilder createContextPropertiesBuilder() {
+		return ContextProperties.create();
 	}
 
 
@@ -2243,7 +2243,7 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public RestContextBuilder apply(PropertyStore copyFrom) {
+	public RestContextBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index d86316b..5d9c206 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -727,13 +727,13 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @throws ServletException If context could not be created.
 	 */
 	public RestOperationContext(RestOperationContextBuilder builder) throws ServletException {
-		super(builder.getPropertyStore());
+		super(builder.getContextProperties());
 
 		try {
 			context = builder.restContext;
 			method = builder.restMethod;
 
-			PropertyStore ps = getPropertyStore();
+			ContextProperties cp = getContextProperties();
 
 			methodInvoker = new MethodInvoker(method, context.getMethodExecStats(method));
 			mi = MethodInfo.of(method).accessible();
@@ -742,49 +742,49 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 			BeanFactory bf = BeanFactory.of(context.rootBeanFactory, r)
 				.addBean(RestOperationContext.class, this)
 				.addBean(Method.class, method)
-				.addBean(PropertyStore.class, ps);
+				.addBean(ContextProperties.class, cp);
 			bf.addBean(BeanFactory.class, bf);
 
-			serializers = createSerializers(r, bf, ps);
+			serializers = createSerializers(r, bf, cp);
 			bf.addBean(SerializerGroup.class, serializers);
 
-			parsers = createParsers(r, bf, ps);
+			parsers = createParsers(r, bf, cp);
 			bf.addBean(ParserGroup.class, parsers);
 
-			partSerializer = createPartSerializer(r, bf, ps);
+			partSerializer = createPartSerializer(r, bf, cp);
 			bf.addBean(HttpPartSerializer.class, partSerializer);
 
-			partParser = createPartParser(r, bf, ps);
+			partParser = createPartParser(r, bf, cp);
 			bf.addBean(HttpPartParser.class, partParser);
 
-			converters = createConverters(r, ps, bf).asArray();
+			converters = createConverters(r, cp, bf).asArray();
 			bf.addBean(RestConverter[].class, converters);
 
-			guards = createGuards(r, ps, bf).asArray();
+			guards = createGuards(r, cp, bf).asArray();
 			bf.addBean(RestGuard[].class, guards);
 
-			RestMatcherList matchers = createMatchers(r, ps, bf);
+			RestMatcherList matchers = createMatchers(r, cp, bf);
  			requiredMatchers = matchers.stream().filter(x -> x.required()).toArray(RestMatcher[]::new);
 			optionalMatchers = matchers.stream().filter(x -> ! x.required()).toArray(RestMatcher[]::new);
 
-			pathMatchers = createPathMatchers(r, ps, bf).asArray();
+			pathMatchers = createPathMatchers(r, cp, bf).asArray();
 			bf.addBean(UrlPathMatcher[].class, pathMatchers);
 			bf.addBean(UrlPathMatcher.class, pathMatchers.length > 0 ? pathMatchers[0] : null);
 
-			encoders = createEncoders(r, ps, bf);
+			encoders = createEncoders(r, cp, bf);
 			bf.addBean(EncoderGroup.class, encoders);
 
-			jsonSchemaGenerator = createJsonSchemaGenerator(r, bf, ps);
+			jsonSchemaGenerator = createJsonSchemaGenerator(r, bf, cp);
 			bf.addBean(JsonSchemaGenerator.class, jsonSchemaGenerator);
 
-			supportedAcceptTypes = ps.getList(REST_produces, MediaType.class).orElse(serializers.getSupportedMediaTypes());
-			supportedContentTypes = ps.getList(REST_consumes, MediaType.class).orElse(parsers.getSupportedMediaTypes());
+			supportedAcceptTypes = cp.getList(REST_produces, MediaType.class).orElse(serializers.getSupportedMediaTypes());
+			supportedContentTypes = cp.getList(REST_consumes, MediaType.class).orElse(parsers.getSupportedMediaTypes());
 
-			defaultRequestHeaders = createDefaultRequestHeaders(r, ps, bf, method, context).asArray();
-			defaultResponseHeaders = createDefaultResponseHeaders(r, ps, bf, method, context).asArray();
-			defaultRequestQuery = createDefaultRequestQuery(r, ps, bf, method).asArray();
-			defaultRequestFormData = createDefaultRequestFormData(r, ps, bf, method).asArray();
-			defaultRequestAttributes = createDefaultRequestAttributes(r, ps, bf, method, context).asArray();
+			defaultRequestHeaders = createDefaultRequestHeaders(r, cp, bf, method, context).asArray();
+			defaultResponseHeaders = createDefaultResponseHeaders(r, cp, bf, method, context).asArray();
+			defaultRequestQuery = createDefaultRequestQuery(r, cp, bf, method).asArray();
+			defaultRequestFormData = createDefaultRequestFormData(r, cp, bf, method).asArray();
+			defaultRequestAttributes = createDefaultRequestAttributes(r, cp, bf, method, context).asArray();
 
 			int _hierarchyDepth = 0;
 			Class<?> sc = method.getDeclaringClass().getSuperclass();
@@ -794,22 +794,22 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 			}
 			hierarchyDepth = _hierarchyDepth;
 
-			String _httpMethod = ps.get(RESTOP_httpMethod, String.class).orElse(null);
+			String _httpMethod = cp.get(RESTOP_httpMethod, String.class).orElse(null);
 			if (_httpMethod == null)
 				_httpMethod = HttpUtils.detectHttpMethod(method, true, "GET");
 			if ("METHOD".equals(_httpMethod))
 				_httpMethod = "*";
 			httpMethod = _httpMethod.toUpperCase(Locale.ENGLISH);
 
-			defaultCharset = ps.get(REST_defaultCharset, String.class).orElse("utf-8");
+			defaultCharset = cp.get(REST_defaultCharset, String.class).orElse("utf-8");
 
-			maxInput = StringUtils.parseLongWithSuffix(ps.get(REST_maxInput, String.class).orElse("100M"));
+			maxInput = StringUtils.parseLongWithSuffix(cp.get(REST_maxInput, String.class).orElse("100M"));
 
-			responseMeta = ResponseBeanMeta.create(mi, ps);
+			responseMeta = ResponseBeanMeta.create(mi, cp);
 
 			opParams = context.findRestOperationParams(mi.inner(), bf);
 
-			this.priority = ps.getInteger(RESTOP_priority).orElse(0);
+			this.priority = cp.getInteger(RESTOP_priority).orElse(0);
 
 			this.callLogger = context.getCallLogger();
 		} catch (ServletException e) {
@@ -832,7 +832,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 		Class<?> c = o.getClass();
 		ResponseBeanMeta rbm = responseBeanMetas.get(c);
 		if (rbm == null) {
-			rbm = ResponseBeanMeta.create(c, serializers.getPropertyStore());
+			rbm = ResponseBeanMeta.create(c, serializers.getContextProperties());
 			if (rbm == null)
 				rbm = ResponseBeanMeta.NULL;
 			responseBeanMetas.put(c, rbm);
@@ -873,7 +873,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @throws Exception If result converters could not be instantiated.
 	 * @seealso #REST_converters
 	 */
-	protected RestConverterList createConverters(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected RestConverterList createConverters(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		RestConverterList x = RestConverterList.create();
 
@@ -925,7 +925,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @throws Exception If guards could not be instantiated.
 	 * @seealso #REST_guards
 	 */
-	protected RestGuardList createGuards(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected RestGuardList createGuards(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		RestGuardList x = RestGuardList.create();
 
@@ -986,7 +986,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @throws Exception If method matchers could not be instantiated.
 	 * @seealso #RESTMETHOD_matchers
 	 */
-	protected RestMatcherList createMatchers(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected RestMatcherList createMatchers(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		RestMatcherList x = RestMatcherList.create();
 
@@ -1041,7 +1041,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @throws Exception If encoders could not be instantiated.
 	 * @seealso #REST_encoders
 	 */
-	protected EncoderGroup createEncoders(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected EncoderGroup createEncoders(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		Encoder[] x = properties.getInstanceArray(REST_encoders, Encoder.class, beanFactory).orElse(null);
 
@@ -1093,17 +1093,17 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 *
 	 * @param resource The REST resource object.
 	 * @param beanFactory The bean factory to use for retrieving and creating beans.
-	 * @param ps The property store of this method.
+	 * @param properties The property store of this method.
 	 * @return The serializers for this REST resource.
 	 * @throws Exception If serializers could not be instantiated.
 	 * @seealso #REST_serializers
 	 */
-	protected SerializerGroup createSerializers(Object resource, BeanFactory beanFactory, PropertyStore ps) throws Exception {
+	protected SerializerGroup createSerializers(Object resource, BeanFactory beanFactory, ContextProperties properties) throws Exception {
 
 		SerializerGroup g = beanFactory.getBean(SerializerGroup.class).orElse(null);
 
 		if (g == null) {
-			Object[] x = ps.getArray(REST_serializers, Object.class).orElse(null);
+			Object[] x = properties.getArray(REST_serializers, Object.class).orElse(null);
 
 			if (x == null)
 				x = beanFactory.getBean(Serializer[].class).orElse(null);
@@ -1114,7 +1114,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 			g = SerializerGroup
 				.create()
 				.append(x)
-				.apply(ps)
+				.apply(properties)
 				.build();
 		}
 
@@ -1154,17 +1154,17 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 *
 	 * @param resource The REST resource object.
 	 * @param beanFactory The bean factory to use for retrieving and creating beans.
-	 * @param ps The property store of this method.
+	 * @param properties The property store of this method.
 	 * @return The parsers for this REST resource.
 	 * @throws Exception If parsers could not be instantiated.
 	 * @seealso #REST_parsers
 	 */
-	protected ParserGroup createParsers(Object resource, BeanFactory beanFactory, PropertyStore ps) throws Exception {
+	protected ParserGroup createParsers(Object resource, BeanFactory beanFactory, ContextProperties properties) throws Exception {
 
 		ParserGroup g = beanFactory.getBean(ParserGroup.class).orElse(null);
 
 		if (g == null) {
-			Object[] x = ps.getArray(REST_parsers, Object.class).orElse(null);
+			Object[] x = properties.getArray(REST_parsers, Object.class).orElse(null);
 
 			if (x == null)
 				x = beanFactory.getBean(Parser[].class).orElse(null);
@@ -1175,7 +1175,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 			g = ParserGroup
 				.create()
 				.append(x)
-				.apply(ps)
+				.apply(properties)
 				.build();
 		}
 
@@ -1216,12 +1216,12 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 *
 	 * @param resource The REST resource object.
 	 * @param beanFactory The bean factory to use for retrieving and creating beans.
-	 * @param ps The property store of this method.
+	 * @param properties The property store of this method.
 	 * @return The HTTP part serializer for this REST resource.
 	 * @throws Exception If serializer could not be instantiated.
 	 * @seealso #REST_partSerializer
 	 */
-	protected HttpPartSerializer createPartSerializer(Object resource, BeanFactory beanFactory, PropertyStore ps) throws Exception {
+	protected HttpPartSerializer createPartSerializer(Object resource, BeanFactory beanFactory, ContextProperties properties) throws Exception {
 
 		HttpPartSerializer x = null;
 
@@ -1229,13 +1229,13 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 			x = (HttpPartSerializer)resource;
 
 		if (x == null)
-			x = ps.getInstance(REST_partSerializer, HttpPartSerializer.class, beanFactory).orElse(null);
+			x = properties.getInstance(REST_partSerializer, HttpPartSerializer.class, beanFactory).orElse(null);
 
 		if (x == null)
 			x = beanFactory.getBean(HttpPartSerializer.class).orElse(null);
 
 		if (x == null)
-			x = new OpenApiSerializer(ps);
+			x = new OpenApiSerializer(properties);
 
 		x = BeanFactory
 			.of(beanFactory, resource)
@@ -1274,12 +1274,12 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 *
 	 * @param resource The REST resource object.
 	 * @param beanFactory The bean factory to use for retrieving and creating beans.
-	 * @param ps The property store of this method.
+	 * @param properties The property store of this method.
 	 * @return The HTTP part parser for this REST resource.
 	 * @throws Exception If parser could not be instantiated.
 	 * @seealso #REST_partParser
 	 */
-	protected HttpPartParser createPartParser(Object resource, BeanFactory beanFactory, PropertyStore ps) throws Exception {
+	protected HttpPartParser createPartParser(Object resource, BeanFactory beanFactory, ContextProperties properties) throws Exception {
 
 		HttpPartParser x = null;
 
@@ -1287,13 +1287,13 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 			x = (HttpPartParser)resource;
 
 		if (x == null)
-			x = ps.getInstance(REST_partParser, HttpPartParser.class, beanFactory).orElse(null);
+			x = properties.getInstance(REST_partParser, HttpPartParser.class, beanFactory).orElse(null);
 
 		if (x == null)
 			x = beanFactory.getBean(HttpPartParser.class).orElse(null);
 
 		if (x == null)
-			x = new OpenApiParser(ps);
+			x = new OpenApiParser(properties);
 
 		x = BeanFactory
 			.of(beanFactory, resource)
@@ -1317,7 +1317,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @throws Exception If parser could not be instantiated.
 	 * @seealso #RESTMETHOD_paths
 	 */
-	protected UrlPathMatcherList createPathMatchers(Object resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
+	protected UrlPathMatcherList createPathMatchers(Object resource, ContextProperties properties, BeanFactory beanFactory) throws Exception {
 
 		UrlPathMatcherList x = UrlPathMatcherList.create();
 		boolean dotAll = properties.getBoolean("RestOperationContext.dotAll.b").orElse(false);
@@ -1351,11 +1351,11 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 *
 	 * @param resource The REST resource object.
 	 * @param beanFactory The bean factory to use for retrieving and creating beans.
-	 * @param ps The property store of this method.
+	 * @param properties The property store of this method.
 	 * @return The JSON-schema generator for this method.
 	 * @throws Exception If schema generator could not be instantiated.
 	 */
-	protected JsonSchemaGenerator createJsonSchemaGenerator(Object resource, BeanFactory beanFactory, PropertyStore ps) throws Exception {
+	protected JsonSchemaGenerator createJsonSchemaGenerator(Object resource, BeanFactory beanFactory, ContextProperties properties) throws Exception {
 
 		JsonSchemaGenerator x = null;
 
@@ -1366,7 +1366,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 			x = beanFactory.getBean(JsonSchemaGenerator.class).orElse(null);
 
 		if (x == null)
-			x = JsonSchemaGenerator.create().apply(ps).build();
+			x = JsonSchemaGenerator.create().apply(properties).build();
 
 		x = BeanFactory
 			.of(beanFactory, resource)
@@ -1391,7 +1391,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @return The default request headers for this method.
 	 * @throws Exception If default request headers could not be instantiated.
 	 */
-	protected HeaderList createDefaultRequestHeaders(Object resource, PropertyStore properties, BeanFactory beanFactory, Method method, RestContext context) throws Exception {
+	protected HeaderList createDefaultRequestHeaders(Object resource, ContextProperties properties, BeanFactory beanFactory, Method method, RestContext context) throws Exception {
 
 		HeaderList x = HeaderList.create();
 
@@ -1437,7 +1437,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @return The default request headers for this method.
 	 * @throws Exception If default request headers could not be instantiated.
 	 */
-	protected HeaderList createDefaultResponseHeaders(Object resource, PropertyStore properties, BeanFactory beanFactory, Method method, RestContext context) throws Exception {
+	protected HeaderList createDefaultResponseHeaders(Object resource, ContextProperties properties, BeanFactory beanFactory, Method method, RestContext context) throws Exception {
 
 		HeaderList x = HeaderList.create();
 
@@ -1467,7 +1467,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @return The default request attributes for this method.
 	 * @throws Exception If default request headers could not be instantiated.
 	 */
-	protected NamedAttributeList createDefaultRequestAttributes(Object resource, PropertyStore properties, BeanFactory beanFactory, Method method, RestContext context) throws Exception {
+	protected NamedAttributeList createDefaultRequestAttributes(Object resource, ContextProperties properties, BeanFactory beanFactory, Method method, RestContext context) throws Exception {
 		NamedAttributeList x = NamedAttributeList.create();
 
 		x.appendUnique(context.defaultRequestAttributes);
@@ -1495,7 +1495,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @return The default request query parameters for this method.
 	 * @throws Exception If default request query parameters could not be instantiated.
 	 */
-	protected NameValuePairList createDefaultRequestQuery(Object resource, PropertyStore properties, BeanFactory beanFactory, Method method) throws Exception {
+	protected NameValuePairList createDefaultRequestQuery(Object resource, ContextProperties properties, BeanFactory beanFactory, Method method) throws Exception {
 
 		NameValuePairList x = NameValuePairList.create();
 
@@ -1539,7 +1539,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 	 * @return The default request form-data parameters for this method.
 	 * @throws Exception If default request form-data parameters could not be instantiated.
 	 */
-	protected NameValuePairList createDefaultRequestFormData(Object resource, PropertyStore properties, BeanFactory beanFactory, Method method) throws Exception {
+	protected NameValuePairList createDefaultRequestFormData(Object resource, ContextProperties properties, BeanFactory beanFactory, Method method) throws Exception {
 
 		NameValuePairList x = NameValuePairList.create();
 
@@ -1582,7 +1582,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 			ResponseHeader a = c.getAnnotation(ResponseHeader.class);
 			if (a != null) {
 				HttpPartSchema schema = HttpPartSchema.create(a);
-				HttpPartSerializer serializer = createPartSerializer(schema.getSerializer(), serializers.getPropertyStore(), partSerializer);
+				HttpPartSerializer serializer = createPartSerializer(schema.getSerializer(), serializers.getContextProperties(), partSerializer);
 				pm = new ResponsePartMeta(HEADER, schema, serializer);
 			}
 			if (pm == null)
@@ -1603,7 +1603,7 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 			ResponseBody a = c.getAnnotation(ResponseBody.class);
 			if (a != null) {
 				HttpPartSchema schema = HttpPartSchema.create(a);
-				HttpPartSerializer serializer = createPartSerializer(schema.getSerializer(), serializers.getPropertyStore(), partSerializer);
+				HttpPartSerializer serializer = createPartSerializer(schema.getSerializer(), serializers.getContextProperties(), partSerializer);
 				pm = new ResponsePartMeta(BODY, schema, serializer);
 			}
 			if (pm == null)
@@ -1933,8 +1933,8 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 		return Optional.of(supportedContentTypes);
 	}
 
-	Optional<PropertyStore> propertyStore() {
-		return Optional.of(getPropertyStore());
+	Optional<ContextProperties> contextProperties() {
+		return Optional.of(getContextProperties());
 	}
 
 	Optional<String> defaultCharset() {
@@ -1974,8 +1974,8 @@ public class RestOperationContext extends BeanContext implements Comparable<Rest
 		return out;
 	}
 
-	static HttpPartSerializer createPartSerializer(Class<? extends HttpPartSerializer> c, PropertyStore ps, HttpPartSerializer _default) {
-		HttpPartSerializer hps = castOrCreate(HttpPartSerializer.class, c, true, ps);
+	static HttpPartSerializer createPartSerializer(Class<? extends HttpPartSerializer> c, ContextProperties cp, HttpPartSerializer _default) {
+		HttpPartSerializer hps = castOrCreate(HttpPartSerializer.class, c, true, cp);
 		return hps == null ? _default : hps;
 	}
 
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
index c368aa2..841c8db 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
@@ -45,11 +45,11 @@ public class RestOperationContextBuilder extends BeanContextBuilder {
 	@Override /* BeanContextBuilder */
 	public RestOperationContext build() {
 		try {
-			PropertyStore ps = getPropertyStore();
+			ContextProperties cp = getContextProperties();
 
 			Class<? extends RestOperationContext> ic = implClass;
 			if (ic == null)
-				ic = ps.getClass(RESTOP_contextClass, RestOperationContext.class).orElse(getDefaultImplClass());
+				ic = cp.getClass(RESTOP_contextClass, RestOperationContext.class).orElse(getDefaultImplClass());
 
 			return BeanFactory.of(beanFactory).addBean(RestOperationContextBuilder.class, this).createBean(ic);
 		} catch (Exception e) {
@@ -585,7 +585,7 @@ public class RestOperationContextBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - ContextBuilder */
-	public RestOperationContextBuilder apply(PropertyStore copyFrom) {
+	public RestOperationContextBuilder apply(ContextProperties copyFrom) {
 		super.apply(copyFrom);
 		return this;
 	}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index 07a47ca..c4d016c 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -324,7 +324,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 	}
 
 	/**
-	 * Returns the {@link PropertyStore} for this request.
+	 * Returns the {@link ContextProperties} for this request.
 	 *
 	 * <p>
 	 * Consists of a read-only roll-up of all configuration properties defined on this method and class.
@@ -333,8 +333,8 @@ public final class RestRequest extends HttpServletRequestWrapper {
 	 * 	The property store for this request.
 	 * 	<br>Never <jk>null</jk>.
 	 */
-	public PropertyStore getPropertyStore() {
-		return opContext.flatMap(RestOperationContext::propertyStore).orElse(PropertyStore.DEFAULT);
+	public ContextProperties getContextProperties() {
+		return opContext.flatMap(RestOperationContext::contextProperties).orElse(ContextProperties.DEFAULT);
 	}
 
 	/**
@@ -1321,7 +1321,7 @@ public final class RestRequest extends HttpServletRequestWrapper {
 	 * @return A new request bean proxy for this REST request.
 	 */
 	public <T> T getRequest(Class<T> c) {
-		return getRequest(RequestBeanMeta.create(c, getContext().getPropertyStore()));
+		return getRequest(RequestBeanMeta.create(c, getContext().getContextProperties()));
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
index ff89436..dca4223 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
@@ -1025,7 +1025,7 @@ public class RestAnnotation {
 	}
 
 	/**
-	 * Applies {@link Rest} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link Rest} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<Rest> {
 
@@ -1040,55 +1040,55 @@ public class RestAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<Rest> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<Rest> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			Rest a = ai.getAnnotation();
 			ClassInfo c = ai.getClassOn();
 
-			psb.set(REST_serializers, merge(ConverterUtils.toType(psb.peek(REST_serializers), Object[].class), a.serializers()));
-			psb.set(REST_parsers, merge(ConverterUtils.toType(psb.peek(REST_parsers), Object[].class), a.parsers()));
-			psb.setIf(a.partSerializer() != HttpPartSerializer.Null.class, REST_partSerializer, a.partSerializer());
-			psb.setIf(a.partParser() != HttpPartParser.Null.class, REST_partParser, a.partParser());
-			psb.prependTo(REST_encoders, a.encoders());
-			psb.setIfNotEmpty(REST_produces, stringList(a.produces()));
-			psb.setIfNotEmpty(REST_consumes, stringList(a.consumes()));
-			stringStream(a.defaultRequestAttributes()).map(x -> BasicNamedAttribute.ofPair(x)).forEach(x -> psb.appendTo(REST_defaultRequestAttributes, x));
-			stringStream(a.defaultRequestHeaders()).map(x -> BasicHeader.ofPair(x)).forEach(x -> psb.appendTo(REST_defaultRequestHeaders, x));
-			stringStream(a.defaultResponseHeaders()).map(x -> BasicHeader.ofPair(x)).forEach(x -> psb.appendTo(REST_defaultResponseHeaders, x));
-			psb.appendToIfNotEmpty(REST_defaultRequestHeaders, Accept.of(string(a.defaultAccept())));
-			psb.appendToIfNotEmpty(REST_defaultRequestHeaders, ContentType.of(string(a.defaultContentType())));
-			psb.prependTo(REST_responseHandlers, a.responseHandlers());
-			psb.prependTo(REST_converters, a.converters());
-			psb.prependTo(REST_guards, reverse(a.guards()));
-			psb.prependTo(REST_children, a.children());
-			psb.prependTo(REST_restOperationParams, a.restOperationParams());
-			psb.setIf(a.contextClass() != RestContext.Null.class, REST_contextClass, a.contextClass());
-			psb.setIfNotEmpty(REST_uriContext, string(a.uriContext()));
-			psb.setIfNotEmpty(REST_uriAuthority, string(a.uriAuthority()));
-			psb.setIfNotEmpty(REST_uriRelativity, string(a.uriRelativity()));
-			psb.setIfNotEmpty(REST_uriResolution, string(a.uriResolution()));
-			psb.prependTo(REST_messages, Tuple2.of(c.inner(), string(a.messages())));
-			psb.setIf(a.fileFinder() != FileFinder.Null.class, REST_fileFinder, a.fileFinder());
-			psb.setIf(a.staticFiles() != StaticFiles.Null.class, REST_staticFiles, a.staticFiles());
-			psb.setIfNotEmpty(REST_path, trimLeadingSlash(string(a.path())));
-			psb.setIfNotEmpty(REST_clientVersionHeader, string(a.clientVersionHeader()));
-			psb.setIf(a.beanFactory() != BeanFactory.Null.class, REST_beanFactory, a.beanFactory());
-			psb.setIf(a.callLogger() != RestLogger.Null.class, REST_callLogger, a.callLogger());
-			psb.setIf(a.swaggerProvider() != SwaggerProvider.Null.class, REST_swaggerProvider, a.swaggerProvider());
-			psb.setIf(a.restOperationContextClass() != RestOperationContext.Null.class, REST_restOperationContextClass, a.restOperationContextClass());
-			psb.setIf(a.restChildrenClass() != RestChildren.Null.class, REST_restChildrenClass, a.restChildrenClass());
-			psb.setIf(a.restOperationsClass() != RestOperations.Null.class, REST_restOperationsClass, a.restOperationsClass());
-			psb.setIf(a.debugEnablement() != DebugEnablement.Null.class, REST_debugEnablement, a.debugEnablement());
-			psb.setIfNotEmpty(REST_disableAllowBodyParam, bool(a.disableAllowBodyParam()));
-			psb.setIfNotEmpty(REST_allowedHeaderParams, string(a.allowedHeaderParams()));
-			psb.setIfNotEmpty(REST_allowedMethodHeaders, string(a.allowedMethodHeaders()));
-			psb.setIfNotEmpty(REST_allowedMethodParams, string(a.allowedMethodParams()));
-			psb.setIfNotEmpty(REST_renderResponseStackTraces, bool(a.renderResponseStackTraces()));
-			psb.setIfNotEmpty(REST_defaultCharset, string(a.defaultCharset()));
-			psb.setIfNotEmpty(REST_maxInput, string(a.maxInput()));
-			psb.setIfNotEmpty(REST_debug, string(a.debug()));
-			psb.setIfNotEmpty(REST_debugOn, string(a.debugOn()));
-			cdStream(a.rolesDeclared()).forEach(x -> psb.addTo(REST_rolesDeclared, x));
-			psb.addToIfNotEmpty(REST_roleGuard, string(a.roleGuard()));
+			cpb.set(REST_serializers, merge(ConverterUtils.toType(cpb.peek(REST_serializers), Object[].class), a.serializers()));
+			cpb.set(REST_parsers, merge(ConverterUtils.toType(cpb.peek(REST_parsers), Object[].class), a.parsers()));
+			cpb.setIf(a.partSerializer() != HttpPartSerializer.Null.class, REST_partSerializer, a.partSerializer());
+			cpb.setIf(a.partParser() != HttpPartParser.Null.class, REST_partParser, a.partParser());
+			cpb.prependTo(REST_encoders, a.encoders());
+			cpb.setIfNotEmpty(REST_produces, stringList(a.produces()));
+			cpb.setIfNotEmpty(REST_consumes, stringList(a.consumes()));
+			stringStream(a.defaultRequestAttributes()).map(x -> BasicNamedAttribute.ofPair(x)).forEach(x -> cpb.appendTo(REST_defaultRequestAttributes, x));
+			stringStream(a.defaultRequestHeaders()).map(x -> BasicHeader.ofPair(x)).forEach(x -> cpb.appendTo(REST_defaultRequestHeaders, x));
+			stringStream(a.defaultResponseHeaders()).map(x -> BasicHeader.ofPair(x)).forEach(x -> cpb.appendTo(REST_defaultResponseHeaders, x));
+			cpb.appendToIfNotEmpty(REST_defaultRequestHeaders, Accept.of(string(a.defaultAccept())));
+			cpb.appendToIfNotEmpty(REST_defaultRequestHeaders, ContentType.of(string(a.defaultContentType())));
+			cpb.prependTo(REST_responseHandlers, a.responseHandlers());
+			cpb.prependTo(REST_converters, a.converters());
+			cpb.prependTo(REST_guards, reverse(a.guards()));
+			cpb.prependTo(REST_children, a.children());
+			cpb.prependTo(REST_restOperationParams, a.restOperationParams());
+			cpb.setIf(a.contextClass() != RestContext.Null.class, REST_contextClass, a.contextClass());
+			cpb.setIfNotEmpty(REST_uriContext, string(a.uriContext()));
+			cpb.setIfNotEmpty(REST_uriAuthority, string(a.uriAuthority()));
+			cpb.setIfNotEmpty(REST_uriRelativity, string(a.uriRelativity()));
+			cpb.setIfNotEmpty(REST_uriResolution, string(a.uriResolution()));
+			cpb.prependTo(REST_messages, Tuple2.of(c.inner(), string(a.messages())));
+			cpb.setIf(a.fileFinder() != FileFinder.Null.class, REST_fileFinder, a.fileFinder());
+			cpb.setIf(a.staticFiles() != StaticFiles.Null.class, REST_staticFiles, a.staticFiles());
+			cpb.setIfNotEmpty(REST_path, trimLeadingSlash(string(a.path())));
+			cpb.setIfNotEmpty(REST_clientVersionHeader, string(a.clientVersionHeader()));
+			cpb.setIf(a.beanFactory() != BeanFactory.Null.class, REST_beanFactory, a.beanFactory());
+			cpb.setIf(a.callLogger() != RestLogger.Null.class, REST_callLogger, a.callLogger());
+			cpb.setIf(a.swaggerProvider() != SwaggerProvider.Null.class, REST_swaggerProvider, a.swaggerProvider());
+			cpb.setIf(a.restOperationContextClass() != RestOperationContext.Null.class, REST_restOperationContextClass, a.restOperationContextClass());
+			cpb.setIf(a.restChildrenClass() != RestChildren.Null.class, REST_restChildrenClass, a.restChildrenClass());
+			cpb.setIf(a.restOperationsClass() != RestOperations.Null.class, REST_restOperationsClass, a.restOperationsClass());
+			cpb.setIf(a.debugEnablement() != DebugEnablement.Null.class, REST_debugEnablement, a.debugEnablement());
+			cpb.setIfNotEmpty(REST_disableAllowBodyParam, bool(a.disableAllowBodyParam()));
+			cpb.setIfNotEmpty(REST_allowedHeaderParams, string(a.allowedHeaderParams()));
+			cpb.setIfNotEmpty(REST_allowedMethodHeaders, string(a.allowedMethodHeaders()));
+			cpb.setIfNotEmpty(REST_allowedMethodParams, string(a.allowedMethodParams()));
+			cpb.setIfNotEmpty(REST_renderResponseStackTraces, bool(a.renderResponseStackTraces()));
+			cpb.setIfNotEmpty(REST_defaultCharset, string(a.defaultCharset()));
+			cpb.setIfNotEmpty(REST_maxInput, string(a.maxInput()));
+			cpb.setIfNotEmpty(REST_debug, string(a.debug()));
+			cpb.setIfNotEmpty(REST_debugOn, string(a.debugOn()));
+			cdStream(a.rolesDeclared()).forEach(x -> cpb.addTo(REST_rolesDeclared, x));
+			cpb.addToIfNotEmpty(REST_roleGuard, string(a.roleGuard()));
 		}
 
 		private String trimLeadingSlash(String value) {
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
index 340fe74..031991f 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
@@ -613,7 +613,7 @@ public class RestOpAnnotation {
 	}
 
 	/**
-	 * Applies {@link RestOp} annotations to a {@link PropertyStoreBuilder}.
+	 * Applies {@link RestOp} annotations to a {@link ContextPropertiesBuilder}.
 	 */
 	public static class Apply extends ConfigApply<RestOp> {
 
@@ -628,43 +628,43 @@ public class RestOpAnnotation {
 		}
 
 		@Override
-		public void apply(AnnotationInfo<RestOp> ai, PropertyStoreBuilder psb, VarResolverSession vr) {
+		public void apply(AnnotationInfo<RestOp> ai, ContextPropertiesBuilder cpb, VarResolverSession vr) {
 			RestOp a = ai.getAnnotation();
 
-			psb.set(REST_serializers, merge(ConverterUtils.toType(psb.peek(REST_serializers), Object[].class), a.serializers()));
-			psb.set(REST_parsers, merge(ConverterUtils.toType(psb.peek(REST_parsers), Object[].class), a.parsers()));
-			psb.set(REST_encoders, merge(ConverterUtils.toType(psb.peek(REST_encoders), Object[].class), a.encoders()));
-			psb.setIf(a.contextClass() != RestOperationContext.Null.class, RESTOP_contextClass, a.contextClass());
-			psb.setIfNotEmpty(REST_produces, stringList(a.produces()));
-			psb.setIfNotEmpty(REST_consumes, stringList(a.consumes()));
-			stringStream(a.defaultRequestHeaders()).map(x -> BasicHeader.ofPair(x)).forEach(x -> psb.appendTo(RESTOP_defaultRequestHeaders, x));
-			stringStream(a.defaultResponseHeaders()).map(x -> BasicHeader.ofPair(x)).forEach(x -> psb.appendTo(RESTOP_defaultResponseHeaders, x));
-			stringStream(a.defaultRequestAttributes()).map(x -> BasicNamedAttribute.ofPair(x)).forEach(x -> psb.appendTo(RESTOP_defaultRequestAttributes, x));
-			stringStream(a.defaultQuery()).map(x -> BasicNameValuePair.ofPair(x)).forEach(x -> psb.appendTo(RESTOP_defaultQuery, x));
-			stringStream(a.defaultFormData()).map(x -> BasicNameValuePair.ofPair(x)).forEach(x -> psb.appendTo(RESTOP_defaultFormData, x));
-			psb.appendToIfNotEmpty(REST_defaultRequestHeaders, Accept.of(string(a.defaultAccept())));
-			psb.appendToIfNotEmpty(REST_defaultRequestHeaders, ContentType.of(string(a.defaultContentType())));
-			psb.prependTo(REST_converters, a.converters());
-			psb.prependTo(REST_guards, reverse(a.guards()));
-			psb.prependTo(RESTOP_matchers, a.matchers());
-			psb.setIfNotEmpty(RESTOP_clientVersion, a.clientVersion());
-			psb.setIfNotEmpty(REST_defaultCharset, string(a.defaultCharset()));
-			psb.setIfNotEmpty(REST_maxInput, string(a.maxInput()));
-			stringStream(a.path()).forEach(x -> psb.prependTo(RESTOP_path, x));
-			cdStream(a.rolesDeclared()).forEach(x -> psb.addTo(REST_rolesDeclared, x));
-			psb.addToIfNotEmpty(REST_roleGuard, string(a.roleGuard()));
-			psb.setIfNotEmpty(RESTOP_httpMethod, string(a.method()));
-			psb.setIf(a.priority() != 0, RESTOP_priority, a.priority());
-			psb.setIfNotEmpty(RESTOP_debug, string(a.debug()));
+			cpb.set(REST_serializers, merge(ConverterUtils.toType(cpb.peek(REST_serializers), Object[].class), a.serializers()));
+			cpb.set(REST_parsers, merge(ConverterUtils.toType(cpb.peek(REST_parsers), Object[].class), a.parsers()));
+			cpb.set(REST_encoders, merge(ConverterUtils.toType(cpb.peek(REST_encoders), Object[].class), a.encoders()));
+			cpb.setIf(a.contextClass() != RestOperationContext.Null.class, RESTOP_contextClass, a.contextClass());
+			cpb.setIfNotEmpty(REST_produces, stringList(a.produces()));
+			cpb.setIfNotEmpty(REST_consumes, stringList(a.consumes()));
+			stringStream(a.defaultRequestHeaders()).map(x -> BasicHeader.ofPair(x)).forEach(x -> cpb.appendTo(RESTOP_defaultRequestHeaders, x));
+			stringStream(a.defaultResponseHeaders()).map(x -> BasicHeader.ofPair(x)).forEach(x -> cpb.appendTo(RESTOP_defaultResponseHeaders, x));
+			stringStream(a.defaultRequestAttributes()).map(x -> BasicNamedAttribute.ofPair(x)).forEach(x -> cpb.appendTo(RESTOP_defaultRequestAttributes, x));
+			stringStream(a.defaultQuery()).map(x -> BasicNameValuePair.ofPair(x)).forEach(x -> cpb.appendTo(RESTOP_defaultQuery, x));
+			stringStream(a.defaultFormData()).map(x -> BasicNameValuePair.ofPair(x)).forEach(x -> cpb.appendTo(RESTOP_defaultFormData, x));
+			cpb.appendToIfNotEmpty(REST_defaultRequestHeaders, Accept.of(string(a.defaultAccept())));
+			cpb.appendToIfNotEmpty(REST_defaultRequestHeaders, ContentType.of(string(a.defaultContentType())));
+			cpb.prependTo(REST_converters, a.converters());
+			cpb.prependTo(REST_guards, reverse(a.guards()));
+			cpb.prependTo(RESTOP_matchers, a.matchers());
+			cpb.setIfNotEmpty(RESTOP_clientVersion, a.clientVersion());
+			cpb.setIfNotEmpty(REST_defaultCharset, string(a.defaultCharset()));
+			cpb.setIfNotEmpty(REST_maxInput, string(a.maxInput()));
+			stringStream(a.path()).forEach(x -> cpb.prependTo(RESTOP_path, x));
+			cdStream(a.rolesDeclared()).forEach(x -> cpb.addTo(REST_rolesDeclared, x));
+			cpb.addToIfNotEmpty(REST_roleGuard, string(a.roleGuard()));
+			cpb.setIfNotEmpty(RESTOP_httpMethod, string(a.method()));
+			cpb.setIf(a.priority() != 0, RESTOP_priority, a.priority());
+			cpb.setIfNotEmpty(RESTOP_debug, string(a.debug()));
 
 			String v = StringUtils.trim(string(a.value()));
 			if (v != null) {
 				int i = v.indexOf(' ');
 				if (i == -1) {
-					psb.set(RESTOP_httpMethod, v);
+					cpb.set(RESTOP_httpMethod, v);
 				} else {
-					psb.set(RESTOP_httpMethod, v.substring(0, i).trim());
-					psb.prependTo(RESTOP_path,  v.substring(i).trim());
+					cpb.set(RESTOP_httpMethod, v.substring(0, i).trim());
+					cpb.prependTo(RESTOP_path,  v.substring(i).trim());
 				}
 			}
 		}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/FormDataParam.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/FormDataParam.java
index 31eb892..8569aba 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/FormDataParam.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/FormDataParam.java
@@ -46,12 +46,12 @@ public class FormDataParam implements RestOperationParam {
 	 * Static creator.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 * @return A new {@link FormDataParam}, or <jk>null</jk> if the parameter is not annotated with {@link FormData}.
 	 */
-	public static FormDataParam create(ParamInfo paramInfo, PropertyStore ps) {
+	public static FormDataParam create(ParamInfo paramInfo, ContextProperties cp) {
 		if (paramInfo.hasAnnotation(FormData.class) || paramInfo.getParameterType().hasAnnotation(FormData.class))
-			return new FormDataParam(paramInfo, ps);
+			return new FormDataParam(paramInfo, cp);
 		return null;
 	}
 
@@ -59,13 +59,13 @@ public class FormDataParam implements RestOperationParam {
 	 * Constructor.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 */
-	protected FormDataParam(ParamInfo paramInfo, PropertyStore ps) {
+	protected FormDataParam(ParamInfo paramInfo, ContextProperties cp) {
 		this.name = getName(paramInfo);
 		this.type = paramInfo.getParameterType();
 		this.schema = HttpPartSchema.create(FormData.class, paramInfo);
-		this.partParser = castOrCreate(HttpPartParser.class, schema.getParser(), true, ps);
+		this.partParser = castOrCreate(HttpPartParser.class, schema.getParser(), true, cp);
 		this.multi = getMulti(paramInfo) || schema.getCollectionFormat() == HttpPartCollectionFormat.MULTI;
 
 		if (multi && ! type.isCollectionOrArray())
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/HeaderParam.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/HeaderParam.java
index 7815c22..1fa1070 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/HeaderParam.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/HeaderParam.java
@@ -46,12 +46,12 @@ public class HeaderParam implements RestOperationParam {
 	 * Static creator.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 * @return A new {@link HeaderParam}, or <jk>null</jk> if the parameter is not annotated with {@link Header}.
 	 */
-	public static HeaderParam create(ParamInfo paramInfo, PropertyStore ps) {
+	public static HeaderParam create(ParamInfo paramInfo, ContextProperties cp) {
 		if (paramInfo.hasAnnotation(Header.class) || paramInfo.getParameterType().hasAnnotation(Header.class))
-			return new HeaderParam(paramInfo, ps);
+			return new HeaderParam(paramInfo, cp);
 		return null;
 	}
 
@@ -59,13 +59,13 @@ public class HeaderParam implements RestOperationParam {
 	 * Constructor.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 */
-	protected HeaderParam(ParamInfo paramInfo, PropertyStore ps) {
+	protected HeaderParam(ParamInfo paramInfo, ContextProperties cp) {
 		this.name = getName(paramInfo);
 		this.type = paramInfo.getParameterType();
 		this.schema = HttpPartSchema.create(Header.class, paramInfo);
-		this.partParser = castOrCreate(HttpPartParser.class, schema.getParser(), true, ps);
+		this.partParser = castOrCreate(HttpPartParser.class, schema.getParser(), true, cp);
 		this.multi = getMulti(paramInfo);
 
 		if (multi && ! type.isCollectionOrArray())
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/PathParam.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/PathParam.java
index 6e27d0b..ccf2a60 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/PathParam.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/PathParam.java
@@ -43,13 +43,13 @@ public class PathParam implements RestOperationParam {
 	 * Static creator.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 * @param pathMatcher Path matcher for the specified method.
 	 * @return A new {@link PathParam}, or <jk>null</jk> if the parameter is not annotated with {@link Path}.
 	 */
-	public static PathParam create(ParamInfo paramInfo, PropertyStore ps, UrlPathMatcher pathMatcher) {
+	public static PathParam create(ParamInfo paramInfo, ContextProperties cp, UrlPathMatcher pathMatcher) {
 		if (paramInfo.hasAnnotation(Path.class) || paramInfo.getParameterType().hasAnnotation(Path.class))
-			return new PathParam(paramInfo, ps, pathMatcher);
+			return new PathParam(paramInfo, cp, pathMatcher);
 		return null;
 	}
 
@@ -57,14 +57,14 @@ public class PathParam implements RestOperationParam {
 	 * Constructor.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 * @param pathMatcher Path matcher for the specified method.
 	 */
-	protected PathParam(ParamInfo paramInfo, PropertyStore ps, UrlPathMatcher pathMatcher) {
+	protected PathParam(ParamInfo paramInfo, ContextProperties cp, UrlPathMatcher pathMatcher) {
 		this.name = getName(paramInfo, pathMatcher);
 		this.type = paramInfo.getParameterType().innerType();
 		this.schema = HttpPartSchema.create(Path.class, paramInfo);
-		this.partParser = castOrCreate(HttpPartParser.class, schema.getParser(), true, ps);
+		this.partParser = castOrCreate(HttpPartParser.class, schema.getParser(), true, cp);
 	}
 
 	private String getName(ParamInfo paramInfo, UrlPathMatcher pathMatcher) {
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/QueryParam.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/QueryParam.java
index e6612e2..af7d26a 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/QueryParam.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/QueryParam.java
@@ -42,12 +42,12 @@ public class QueryParam implements RestOperationParam {
 	 * Static creator.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 * @return A new {@link QueryParam}, or <jk>null</jk> if the parameter is not annotated with {@link Query}.
 	 */
-	public static QueryParam create(ParamInfo paramInfo, PropertyStore ps) {
+	public static QueryParam create(ParamInfo paramInfo, ContextProperties cp) {
 		if (paramInfo.hasAnnotation(Query.class) || paramInfo.getParameterType().hasAnnotation(Query.class))
-			return new QueryParam(paramInfo, ps);
+			return new QueryParam(paramInfo, cp);
 		return null;
 	}
 
@@ -55,13 +55,13 @@ public class QueryParam implements RestOperationParam {
 	 * Constructor.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 */
-	protected QueryParam(ParamInfo paramInfo, PropertyStore ps) {
+	protected QueryParam(ParamInfo paramInfo, ContextProperties cp) {
 		this.name = getName(paramInfo);
 		this.type = paramInfo.getParameterType();
 		this.schema = HttpPartSchema.create(Query.class, paramInfo);
-		this.partParser = castOrCreate(HttpPartParser.class, schema.getParser(), true, ps);
+		this.partParser = castOrCreate(HttpPartParser.class, schema.getParser(), true, cp);
 		this.multi = getMulti(paramInfo) || schema.getCollectionFormat() == HttpPartCollectionFormat.MULTI;
 
 		if (multi && ! type.isCollectionOrArray())
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/RequestBeanParam.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/RequestBeanParam.java
index 396ec90..98ea6eb 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/RequestBeanParam.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/RequestBeanParam.java
@@ -33,12 +33,12 @@ public class RequestBeanParam implements RestOperationParam {
 	 * Static creator.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 * @return A new {@link RequestBeanParam}, or <jk>null</jk> if the parameter is not annotated with {@link Request}.
 	 */
-	public static RequestBeanParam create(ParamInfo paramInfo, PropertyStore ps) {
+	public static RequestBeanParam create(ParamInfo paramInfo, ContextProperties cp) {
 		if (paramInfo.hasAnnotation(Request.class))
-			return new RequestBeanParam(paramInfo, ps);
+			return new RequestBeanParam(paramInfo, cp);
 		return null;
 	}
 
@@ -46,10 +46,10 @@ public class RequestBeanParam implements RestOperationParam {
 	 * Constructor.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 */
-	protected RequestBeanParam(ParamInfo paramInfo, PropertyStore ps) {
-		this.meta = RequestBeanMeta.create(paramInfo, ps);
+	protected RequestBeanParam(ParamInfo paramInfo, ContextProperties cp) {
+		this.meta = RequestBeanMeta.create(paramInfo, cp);
 	}
 
 	@Override /* RestOperationParam */
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
index ecf4a07..036de33 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseBeanParam.java
@@ -36,12 +36,12 @@ public class ResponseBeanParam implements RestOperationParam {
 	 * Static creator.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 * @return A new {@link ResponseBeanParam}, or <jk>null</jk> if the parameter is not annotated with {@link Response}.
 	 */
-	public static ResponseBeanParam create(ParamInfo paramInfo, PropertyStore ps) {
+	public static ResponseBeanParam create(ParamInfo paramInfo, ContextProperties cp) {
 		if (paramInfo.hasAnnotation(Response.class) || paramInfo.getParameterType().hasAnnotation(Response.class))
-			return new ResponseBeanParam(paramInfo, ps);
+			return new ResponseBeanParam(paramInfo, cp);
 		return null;
 	}
 
@@ -49,11 +49,11 @@ public class ResponseBeanParam implements RestOperationParam {
 	 * Constructor.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 */
-	protected ResponseBeanParam(ParamInfo paramInfo, PropertyStore ps) {
+	protected ResponseBeanParam(ParamInfo paramInfo, ContextProperties cp) {
 		this.type = paramInfo.getParameterType().innerType();
-		this.meta = ResponseBeanMeta.create(paramInfo, ps);
+		this.meta = ResponseBeanMeta.create(paramInfo, cp);
 		Class<?> c = type instanceof Class ? (Class<?>)type : type instanceof ParameterizedType ? (Class<?>)((ParameterizedType)type).getRawType() : null;
 		if (c != Value.class)
 			throw new ParameterException(paramInfo, "Type must be Value<?> on parameter annotated with @Response annotation");
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
index 9018ab4..3f0eb7b 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/params/ResponseHeaderParam.java
@@ -41,12 +41,12 @@ public class ResponseHeaderParam implements RestOperationParam {
 	 * Static creator.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 * @return A new {@link ResponseHeaderParam}, or <jk>null</jk> if the parameter is not annotated with {@link ResponseHeader}.
 	 */
-	public static ResponseHeaderParam create(ParamInfo paramInfo, PropertyStore ps) {
+	public static ResponseHeaderParam create(ParamInfo paramInfo, ContextProperties cp) {
 		if (paramInfo.hasAnnotation(ResponseHeader.class) || paramInfo.getParameterType().hasAnnotation(ResponseHeader.class))
-			return new ResponseHeaderParam(paramInfo, ps);
+			return new ResponseHeaderParam(paramInfo, cp);
 		return null;
 	}
 
@@ -54,13 +54,13 @@ public class ResponseHeaderParam implements RestOperationParam {
 	 * Constructor.
 	 *
 	 * @param paramInfo The Java method parameter being resolved.
-	 * @param ps The configuration properties of the {@link RestContext}.
+	 * @param cp The configuration properties of the {@link RestContext}.
 	 */
-	protected ResponseHeaderParam(ParamInfo paramInfo, PropertyStore ps) {
+	protected ResponseHeaderParam(ParamInfo paramInfo, ContextProperties cp) {
 		this.name = getName(paramInfo);
 		this.type = paramInfo.getParameterType().innerType();
 		HttpPartSchema schema = HttpPartSchema.create(ResponseHeader.class, paramInfo);
-		this.meta = new ResponsePartMeta(HttpPartType.HEADER, schema, castOrCreate(HttpPartSerializer.class, schema.getSerializer(), true, ps));
+		this.meta = new ResponsePartMeta(HttpPartType.HEADER, schema, castOrCreate(HttpPartSerializer.class, schema.getSerializer(), true, cp));
 
 		Class<?> c = type instanceof Class ? (Class<?>)type : type instanceof ParameterizedType ? (Class<?>)((ParameterizedType)type).getRawType() : null;
 		if (c != Value.class)
diff --git a/juneau-utest/src/test/java/org/apache/juneau/ContextCacheTest.java b/juneau-utest/src/test/java/org/apache/juneau/ContextCacheTest.java
index c93b269..57e0d0c 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/ContextCacheTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/ContextCacheTest.java
@@ -33,31 +33,31 @@ public class ContextCacheTest {
 	@Test
 	public void testBasic() {
 
-		PropertyStoreBuilder psb = PropertyStore.create();
-		PropertyStore ps = psb.build();
+		ContextPropertiesBuilder cpb = ContextProperties.create();
+		ContextProperties cp = cpb.build();
 
-		A a = ContextCache.INSTANCE.create(A.class, ps);
-		B b = ContextCache.INSTANCE.create(B.class, ps);
-		C c = ContextCache.INSTANCE.create(C.class, ps);
+		A a = ContextCache.INSTANCE.create(A.class, cp);
+		B b = ContextCache.INSTANCE.create(B.class, cp);
+		C c = ContextCache.INSTANCE.create(C.class, cp);
 
 		assertObject(a).asJson().is("{f1:'xxx'}");
 		assertObject(b).asJson().is("{f1:'xxx',f2:-1}");
 		assertObject(c).asJson().is("{f1:'xxx',f2:-1,f3:false}");
 
-		A a2 = ContextCache.INSTANCE.create(A.class, ps);
-		B b2 = ContextCache.INSTANCE.create(B.class, ps);
-		C c2 = ContextCache.INSTANCE.create(C.class, ps);
+		A a2 = ContextCache.INSTANCE.create(A.class, cp);
+		B b2 = ContextCache.INSTANCE.create(B.class, cp);
+		C c2 = ContextCache.INSTANCE.create(C.class, cp);
 
 		assertTrue(a == a2);
 		assertTrue(b == b2);
 		assertTrue(c == c2);
 
-		psb.set("A.f1", "foo");
-		ps = psb.build();
+		cpb.set("A.f1", "foo");
+		cp = cpb.build();
 
-		a2 = ContextCache.INSTANCE.create(A.class, ps);
-		b2 = ContextCache.INSTANCE.create(B.class, ps);
-		c2 = ContextCache.INSTANCE.create(C.class, ps);
+		a2 = ContextCache.INSTANCE.create(A.class, cp);
+		b2 = ContextCache.INSTANCE.create(B.class, cp);
+		c2 = ContextCache.INSTANCE.create(C.class, cp);
 
 		assertObject(a2).asJson().is("{f1:'foo'}");
 		assertObject(b2).asJson().is("{f1:'foo',f2:-1}");
@@ -69,11 +69,11 @@ public class ContextCacheTest {
 
 		a = a2; b = b2; c = c2;
 
-		ps = psb.set("B.f2.i", 123).build();
+		cp = cpb.set("B.f2.i", 123).build();
 
-		a2 = ContextCache.INSTANCE.create(A.class, ps);
-		b2 = ContextCache.INSTANCE.create(B.class, ps);
-		c2 = ContextCache.INSTANCE.create(C.class, ps);
+		a2 = ContextCache.INSTANCE.create(A.class, cp);
+		b2 = ContextCache.INSTANCE.create(B.class, cp);
+		c2 = ContextCache.INSTANCE.create(C.class, cp);
 
 		assertObject(a2).asJson().is("{f1:'foo'}");
 		assertObject(b2).asJson().is("{f1:'foo',f2:123}");
@@ -85,11 +85,11 @@ public class ContextCacheTest {
 
 		a = a2; b = b2; c = c2;
 
-		ps = psb.set("C.f3.b").build();
+		cp = cpb.set("C.f3.b").build();
 
-		a2 = ContextCache.INSTANCE.create(A.class, ps);
-		b2 = ContextCache.INSTANCE.create(B.class, ps);
-		c2 = ContextCache.INSTANCE.create(C.class, ps);
+		a2 = ContextCache.INSTANCE.create(A.class, cp);
+		b2 = ContextCache.INSTANCE.create(B.class, cp);
+		c2 = ContextCache.INSTANCE.create(C.class, cp);
 
 		assertObject(a2).asJson().is("{f1:'foo'}");
 		assertObject(b2).asJson().is("{f1:'foo',f2:123}");
@@ -101,11 +101,11 @@ public class ContextCacheTest {
 
 		a = a2; b = b2; c = c2;
 
-		ps = psb.set("D.bad.o", "xxx").build();
+		cp = cpb.set("D.bad.o", "xxx").build();
 
-		a2 = ContextCache.INSTANCE.create(A.class, ps);
-		b2 = ContextCache.INSTANCE.create(B.class, ps);
-		c2 = ContextCache.INSTANCE.create(C.class, ps);
+		a2 = ContextCache.INSTANCE.create(A.class, cp);
+		b2 = ContextCache.INSTANCE.create(B.class, cp);
+		c2 = ContextCache.INSTANCE.create(C.class, cp);
 
 		assertObject(a2).asJson().is("{f1:'foo'}");
 		assertObject(b2).asJson().is("{f1:'foo',f2:123}");
@@ -115,14 +115,14 @@ public class ContextCacheTest {
 		assertTrue(b == b2);
 		assertTrue(c == c2);
 
-		assertTrue(a.getPropertyStore() == a2.getPropertyStore());
-		assertTrue(b.getPropertyStore() == b2.getPropertyStore());
-		assertTrue(c.getPropertyStore() == c2.getPropertyStore());
+		assertTrue(a.getContextProperties() == a2.getContextProperties());
+		assertTrue(b.getContextProperties() == b2.getContextProperties());
+		assertTrue(c.getContextProperties() == c2.getContextProperties());
 
-		a2 = ContextCache.INSTANCE.create(A.class, a.getPropertyStore().builder().set("A.f1", "foo").build());
+		a2 = ContextCache.INSTANCE.create(A.class, a.getContextProperties().builder().set("A.f1", "foo").build());
 		assertTrue(a == a2);
 
-		a2 = ContextCache.INSTANCE.create(A.class, a.getPropertyStore().builder().set("A.f1", "bar").build());
+		a2 = ContextCache.INSTANCE.create(A.class, a.getContextProperties().builder().set("A.f1", "bar").build());
 		assertTrue(a != a2);
 	}
 
@@ -130,9 +130,9 @@ public class ContextCacheTest {
 	public static class A extends Context {
 		public final String f1;
 
-		public A(PropertyStore ps) {
-			super(ps, true);
-			f1 = getPropertyStore().getString("A.f1").orElse("xxx");
+		public A(ContextProperties cp) {
+			super(cp, true);
+			f1 = getContextProperties().getString("A.f1").orElse("xxx");
 		}
 
 		@Override
@@ -155,9 +155,9 @@ public class ContextCacheTest {
 	public static class B extends A {
 		public int f2;
 
-		public B(PropertyStore ps) {
-			super(ps);
-			f2 = getPropertyStore().getInteger("B.f2.i").orElse(-1);
+		public B(ContextProperties cp) {
+			super(cp);
+			f2 = getContextProperties().getInteger("B.f2.i").orElse(-1);
 
 		}
 
@@ -170,9 +170,9 @@ public class ContextCacheTest {
 	@ConfigurableContext
 	public static class C extends B {
 		public boolean f3;
-		public C(PropertyStore ps) {
-			super(ps);
-			f3 = getPropertyStore().getBoolean("C.f3.b").orElse(false);
+		public C(ContextProperties cp) {
+			super(cp);
+			f3 = getContextProperties().getBoolean("C.f3.b").orElse(false);
 		}
 
 		@Override
@@ -183,21 +183,21 @@ public class ContextCacheTest {
 
 	@Test
 	public void testBadConstructor() {
-		PropertyStoreBuilder psb = PropertyStore.create();
-		PropertyStore ps = psb.build();
-		assertThrown(()->ContextCache.INSTANCE.create(D1.class, ps)).is("Could not create instance of class 'org.apache.juneau.ContextCacheTest$D1'");
-		assertThrown(()->ContextCache.INSTANCE.create(D2.class, ps)).is("Could not create instance of class 'org.apache.juneau.ContextCacheTest$D2'");
+		ContextPropertiesBuilder cpb = ContextProperties.create();
+		ContextProperties cp = cpb.build();
+		assertThrown(()->ContextCache.INSTANCE.create(D1.class, cp)).is("Could not create instance of class 'org.apache.juneau.ContextCacheTest$D1'");
+		assertThrown(()->ContextCache.INSTANCE.create(D2.class, cp)).is("Could not create instance of class 'org.apache.juneau.ContextCacheTest$D2'");
 	}
 
 	public static class D1 extends A {
-		protected D1(PropertyStore ps) {
-			super(ps);
+		protected D1(ContextProperties cp) {
+			super(cp);
 		}
 	}
 
 	public static class D2 extends A {
-		public D2(PropertyStore ps) {
-			super(ps);
+		public D2(ContextProperties cp) {
+			super(cp);
 			throw new RuntimeException("Error!");
 		}
 	}
diff --git a/juneau-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java b/juneau-utest/src/test/java/org/apache/juneau/ContextPropertiesTest.java
similarity index 72%
rename from juneau-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java
rename to juneau-utest/src/test/java/org/apache/juneau/ContextPropertiesTest.java
index 9ab0864..447b31b 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/ContextPropertiesTest.java
@@ -26,10 +26,10 @@ import org.junit.*;
 
 
 /**
- * Test the PropertyStore class.
+ * Test the ContextProperties class.
  */
 @FixMethodOrder(NAME_ASCENDING)
-public class PropertyStoreTest {
+public class ContextPropertiesTest {
 
 	//====================================================================================================
 	// testBasic()
@@ -37,7 +37,7 @@ public class PropertyStoreTest {
 
 	@Test
 	public void testBasic() {
-		PropertyStoreBuilder b = PropertyStore.create();
+		ContextPropertiesBuilder b = ContextProperties.create();
 
 		b.set("B.f4.s", "4");
 		b.set("B.f3.s", "3");
@@ -53,7 +53,7 @@ public class PropertyStoreTest {
 
 	@Test
 	public void testInvalidKeys() {
-		PropertyStoreBuilder b = PropertyStore.create();
+		ContextPropertiesBuilder b = ContextProperties.create();
 		testError(b, "A.f1/add", "foo", "addTo() can only be used on properties of type Set on property 'A.f1'.");
 		testError(b, "A.f1/add.123", "foo", "addTo() can only be used on properties of type Set on property 'A.f1'.");
 		testError(b, "A.f1/remove", "foo", "Cannot remove value 'foo' (String) from property 'f1' (String).");
@@ -68,21 +68,21 @@ public class PropertyStoreTest {
 
 	@Test
 	public void testString() throws Exception {
-		PropertyStoreBuilder b = PropertyStore.create();
-		PropertyStore ps = null;
+		ContextPropertiesBuilder b = ContextProperties.create();
+		ContextProperties cp = null;
 		b.set("A.f1.s", "1");
 		b.set("A.f2.s", 2);
 		b.set("A.f3.s", true);
 		b.set("A.f4.s", OMap.ofJson("{foo:'bar'}"));
 		b.set("A.f5.s", OList.ofJson("[1,2]"));
 		b.set("A.f6.s", null);
-		ps = b.build();
-		assertObject(ps).asJson().is("{A:{'f1.s':'1','f2.s':'2','f3.s':'true','f4.s':'{foo:\\'bar\\'}','f5.s':'[1,2]'}}");
-		assertObject(ps.get("A.f1.s")).isType(String.class);
-		assertObject(ps.get("A.f2.s")).isType(String.class);
-		assertObject(ps.get("A.f3.s")).isType(String.class);
-		assertObject(ps.get("A.f4.s")).isType(String.class);
-		assertObject(ps.get("A.f5.s")).isType(String.class);
+		cp = b.build();
+		assertObject(cp).asJson().is("{A:{'f1.s':'1','f2.s':'2','f3.s':'true','f4.s':'{foo:\\'bar\\'}','f5.s':'[1,2]'}}");
+		assertObject(cp.get("A.f1.s")).isType(String.class);
+		assertObject(cp.get("A.f2.s")).isType(String.class);
+		assertObject(cp.get("A.f3.s")).isType(String.class);
+		assertObject(cp.get("A.f4.s")).isType(String.class);
+		assertObject(cp.get("A.f5.s")).isType(String.class);
 
 		b.clear();
 		b.set("A.f1", "1");
@@ -91,13 +91,13 @@ public class PropertyStoreTest {
 		b.set("A.f4", OMap.ofJson("{foo:'bar'}"));
 		b.set("A.f5", OList.ofJson("[1,2]"));
 		b.set("A.f6", null);
-		ps = b.build();
-		assertObject(ps).asJson().is("{A:{f1:'1',f2:'2',f3:'true',f4:'{foo:\\'bar\\'}',f5:'[1,2]'}}");
-		assertObject(ps.get("A.f1")).isType(String.class);
-		assertObject(ps.get("A.f2")).isType(String.class);
-		assertObject(ps.get("A.f3")).isType(String.class);
-		assertObject(ps.get("A.f4")).isType(String.class);
-		assertObject(ps.get("A.f5")).isType(String.class);
+		cp = b.build();
+		assertObject(cp).asJson().is("{A:{f1:'1',f2:'2',f3:'true',f4:'{foo:\\'bar\\'}',f5:'[1,2]'}}");
+		assertObject(cp.get("A.f1")).isType(String.class);
... 1994 lines suppressed ...