You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/11/17 14:02:43 UTC

[isis] branch v2 updated: ISIS-1991: major: removing the DeploymentCategory

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

ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/v2 by this push:
     new 052e46e  ISIS-1991: major: removing the DeploymentCategory
052e46e is described below

commit 052e46edd434b65cc3c398608354ac9dab5887b4
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Nov 17 15:02:36 2018 +0100

    ISIS-1991: major: removing the DeploymentCategory
    
    also rolling up RenderContext2-6
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1991
---
 .../isis/commons/internal/context/_Context.java    |  18 +++-
 .../core/plugins/environment/DeploymentType.java}  |  25 +++--
 .../plugins/environment/IsisSystemEnvironment.java |  59 +++++++++++
 .../environment/IsisSystemEnvironmentPlugin.java   |  24 +++++
 .../components/AuthenticationManagerNull.java      |   3 +-
 .../components/AuthorizationManagerAllowAll.java   |   3 +-
 .../IsisSystemEnvironmentPluginForTesting.java     |  46 +++++++++
 .../deployment/DeploymentCategoryProvider.java     |  28 -----
 .../metamodel/facets/FacetFactoryAbstract.java     |   5 -
 .../action/ActionAnnotationFacetFactory.java       |   3 +-
 ...ctionInvocationFacetForDomainEventAbstract.java |  16 +--
 .../PrototypeFacetForActionAnnotation.java         |  12 +--
 .../actions/prototype/PrototypeFacetAbstract.java  |  18 ++--
 .../CollectionAccessorFacetViaAccessor.java        |   4 +-
 .../CollectionAccessorFacetViaAccessorFactory.java |   2 +-
 .../autocomplete/AutoCompleteFacetAbstract.java    |   9 +-
 .../choices/ChoicesFacetFromBoundedAbstract.java   |   8 --
 .../DomainObjectAnnotationFacetFactory.java        |   2 +-
 .../ChoicesFacetForDomainObjectAnnotation.java     |   7 +-
 .../facets/object/value/ValueFacetAbstract.java    |   5 -
 .../ActionParameterAutoCompleteFacetAbstract.java  |   8 --
 .../ActionParameterAutoCompleteFacetViaMethod.java |   4 +-
 ...ParameterAutoCompleteFacetViaMethodFactory.java |   2 +-
 .../ActionParameterChoicesFacetAbstract.java       |   8 --
 .../choices/ActionParameterChoicesFacetNone.java   |   4 +-
 ...rameterChoicesFacetDerivedFromChoicesFacet.java |   4 +-
 ...ChoicesFacetDerivedFromChoicesFacetFactory.java |   2 +-
 .../method/ActionChoicesFacetViaMethod.java        |   8 --
 .../method/ActionChoicesFacetViaMethodFactory.java |   2 +-
 .../ActionParameterChoicesFacetViaMethod.java      |   4 +-
 ...ctionParameterChoicesFacetViaMethodFactory.java |   2 +-
 .../PropertyOrCollectionAccessorFacetAbstract.java |   8 --
 .../accessor/PropertyAccessorFacetViaAccessor.java |   4 +-
 .../PropertyAccessorFacetViaAccessorFactory.java   |   2 +-
 .../method/PropertyAutoCompleteFacetMethod.java    |   8 --
 .../PropertyAutoCompleteFacetMethodFactory.java    |   2 +-
 .../metamodel/interactions/InteractionUtils.java   |   9 +-
 ...arameterChoicesFacetFromParentedCollection.java |   4 +-
 .../param/DeriveFacetsPostProcessor.java           |  15 +--
 .../core/metamodel/services/ServicesInjector.java  |  15 +--
 .../services/grid/GridLoaderServiceDefault.java    |   7 +-
 .../services/grid/GridSystemServiceAbstract.java   |   8 +-
 .../core/metamodel/spec/feature/ObjectAction.java  |  16 +--
 .../specimpl/ObjectSpecificationAbstract.java      |  13 +--
 .../authentication/AuthenticationManager.java      |   3 +-
 .../AuthenticationRequestExploration.java          |   4 +
 .../exploration/ExplorationAuthenticator.java      |   4 +-
 .../ExplorationAuthenticatorConstants.java         |   4 +
 .../exploration/ExplorationSession.java            |   4 +
 .../fixture/LogonFixtureAuthenticator.java         |   5 +-
 .../standard/AuthenticationManagerStandard.java    |   9 +-
 .../authentication/standard/Authenticator.java     |   5 +-
 .../standard/AuthenticatorAbstract.java            |  16 +--
 .../authorization/AuthorizationManager.java        |   3 +-
 .../standard/AuthorizationManagerStandard.java     |   7 +-
 .../runtime/authorization/standard/Authorizor.java |   3 +-
 .../core/runtime/runner/opts/OptionValidator.java  |  28 -----
 .../facets/AbstractFacetFactoryJUnit4TestCase.java |  14 +--
 .../metamodel/facets/AbstractFacetFactoryTest.java |  13 +--
 .../actions/ActionMethodsFacetFactoryTest.java     |  18 +---
 .../action/ActionAnnotationFacetFactoryTest.java   |  25 ++---
 .../prototype/PrototypeFacetAbstractTest.java      |  11 +-
 .../CollectionAnnotationFacetFactoryTest.java      |  10 +-
 .../TitleAnnotationFacetFactoryTest.java           |  10 +-
 .../NavigableParentAnnotationFacetFactoryTest.java |  23 ++---
 .../PropertyAnnotationFacetFactoryTest.java        |  12 +--
 .../SpecificationLoaderTestAbstract.java           |  13 +--
 .../exploration/ExplorationAuthenticatorTest.java  |  35 ++++---
 .../fixture/LogonFixtureAuthenticatorTest.java     |  47 +++++----
 .../conneg/IsisPrettyPrintingProcessor.java        |  11 +-
 .../WrapperFactoryDefaultTest_wrappedObject.java   |  23 ++---
 ...FactoryDefaultTest_wrappedObject_transient.java |  18 ++--
 .../WrapperFactoryDefaultTest_wrappedObject.java   |  22 ++--
 ...FactoryDefaultTest_wrappedObject_transient.java |  17 ++--
 .../shiro/ShiroAuthenticatorOrAuthorizor.java      |  16 +--
 ...AuthenticatorOrAuthorizorTest_authenticate.java |  30 +++---
 ...ticatorOrAuthorizorTest_isVisibleInAnyRole.java |   5 +-
 .../fixtures/FixturesInstallerDelegate.java        |   2 +-
 .../isis/core/runtime/headless/IsisSystem.java     |   7 +-
 .../deplcat/DeploymentCategoryProviderDefault.java |  39 -------
 .../services/i18n/po/TranslationServicePo.java     |  12 +--
 .../menubars/MenuBarsLoaderServiceDefault.java     |   7 +-
 .../menubars/bootstrap3/MenuBarsServiceBS3.java    |   7 +-
 .../isis/core/runtime/system/DeploymentType.java   | 113 ---------------------
 .../core/runtime/system/context/IsisContext.java   |  15 +--
 .../system/context/IsisSystemEnvironment.java      |  85 ----------------
 .../runtime/system/session/IsisSessionFactory.java |  16 +--
 .../system/session/IsisSessionFactoryBuilder.java  |  27 +----
 .../isis/core/webapp/IsisWebAppBootstrapper.java   |  12 +--
 .../core/webapp/IsisWebAppContextListener.java     |   9 +-
 .../auth/AuthenticationSessionStrategyDefault.java |   2 +-
 .../isis/core/webapp/modules/WebModule_Wicket.java |  16 +--
 .../standard/AuthenticatorDefaultTest.java         |  17 ++--
 .../security/authorization/AuthorizorBypass.java   |   3 +-
 .../restfulobjects/rendering/RendererContext.java  |  19 +++-
 .../restfulobjects/rendering/RendererContext2.java |  32 ------
 .../restfulobjects/rendering/RendererContext3.java |  30 ------
 .../restfulobjects/rendering/RendererContext4.java |  30 ------
 .../restfulobjects/rendering/RendererContext5.java |  32 ------
 .../restfulobjects/rendering/RendererContext6.java |  33 ------
 .../rendering/ReprRendererAbstract.java            |  23 +----
 .../rendering/service/RepresentationService.java   |  16 +--
 .../RepresentationServiceContentNegotiator.java    |  42 +++-----
 .../service/conneg/ContentNegotiationService.java  |  10 +-
 .../conneg/ContentNegotiationServiceAbstract.java  |  10 +-
 ...entNegotiationServiceForRestfulObjectsV1_0.java |  21 ++--
 .../ContentNegotiationServiceOrgApacheIsisV1.java  |  29 +++---
 .../ContentNegotiationServiceXRoDomainType.java    |  22 ++--
 .../rendering/util/JsonWriterUtil.java             |  10 +-
 .../restfulobjects/server/ResourceContext.java     |  12 +--
 .../server/resources/DomainResourceHelper.java     |  14 +--
 .../server/resources/ResourceAbstract.java         |   5 -
 .../server/ResourceContextTest_getArg.java         |   7 +-
 ..._ensureCompatibleAcceptHeader_ContractTest.java |  13 +--
 .../wicket/viewer/IsisWicketApplication.java       |  27 ++---
 .../viewer/integration/isis/IsisInjectModule.java  |  15 ++-
 .../viewer/wicket/model/models/ScalarModel.java    |  33 +++---
 .../actionmenu/entityactions/LinkAndLabelUtil.java |   6 +-
 .../collection/AssociatedWithActionsHelper.java    |   9 +-
 .../ui/components/collection/CollectionPanel.java  |   2 +-
 .../ajaxtable/PrototypingMessageProvider.java      |   2 +-
 .../components/entity/fieldset/PropertyGroup.java  |   2 +-
 .../entity/header/EntityHeaderPanel.java           |   2 +-
 .../components/scalars/ScalarPanelAbstract2.java   |   2 +-
 .../scalars/reference/ReferencePanel.java          |   2 +-
 .../valuechoices/ValueChoicesSelect2Panel.java     |   2 +-
 .../ObjectAdapterMementoProviderAbstract.java      |   9 +-
 ...derForReferenceParamOrPropertyAutoComplete.java |  10 +-
 .../viewer/wicket/ui/pages/entity/EntityPage.java  |   8 +-
 .../isis/viewer/wicket/ui/panels/FormAbstract.java |   5 -
 .../viewer/wicket/ui/panels/PanelAbstract.java     |   6 --
 131 files changed, 583 insertions(+), 1282 deletions(-)

diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java b/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
index 62244fb..1c168f3 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
@@ -19,10 +19,6 @@
 
 package org.apache.isis.commons.internal.context;
 
-import static org.apache.isis.commons.internal.base._With.ifPresentElseGet;
-import static org.apache.isis.commons.internal.base._With.ifPresentElseThrow;
-import static org.apache.isis.commons.internal.base._With.requires;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,6 +28,12 @@ import java.util.function.Supplier;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.core.plugins.environment.IsisSystemEnvironment;
+import org.apache.isis.core.plugins.environment.IsisSystemEnvironmentPlugin;
+
+import static org.apache.isis.commons.internal.base._With.ifPresentElseGet;
+import static org.apache.isis.commons.internal.base._With.ifPresentElseThrow;
+import static org.apache.isis.commons.internal.base._With.requires;
 
 /**
  * <h1>- internal use only -</h1>
@@ -237,6 +239,12 @@ public final class _Context {
         return Class.forName(className, true, getDefaultClassLoader());
     }
 
+    // -- ENVIRONMENT
+    
+    public static IsisSystemEnvironment getEnvironment() {
+        return getOrElse(IsisSystemEnvironment.class, 
+                IsisSystemEnvironmentPlugin.get()::getIsisSystemEnvironment);
+    }
 
     // -- HELPER
 
@@ -245,4 +253,6 @@ public final class _Context {
     }
 
 
+
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategory.java b/core/commons/src/main/java/org/apache/isis/core/plugins/environment/DeploymentType.java
similarity index 73%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategory.java
rename to core/commons/src/main/java/org/apache/isis/core/plugins/environment/DeploymentType.java
index f003878..d476dd1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategory.java
+++ b/core/commons/src/main/java/org/apache/isis/core/plugins/environment/DeploymentType.java
@@ -16,21 +16,24 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
+package org.apache.isis.core.plugins.environment;
 
-package org.apache.isis.core.metamodel.deployment;
-
-public enum DeploymentCategory {
-    EXPLORING, PROTOTYPING, PRODUCTION;
-
-    public boolean isExploring() {
-        return this == DeploymentCategory.EXPLORING;
-    }
+/**
+ * 
+ * @since 2.0.0-M2
+ *
+ */
+public enum DeploymentType {
+    PRODUCTION,
+    PROTOTYPING
+    ;
 
     public boolean isPrototyping() {
-        return this == DeploymentCategory.PROTOTYPING;
+        return this == PROTOTYPING;
     }
-
+    
     public boolean isProduction() {
-        return this == DeploymentCategory.PRODUCTION;
+        return this == PRODUCTION;
     }
+    
 }
diff --git a/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironment.java b/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironment.java
new file mode 100644
index 0000000..49f1394
--- /dev/null
+++ b/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironment.java
@@ -0,0 +1,59 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.core.plugins.environment;
+
+/**
+ * Represents configuration, that is available in an early phase of bootstrapping 
+ * and should is regarded immutable during application's life-cycle.
+ * 
+ * @since 2.0.0-M2
+ */
+public interface IsisSystemEnvironment {
+
+    // -- INTERFACE
+    
+    public DeploymentType getDeploymentType();
+    
+    // -- FACTORIES
+    
+    public static IsisSystemEnvironment getDefault() {
+        return DEFAULT;
+    }
+    
+    public static IsisSystemEnvironment of(DeploymentType deploymentType) {
+        return ()->deploymentType;        
+    }
+
+    // -- DEFAULT IMPLEMENTATION
+    
+    public static final IsisSystemEnvironment DEFAULT = new IsisSystemEnvironment() {
+        @Override
+        public DeploymentType getDeploymentType() {
+            final DeploymentType deploymentType =
+                    "true".equalsIgnoreCase(System.getenv("PROTOTYPING"))
+                        ? DeploymentType.PROTOTYPING
+                                : DeploymentType.PRODUCTION;
+            return deploymentType;
+        }
+    };
+        
+    
+}
+
+
diff --git a/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironmentPlugin.java b/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironmentPlugin.java
new file mode 100644
index 0000000..126ee33
--- /dev/null
+++ b/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironmentPlugin.java
@@ -0,0 +1,24 @@
+package org.apache.isis.core.plugins.environment;
+
+import org.apache.isis.commons.internal.context._Plugin;
+
+public interface IsisSystemEnvironmentPlugin {
+    
+    // -- INTERFACE
+    
+    public IsisSystemEnvironment getIsisSystemEnvironment();
+    
+
+    // -- PLUGIN LOOKUP
+
+    public static IsisSystemEnvironmentPlugin get() {
+        return _Plugin.getOrElse(IsisSystemEnvironmentPlugin.class,
+                ambiguousPlugins->{
+                    throw _Plugin.ambiguityNonRecoverable(IsisSystemEnvironmentPlugin.class, ambiguousPlugins);
+                },
+                ()->{
+                    return IsisSystemEnvironment::getDefault;
+                });
+    }
+    
+}
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthenticationManagerNull.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthenticationManagerNull.java
index 6518012..3850500 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthenticationManagerNull.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthenticationManagerNull.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.integtestsupport.components;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.Noop;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 import org.apache.isis.core.runtime.authentication.RegistrationDetails;
@@ -29,7 +28,7 @@ import org.apache.isis.core.runtime.authentication.RegistrationDetails;
 public class AuthenticationManagerNull implements AuthenticationManager, Noop {
 
     @Override
-    public void init(final DeploymentCategory deploymentCategory) {
+    public void init() {
     }
 
     @Override
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthorizationManagerAllowAll.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthorizationManagerAllowAll.java
index 4dcf900..67eef4f 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthorizationManagerAllowAll.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthorizationManagerAllowAll.java
@@ -21,14 +21,13 @@ package org.apache.isis.core.integtestsupport.components;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 
 public class AuthorizationManagerAllowAll implements AuthorizationManager {
 
     @Override
-    public void init(final DeploymentCategory deploymentCategory) {
+    public void init() {
     }
 
     @Override
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/IsisSystemEnvironmentPluginForTesting.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/IsisSystemEnvironmentPluginForTesting.java
new file mode 100644
index 0000000..66f7bd7
--- /dev/null
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/IsisSystemEnvironmentPluginForTesting.java
@@ -0,0 +1,46 @@
+package org.apache.isis.core.integtestsupport.components;
+
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
+import org.apache.isis.core.plugins.environment.DeploymentType;
+import org.apache.isis.core.plugins.environment.IsisSystemEnvironment;
+import org.apache.isis.core.plugins.environment.IsisSystemEnvironmentPlugin;
+
+/**
+ * To enable this plugin add a META-INF entry to your application as specified by the 
+ * Java 7 ServiceLoader mechanism.
+ *  
+ * @since 2.0.0-M2
+ */
+public class IsisSystemEnvironmentPluginForTesting implements IsisSystemEnvironmentPlugin {
+
+    @Override
+    public IsisSystemEnvironment getIsisSystemEnvironment() {
+        
+        final IsisConfiguration config = getConfiguration();
+        
+        final String deploymentTypeLiteral = config.getString("isis.deploymentType");
+        if(_Strings.isNullOrEmpty(deploymentTypeLiteral)) {
+            return IsisSystemEnvironment.getDefault();
+        }
+        
+        // at this point, the deploymentType seem explicitly set via config, so we override any 
+        // environment variables that might be present
+        
+        // throws if type can not be parsed
+        final DeploymentType deploymentType = DeploymentType.valueOf(deploymentTypeLiteral);
+        
+        return IsisSystemEnvironment.of(deploymentType);
+        
+    }
+    
+    // HELPER
+
+    private IsisConfiguration getConfiguration() {
+        // TODO just a stub
+        IsisConfigurationDefault configuration = new IsisConfigurationDefault();
+        return configuration;
+    }
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java
deleted file mode 100644
index d47a825..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/deployment/DeploymentCategoryProvider.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.deployment;
-
-/**
- * Implemented by an internal domain service.
- */
-public interface DeploymentCategoryProvider {
-
-    DeploymentCategory getDeploymentCategory();
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
index ad1bd5a..1f6996e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
@@ -76,10 +75,6 @@ public abstract class FacetFactoryAbstract implements FacetFactory, ServicesInje
         return servicesInjector.getAuthenticationSessionProvider();
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return servicesInjector.getDeploymentCategoryProvider().getDeploymentCategory();
-    }
-
     protected IsisConfiguration getConfiguration() {
         final ConfigurationServiceInternal configurationServiceInternal = servicesInjector
                 .getConfigurationServiceInternal();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 9e5f4fd..12cd9b8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.events.domain.ActionDomainEvent;
 import org.apache.isis.applib.services.HasUniqueId;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Collections;
+import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -165,7 +166,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
         // search for @Action(restrictTo=...)
         final List<Action> actions = Annotations.getAnnotations(method, Action.class);
         PrototypeFacet facet = PrototypeFacetForActionAnnotation.create(actions, holder,
-                getDeploymentCategory());
+                _Context.getEnvironment().getDeploymentType());
 
         FacetUtil.addFacet(facet);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index af036a4..53bab80 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -19,9 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.actions.action.invocation;
 
-import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
-import static org.apache.isis.commons.internal.base._NullSafe.stream;
-
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.sql.Timestamp;
@@ -29,11 +26,10 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import java.util.Map;
-
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -68,7 +64,6 @@ import org.apache.isis.core.commons.lang.ThrowableExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.DomainEventHelper;
@@ -85,6 +80,9 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.schema.ixn.v1.ActionInvocationDto;
 
+import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
+import static org.apache.isis.commons.internal.base._NullSafe.stream;
+
 public abstract class ActionInvocationFacetForDomainEventAbstract
 extends ActionInvocationFacetAbstract
 implements ImperativeFacet {
@@ -97,7 +95,6 @@ implements ImperativeFacet {
     private final ObjectSpecification returnType;
 
     private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-    private final DeploymentCategory deploymentCategory;
     private final AuthenticationSessionProvider authenticationSessionProvider;
 
     private final ServicesInjector servicesInjector;
@@ -117,7 +114,6 @@ implements ImperativeFacet {
         this.method = method;
         this.onType = onType;
         this.returnType = returnType;
-        this.deploymentCategory = servicesInjector.getDeploymentCategoryProvider().getDeploymentCategory();
         this.authenticationSessionProvider = servicesInjector.getAuthenticationSessionProvider();
         this.persistenceSessionServiceInternal = servicesInjector.getPersistenceSessionServiceInternal();
         this.servicesInjector = servicesInjector;
@@ -558,10 +554,6 @@ implements ImperativeFacet {
         return configuration;
     }
 
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     public AuthenticationSession getAuthenticationSession() {
         return authenticationSessionProvider.getAuthenticationSession();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java
index b91c4d8..685d659 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java
@@ -23,30 +23,30 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.RestrictTo;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
 import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacetAbstract;
+import org.apache.isis.core.plugins.environment.DeploymentType;
 
 public class PrototypeFacetForActionAnnotation extends PrototypeFacetAbstract {
 
     public static PrototypeFacet create(
             final List<Action> actions,
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory) {
-
+            final DeploymentType deploymentType) {
+        
         return actions.stream()
                 .map(Action::restrictTo)
                 .filter(restrictTo -> restrictTo != RestrictTo.NOT_SPECIFIED)
                 .filter(restrictTo -> restrictTo == RestrictTo.PROTOTYPING)
                 .findFirst()
-                .map(restrictTo -> new PrototypeFacetForActionAnnotation(holder, deploymentCategory))
+                .map(restrictTo -> new PrototypeFacetForActionAnnotation(holder, deploymentType))
                 .orElse(null);
 
     }
 
-    private PrototypeFacetForActionAnnotation(FacetHolder holder, final DeploymentCategory deploymentCategory) {
-        super(holder, deploymentCategory);
+    private PrototypeFacetForActionAnnotation(FacetHolder holder, final DeploymentType deploymentType) {
+        super(holder, deploymentType);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java
index e743413..2a90705 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java
@@ -19,42 +19,42 @@
 
 package org.apache.isis.core.metamodel.facets.actions.prototype;
 
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import java.util.Map;
 
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.plugins.environment.DeploymentType;
 
 public abstract class PrototypeFacetAbstract extends MarkerFacetAbstract implements PrototypeFacet {
 
-    private final DeploymentCategory deploymentCategory;
+    private final DeploymentType deploymentType;
 
     public static Class<? extends Facet> type() {
         return PrototypeFacet.class;
     }
 
-    public PrototypeFacetAbstract(final FacetHolder holder, final DeploymentCategory deploymentCategory) {
+    public PrototypeFacetAbstract(final FacetHolder holder, final DeploymentType deploymentType) {
         super(type(), holder);
-        this.deploymentCategory = deploymentCategory;
+        this.deploymentType = deploymentType;
     }
 
     @Override
     public String hides(
             final VisibilityContext<? extends VisibilityEvent> ic) {
-        return getDeploymentCategory().isProduction()
+        return getDeploymentType().isProduction()
                 ? "Prototyping action not visible in production mode"
                         : null;
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
+    protected DeploymentType getDeploymentType() {
+        return deploymentType;
     }
 
     @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
         super.appendAttributesTo(attributeMap);
-        attributeMap.put("deploymentCategory", deploymentCategory);
+        attributeMap.put("deploymentType", deploymentType.name());
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index 219bb31..eec82ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
@@ -49,12 +48,11 @@ implements ImperativeFacet {
             final ObjectSpecification typeSpec,
             final Method method,
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final IsisConfiguration isisConfiguration,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterManager) {
-        super(typeSpec, holder, deploymentCategory, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterManager);
+        super(typeSpec, holder, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterManager);
         this.method = method;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
index 78007c7..5579ea8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
@@ -60,7 +60,7 @@ extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
         FacetUtil.addFacet(
                 new CollectionAccessorFacetViaAccessor(
                         typeSpec, accessorMethod, holder,
-                        getDeploymentCategory(), getConfiguration(), getSpecificationLoader(),
+                        getConfiguration(), getSpecificationLoader(),
                         getAuthenticationSessionProvider(), adapterProvider
                         ));
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
index 58eb67f..67fd34c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
@@ -23,15 +23,14 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
-import java.util.stream.Stream;
 import java.util.Map;
+import java.util.stream.Stream;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -46,7 +45,6 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
         return AutoCompleteFacet.class;
     }
 
-    private final DeploymentCategory deploymentCategory;
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final ObjectAdapterProvider adapterProvider;
     private final ServicesInjector servicesInjector;
@@ -68,7 +66,6 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
         this.repositoryClass = repositoryClass;
         this.repositoryMethod = repositoryMethod;
 
-        this.deploymentCategory = servicesInjector.getDeploymentCategoryProvider().getDeploymentCategory();
         this.adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
         this.servicesInjector = servicesInjector;
         this.authenticationSessionProvider = servicesInjector.getAuthenticationSessionProvider();
@@ -123,10 +120,6 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
         return minLength;
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     protected AuthenticationSession getAuthenticationSession() {
         return authenticationSessionProvider.getAuthenticationSession();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
index 75ac3dc..3272311 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -65,17 +64,14 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
         return ChoicesFacet.class;
     }
 
-    private final DeploymentCategory deploymentCategory;
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     public ChoicesFacetFromBoundedAbstract(
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
         super(type(), holder, Derivation.NOT_DERIVED);
-        this.deploymentCategory = deploymentCategory;
         this.authenticationSessionProvider = authenticationSessionProvider;
         this.persistenceSessionServiceInternal = persistenceSessionServiceInternal;
     }
@@ -137,10 +133,6 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
                 .collect(_Arrays.toArray(Object.class, _NullSafe.size(adapters)));
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     protected AuthenticationSession getAuthenticationSession() {
         return authenticationSessionProvider.getAuthenticationSession();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 352935a..cc2c67f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -237,7 +237,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache {
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
         // check from @DomainObject(bounded=...)
-        Facet facet = ChoicesFacetForDomainObjectAnnotation.create(domainObjects, facetHolder, getDeploymentCategory(), getAuthenticationSessionProvider(), persistenceSessionServiceInternal);
+        Facet facet = ChoicesFacetForDomainObjectAnnotation.create(domainObjects, facetHolder, getAuthenticationSessionProvider(), persistenceSessionServiceInternal);
 
         // then add
         FacetUtil.addFacet(facet);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
index 57a85e8..182ff11 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.apache.isis.applib.annotation.Bounding;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.choices.ChoicesFacetFromBoundedAbstract;
@@ -35,7 +34,6 @@ public class ChoicesFacetForDomainObjectAnnotation extends ChoicesFacetFromBound
     public static Facet create(
             final List<DomainObject> domainObjects,
             final FacetHolder facetHolder,
-            final DeploymentCategory deploymentCategory,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
 
@@ -45,7 +43,7 @@ public class ChoicesFacetForDomainObjectAnnotation extends ChoicesFacetFromBound
                 .findFirst()
                 .map(bounding -> bounding == Bounding.BOUNDED
                 ? new ChoicesFacetForDomainObjectAnnotation(
-                        facetHolder, deploymentCategory,
+                        facetHolder,
                         authenticationSessionProvider, persistenceSessionServiceInternal)
                         : null
                         ).orElse(null);
@@ -53,9 +51,8 @@ public class ChoicesFacetForDomainObjectAnnotation extends ChoicesFacetFromBound
 
     private ChoicesFacetForDomainObjectAnnotation(
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final AuthenticationSessionProvider authenticationSessionProvider, final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-        super(holder, deploymentCategory, authenticationSessionProvider, persistenceSessionServiceInternal);
+        super(holder, authenticationSessionProvider, persistenceSessionServiceInternal);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index 6a9e883..5aa970e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -27,7 +27,6 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.adapters.ValueSemanticsProvider;
 import org.apache.isis.core.commons.lang.ClassExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
@@ -173,10 +172,6 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
     // Dependencies (from constructor)
     // /////////////////////////////////////////
 
-    protected DeploymentCategory getDeploymentCategory(final ServicesInjector servicesInjector) {
-        return servicesInjector.getDeploymentCategoryProvider().getDeploymentCategory();
-    }
-
     private ObjectAdapterProvider getObjectAdapterProvider() {
         return servicesInjector.getPersistenceSessionServiceInternal();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
index b49f31d..1081717 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.metamodel.facets.param.autocomplete;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -35,19 +34,16 @@ public abstract class ActionParameterAutoCompleteFacetAbstract extends FacetAbst
         return ActionParameterAutoCompleteFacet.class;
     }
 
-    private final DeploymentCategory deploymentCategory;
     private final SpecificationLoader specificationLoader;
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final ObjectAdapterProvider adapterProvider;
 
     public ActionParameterAutoCompleteFacetAbstract(
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterProvider) {
         super(type(), holder, Derivation.NOT_DERIVED);
-        this.deploymentCategory = deploymentCategory;
         this.specificationLoader = specificationLoader;
         this.authenticationSessionProvider = authenticationSessionProvider;
         this.adapterProvider = adapterProvider;
@@ -72,10 +68,6 @@ public abstract class ActionParameterAutoCompleteFacetAbstract extends FacetAbst
         return adapterProvider;
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     protected AuthenticationSession getAuthenticationSession() {
         return authenticationSessionProvider.getAuthenticationSession();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index 40ad6c5..aaef847 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
@@ -50,11 +49,10 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
             final Method method,
             final Class<?> choicesType,
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLookup,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterManager) {
-        super(holder, deploymentCategory, specificationLookup, authenticationSessionProvider, adapterManager);
+        super(holder, specificationLookup, authenticationSessionProvider, adapterManager);
         this.method = method;
         this.choicesType = choicesType;
         this.minLength = MinLengthUtil.determineMinLength(method);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index 1d9645f..afea668 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -86,7 +86,7 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
             FacetUtil.addFacet(
                     new ActionParameterAutoCompleteFacetViaMethod(
                             autoCompleteMethod, paramType, paramAsHolder,
-                            getDeploymentCategory(), getSpecificationLoader(),
+                            getSpecificationLoader(),
                             getAuthenticationSessionProvider(), adapterProvider));
         }
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
index 7d802d0..16d5d61 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.metamodel.facets.param.choices;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -35,19 +34,16 @@ public abstract class ActionParameterChoicesFacetAbstract extends FacetAbstract
         return ActionParameterChoicesFacet.class;
     }
 
-    private final DeploymentCategory deploymentCategory;
     private final SpecificationLoader specificationLoader;
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final ObjectAdapterProvider adapterProvider;
 
     public ActionParameterChoicesFacetAbstract(
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterProvider) {
         super(type(), holder, Derivation.NOT_DERIVED);
-        this.deploymentCategory = deploymentCategory;
         this.specificationLoader = specificationLoader;
         this.authenticationSessionProvider = authenticationSessionProvider;
         this.adapterProvider = adapterProvider;
@@ -69,10 +65,6 @@ public abstract class ActionParameterChoicesFacetAbstract extends FacetAbstract
         return adapterProvider;
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     protected AuthenticationSession getAuthenticationSession() {
         return authenticationSessionProvider.getAuthenticationSession();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
index ad6e053..842eba0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
@@ -25,7 +25,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
@@ -33,11 +32,10 @@ public class ActionParameterChoicesFacetNone extends ActionParameterChoicesFacet
 
     public ActionParameterChoicesFacetNone(
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLookup,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterProvider) {
-        super(holder, deploymentCategory, specificationLookup, authenticationSessionProvider, adapterProvider);
+        super(holder, specificationLookup, authenticationSessionProvider, adapterProvider);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
index ddb423f..f1da1e5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
@@ -26,7 +26,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
@@ -38,11 +37,10 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionPa
 
     public ActionParameterChoicesFacetDerivedFromChoicesFacet(
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLookup,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterProvider) {
-        super(holder, deploymentCategory, specificationLookup, authenticationSessionProvider, adapterProvider);
+        super(holder, specificationLookup, authenticationSessionProvider, adapterProvider);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
index 4a5d1c6..0d7cef6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
@@ -50,7 +50,7 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacetFactory extends F
 
         FacetUtil.addFacet(new ActionParameterChoicesFacetDerivedFromChoicesFacet(
                 facetHolder,
-                getDeploymentCategory(), getSpecificationLoader(),
+                getSpecificationLoader(),
                 getAuthenticationSessionProvider(),
                 adapterProvider));
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
index deb9e12..5faee9a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
@@ -43,7 +42,6 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
 
     private final Method method;
     private final Class<?> choicesType;
-    private final DeploymentCategory deploymentCategory;
     private final SpecificationLoader specificationLoader;
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final ObjectAdapterProvider adapterProvider;
@@ -52,14 +50,12 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
             final Method method,
             final Class<?> choicesType,
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterProvider) {
         super(holder);
         this.method = method;
         this.choicesType = choicesType;
-        this.deploymentCategory = deploymentCategory;
         this.specificationLoader = specificationLoader;
         this.authenticationSessionProvider = authenticationSessionProvider;
         this.adapterProvider = adapterProvider;
@@ -145,10 +141,6 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
         return adapterProvider;
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     protected AuthenticationSession getAuthenticationSession() {
         return authenticationSessionProvider.getAuthenticationSession();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
index 756d052..1462af6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
@@ -84,7 +84,7 @@ public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFa
         final Class<?> returnType = actionMethod.getReturnType();
         final FacetHolder action = processMethodContext.getFacetHolder();
         final ActionChoicesFacetViaMethod facet = new ActionChoicesFacetViaMethod(choicesMethod, returnType, action,
-                getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), adapterProvider);
+                getSpecificationLoader(), getAuthenticationSessionProvider(), adapterProvider);
         FacetUtil.addFacet(facet);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index c499aed..08a16d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
@@ -48,11 +47,10 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
             final Method method,
             final Class<?> choicesType,
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLookup,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterProvider) {
-        super(holder, deploymentCategory, specificationLookup, authenticationSessionProvider, adapterProvider);
+        super(holder, specificationLookup, authenticationSessionProvider, adapterProvider);
         this.method = method;
         this.choicesType = choicesType;
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
index 06d067b..73382fb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
@@ -95,7 +95,7 @@ public class ActionParameterChoicesFacetViaMethodFactory extends MethodPrefixBas
             // add facets directly to parameters, not to actions
             final FacetedMethodParameter paramAsHolder = parameters.get(i);
             FacetUtil.addFacet(new ActionParameterChoicesFacetViaMethod(choicesMethod, arrayOfParamType, paramAsHolder,
-                    getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), adapterProvider
+                    getSpecificationLoader(), getAuthenticationSessionProvider(), adapterProvider
                     ));
         }
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
index ba56cc7..136852c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
@@ -25,7 +25,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -41,7 +40,6 @@ implements PropertyOrCollectionAccessorFacet {
     private final SpecificationLoader specificationLoader;
     private final IsisConfiguration configuration;
     private final AuthenticationSessionProvider authenticationSessionProvider;
-    private final DeploymentCategory deploymentCategory;
 
     public static Class<? extends Facet> type() {
         return PropertyOrCollectionAccessorFacet.class;
@@ -50,7 +48,6 @@ implements PropertyOrCollectionAccessorFacet {
     public PropertyOrCollectionAccessorFacetAbstract(
             final ObjectSpecification onType,
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final IsisConfiguration configuration,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
@@ -61,7 +58,6 @@ implements PropertyOrCollectionAccessorFacet {
         this.specificationLoader = specificationLoader;
         this.configuration = configuration;
         this.authenticationSessionProvider = authenticationSessionProvider;
-        this.deploymentCategory = deploymentCategory;
     }
 
     @Override
@@ -87,10 +83,6 @@ implements PropertyOrCollectionAccessorFacet {
         return configuration;
     }
 
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     public AuthenticationSession getAuthenticationSession() {
         return authenticationSessionProvider.getAuthenticationSession();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index b0877d4..3cb075c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -29,7 +29,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
@@ -48,12 +47,11 @@ implements ImperativeFacet {
             final ObjectSpecification typeSpec,
             final Method method,
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final IsisConfiguration isisConfiguration,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterProvider) {
-        super(typeSpec, holder, deploymentCategory, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterProvider);
+        super(typeSpec, holder, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterProvider);
         this.method = method;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
index 5fe8a84..813a55c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
@@ -57,7 +57,7 @@ public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectio
         FacetUtil.addFacet(
                 new PropertyAccessorFacetViaAccessor(
                         typeSpec, accessorMethod, property,
-                        getDeploymentCategory(), getConfiguration(),
+                        getConfiguration(),
                         getSpecificationLoader(),
                         getAuthenticationSessionProvider(),
                         adapterProvider
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
index da8fa2b..afbcd5e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
@@ -48,21 +47,18 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
 
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final ObjectAdapterProvider adapterProvider;
-    private final DeploymentCategory deploymentCategory;
     private SpecificationLoader specificationLoader;
 
     public PropertyAutoCompleteFacetMethod(
             final Method method,
             final Class<?> choicesClass,
             final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterProvider) {
         super(holder);
         this.method = method;
         this.choicesClass = choicesClass;
-        this.deploymentCategory = deploymentCategory;
         this.specificationLoader = specificationLoader;
         this.authenticationSessionProvider = authenticationSessionProvider;
         this.adapterProvider = adapterProvider;
@@ -139,10 +135,6 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
         return specificationLoader;
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     protected AuthenticationSession getAuthenticationSession() {
         return authenticationSessionProvider.getAuthenticationSession();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 5b7f9a6..a3e22b5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -62,7 +62,7 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
 
         final FacetHolder property = processMethodContext.getFacetHolder();
         FacetUtil.addFacet(new PropertyAutoCompleteFacetMethod(autoCompleteMethod, returnType, property,
-                getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), adapterProvider
+                getSpecificationLoader(), getAuthenticationSessionProvider(), adapterProvider
                 ));
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
index 0f0f0e7..81135d5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
@@ -38,7 +38,14 @@ public final class InteractionUtils {
         final Stream<Facet> facets = facetHolder.streamFacets().filter(isA(HidingInteractionAdvisor.class));
         facets.forEach(facet->{
             final HidingInteractionAdvisor advisor = (HidingInteractionAdvisor) facet;
-            result.advise(advisor.hides(context), advisor);
+            
+            String hides = advisor.hides(context);
+            
+            if(hides!=null) {
+                System.out.println("!!! advisor: " + advisor + " hides " + context.getIdentifier()+ " -> "+hides);    
+            }
+            
+            result.advise(hides, advisor);
         });
         return result;
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
index bd806cc..4c8d92b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
@@ -26,7 +26,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
@@ -41,11 +40,10 @@ public class ActionParameterChoicesFacetFromParentedCollection extends ActionPar
     public ActionParameterChoicesFacetFromParentedCollection(
             final FacetHolder holder,
             final OneToManyAssociation otma,
-            final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final ObjectAdapterProvider adapterProvider) {
-        super(holder, deploymentCategory, specificationLoader, authenticationSessionProvider, adapterProvider);
+        super(holder, specificationLoader, authenticationSessionProvider, adapterProvider);
         this.otma = otma;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java
index dc40067..f2ed5b3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/DeriveFacetsPostProcessor.java
@@ -24,10 +24,9 @@ import java.util.List;
 import java.util.stream.Stream;
 
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
@@ -91,7 +90,6 @@ import org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract;
 public class DeriveFacetsPostProcessor implements ObjectSpecificationPostProcessor,
         ServicesInjectorAware {
 
-    private DeploymentCategoryProvider deploymentCategoryProvider;
     private SpecificationLoader specificationLoader;
     private AuthenticationSessionProvider authenticationSessionProvider;
     private ObjectAdapterProvider adapterProvider;
@@ -272,7 +270,7 @@ public class DeriveFacetsPostProcessor implements ObjectSpecificationPostProcess
             FacetUtil.addFacet(
                 new ActionParameterChoicesFacetDerivedFromChoicesFacet(
                     peerFor(parameter),
-                    getDeploymentCategory(), specificationLoader, authenticationSessionProvider, adapterProvider));
+                    specificationLoader, authenticationSessionProvider, adapterProvider));
         }
     }
 
@@ -473,7 +471,7 @@ public class DeriveFacetsPostProcessor implements ObjectSpecificationPostProcess
         FacetUtil.addFacet(
                 new ActionParameterChoicesFacetFromParentedCollection(
                         scalarOrCollectionParam, otma,
-                        getDeploymentCategory(), specificationLoader,
+                        specificationLoader,
                         authenticationSessionProvider, adapterProvider));
     }
 
@@ -484,20 +482,15 @@ public class DeriveFacetsPostProcessor implements ObjectSpecificationPostProcess
     private List<ActionType> inferActionTypes() {
         final List<ActionType> actionTypes = _Lists.newArrayList();
         actionTypes.add(ActionType.USER);
-        final DeploymentCategory deploymentCategory = getDeploymentCategory();
-        if ( !deploymentCategory.isProduction()) {
+        if (_Context.getEnvironment().getDeploymentType().isPrototyping()) {
             actionTypes.add(ActionType.PROTOTYPE);
         }
         return actionTypes;
     }
 
-    private DeploymentCategory getDeploymentCategory() {
-        return deploymentCategoryProvider.getDeploymentCategory();
-    }
 
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
-        deploymentCategoryProvider = servicesInjector.getDeploymentCategoryProvider();
         specificationLoader = servicesInjector.getSpecificationLoader();
         authenticationSessionProvider = servicesInjector.getAuthenticationSessionProvider();
         adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
index 7b95188..94dabc7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServicesInjector.java
@@ -16,9 +16,6 @@
  */
 package org.apache.isis.core.metamodel.services;
 
-import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
-import static org.apache.isis.commons.internal.base._NullSafe.stream;
-
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -49,7 +46,6 @@ import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
 import org.apache.isis.core.metamodel.services.configinternal.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
@@ -59,6 +55,9 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 
+import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
+import static org.apache.isis.commons.internal.base._NullSafe.stream;
+
 /**
  * The repository of services, also able to inject into any object.
  *
@@ -494,12 +493,4 @@ public class ServicesInjector implements ApplicationScopedComponent, ServiceRegi
                         : (configurationServiceInternal = lookupServiceElseFail(ConfigurationServiceInternal.class));
     }
 
-    private DeploymentCategoryProvider deploymentCategoryProvider;
-    @Programmatic
-    public DeploymentCategoryProvider getDeploymentCategoryProvider() {
-        return deploymentCategoryProvider != null
-                ? deploymentCategoryProvider
-                        : (deploymentCategoryProvider = lookupServiceElseFail(DeploymentCategoryProvider.class));
-    }
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
index b855ad6..a05d6c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
@@ -41,8 +41,8 @@ import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Arrays;
 import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.commons.internal.resources._Resources;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 
 @DomainService(
         nature = NatureOfService.DOMAIN,
@@ -76,7 +76,7 @@ public class GridLoaderServiceDefault implements GridLoaderService {
 
     @Override
     public boolean supportsReloading() {
-        return !deploymentCategoryProvider.getDeploymentCategory().isProduction();
+        return _Context.getEnvironment().getDeploymentType().isPrototyping();
     }
 
     @Override
@@ -223,9 +223,6 @@ public class GridLoaderServiceDefault implements GridLoaderService {
     // -- injected dependencies
 
     @javax.inject.Inject
-    DeploymentCategoryProvider deploymentCategoryProvider;
-
-    @javax.inject.Inject
     MessageService messageService;
 
     @javax.inject.Inject
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
index 32b913b..48d9bae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
@@ -53,7 +53,7 @@ import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -173,7 +173,7 @@ public abstract class GridSystemServiceAbstract<G extends org.apache.isis.applib
             }
         } else {
 
-            if(!deploymentCategoryProvider.getDeploymentCategory().isProduction()) {
+            if(_Context.getEnvironment().getDeploymentType().isPrototyping()) {
                 messageService.warnUser("Grid metadata errors for " + grid.getDomainClass().getName() + "; check the error log");
             }
             LOG.error("Grid metadata errors:\n\n{}\n\n", jaxbService.toXml(grid));
@@ -703,8 +703,4 @@ public abstract class GridSystemServiceAbstract<G extends org.apache.isis.applib
     @javax.inject.Inject
     protected MessageService messageService;
 
-    @javax.inject.Inject
-    DeploymentCategoryProvider deploymentCategoryProvider;
-
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
index 77c80de..466d129 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
@@ -17,8 +17,6 @@
 
 package org.apache.isis.core.metamodel.spec.feature;
 
-import static org.apache.isis.commons.internal.base._NullSafe.stream;
-
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
@@ -40,10 +38,10 @@ import org.apache.isis.applib.value.Clob;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Sets;
+import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facets.actions.action.associateWith.AssociatedWithFacet;
 import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
@@ -58,6 +56,8 @@ import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.specimpl.MixedInMember;
 
+import static org.apache.isis.commons.internal.base._NullSafe.stream;
+
 public interface ObjectAction extends ObjectMember {
 
     // -- getSemantics, getOnType
@@ -277,12 +277,11 @@ public interface ObjectAction extends ObjectMember {
 
 
         public static List<ObjectAction> findTopLevel(
-                final ObjectAdapter adapter,
-                final DeploymentCategory deploymentCategory) {
+                final ObjectAdapter adapter) {
             final List<ObjectAction> topLevelActions = _Lists.newArrayList();
 
             addTopLevelActions(adapter, ActionType.USER, topLevelActions);
-            if(deploymentCategory.isPrototyping()) {
+            if(_Context.getEnvironment().getDeploymentType().isPrototyping()) {
                 addTopLevelActions(adapter, ActionType.PROTOTYPE, topLevelActions);
             }
             return topLevelActions;
@@ -312,11 +311,12 @@ public interface ObjectAction extends ObjectMember {
 
         public static List<ObjectAction> findForAssociation(
                 final ObjectAdapter adapter,
-                final ObjectAssociation association, final DeploymentCategory deploymentCategory) {
+                final ObjectAssociation association) {
+            
             final List<ObjectAction> associatedActions = _Lists.newArrayList();
 
             addActions(adapter, ActionType.USER, association, associatedActions);
-            if(deploymentCategory.isPrototyping()) {
+            if(_Context.getEnvironment().getDeploymentType().isPrototyping()) {
                 addActions(adapter, ActionType.PROTOTYPE, association, associatedActions);
             }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index d23d661..316ec70 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
-import static org.apache.isis.commons.internal.base._NullSafe.stream;
-
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -40,6 +38,7 @@ import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.exceptions.UnknownTypeException;
 import org.apache.isis.core.commons.lang.ClassExtensions;
@@ -47,7 +46,6 @@ import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
@@ -93,6 +91,8 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
 
+import static org.apache.isis.commons.internal.base._NullSafe.stream;
+
 public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implements ObjectSpecification {
 
     private final static Logger LOG = LoggerFactory.getLogger(ObjectSpecificationAbstract.class);
@@ -120,7 +120,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     protected final ServicesInjector servicesInjector;
 
-    private final DeploymentCategory deploymentCategory;
     private final SpecificationLoader specificationLoader;
     private final FacetProcessor facetProcessor;
 
@@ -178,12 +177,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         this.facetProcessor = facetProcessor;
 
         this.specificationLoader = servicesInjector.getSpecificationLoader();
-        this.deploymentCategory = servicesInjector.getDeploymentCategoryProvider().getDeploymentCategory();
     }
 
-
-
-
     // -- Stuff immediately derivable from class
     @Override
     public FeatureType getFeatureType() {
@@ -657,7 +652,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         if(oa != null) {
             return oa;
         }
-        if(! deploymentCategory.isProduction()) {
+        if(_Context.getEnvironment().getDeploymentType().isPrototyping()) {
             // automatically refresh if not in production
             // (better support for jrebel)
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/AuthenticationManager.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/AuthenticationManager.java
index b509f58..11de514 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/AuthenticationManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/AuthenticationManager.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.runtime.authentication;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 
 /**
@@ -32,7 +31,7 @@ import org.apache.isis.core.metamodel.services.ServicesInjector;
 public interface AuthenticationManager extends ApplicationScopedComponent {
 
     @Programmatic
-    void init(final DeploymentCategory deploymentCategory);
+    void init();
 
     @Programmatic
     void shutdown();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/AuthenticationRequestExploration.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/AuthenticationRequestExploration.java
index 53eb78b..80ccf32 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/AuthenticationRequestExploration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/AuthenticationRequestExploration.java
@@ -24,6 +24,10 @@ import java.util.List;
 import org.apache.isis.applib.fixtures.LogonFixture;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequestAbstract;
 
+/**
+* @deprecated no longer supported
+*/
+@Deprecated
 public class AuthenticationRequestExploration extends AuthenticationRequestAbstract {
 
     private static final String EXPLORATION_USER = "exploration";
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticator.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticator.java
index 2ce31ed..e291cb7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticator.java
@@ -42,7 +42,9 @@ import org.apache.isis.core.runtime.authentication.standard.SimpleSession;
  * <pre>
  * &lt;:userName&gt; [:&lt;role&gt;[|&lt;role&gt;]...], &lt;userName&gt;...
  * </pre>
+ * @deprecated no longer supported
  */
+@Deprecated
 public class ExplorationAuthenticator extends AuthenticatorAbstract {
 
     // -- Constructor, fields
@@ -103,7 +105,7 @@ public class ExplorationAuthenticator extends AuthenticatorAbstract {
 
     @Override
     protected final boolean isValid(final AuthenticationRequest request) {
-        return getDeploymentCategory().isExploring();
+        return false; //was true only for deprecated exploring mode
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticatorConstants.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticatorConstants.java
index 36c2c16..504f91c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticatorConstants.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticatorConstants.java
@@ -21,6 +21,10 @@ package org.apache.isis.core.runtime.authentication.exploration;
 
 import org.apache.isis.core.commons.config.ConfigurationConstants;
 
+/**
+* @deprecated no longer supported
+*/
+@Deprecated
 public final class ExplorationAuthenticatorConstants {
 
     public static final String USERS = ConfigurationConstants.ROOT + "exploration.users";
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationSession.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationSession.java
index 144a2b2..baabccb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationSession.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationSession.java
@@ -26,6 +26,10 @@ import org.apache.isis.core.commons.encoding.DataInputExtended;
 import org.apache.isis.core.commons.encoding.DataOutputExtended;
 import org.apache.isis.core.commons.encoding.Encodable;
 
+/**
+ * @deprecated no longer supported
+ */
+@Deprecated
 public final class ExplorationSession extends AuthenticationSessionAbstract implements Encodable {
 
     private static final long serialVersionUID = 1L;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/fixture/LogonFixtureAuthenticator.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/fixture/LogonFixtureAuthenticator.java
index aec2356..3cadcb4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/fixture/LogonFixtureAuthenticator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/fixture/LogonFixtureAuthenticator.java
@@ -19,8 +19,8 @@
 
 package org.apache.isis.core.runtime.authentication.fixture;
 
+import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 import org.apache.isis.core.runtime.authentication.standard.AuthenticatorAbstract;
 import org.apache.isis.core.runtime.fixtures.authentication.AuthenticationRequestLogonFixture;
@@ -41,8 +41,7 @@ public class LogonFixtureAuthenticator extends AuthenticatorAbstract {
 
     @Override
     protected final boolean isValid(final AuthenticationRequest request) {
-        final DeploymentCategory deploymentCategory = getDeploymentCategory();
-        return deploymentCategory.isExploring() || deploymentCategory.isPrototyping();
+        return _Context.getEnvironment().getDeploymentType().isPrototyping();
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticationManagerStandard.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticationManagerStandard.java
index 602a1f8..86bb2ea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticationManagerStandard.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticationManagerStandard.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.core.runtime.authentication.standard;
 
-import static org.apache.isis.commons.internal.base._NullSafe.stream;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -34,11 +32,12 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 import org.apache.isis.core.runtime.authentication.RegistrationDetails;
 
+import static org.apache.isis.commons.internal.base._NullSafe.stream;
+
 public class AuthenticationManagerStandard implements AuthenticationManager {
 
     private final Map<String, String> userByValidationCode = _Maps.newHashMap();
@@ -64,14 +63,14 @@ public class AuthenticationManagerStandard implements AuthenticationManager {
      */
     @Override
     @Programmatic
-    public final void init(final DeploymentCategory deploymentCategory) {
+    public final void init() {
         defaultRandomCodeGeneratorIfNecessary();
         addDefaultAuthenticators();
         if (authenticators.size() == 0) {
             throw new IsisException("No authenticators specified");
         }
         for (final Authenticator authenticator : authenticators) {
-            authenticator.init(deploymentCategory);
+            authenticator.init();
         }
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/Authenticator.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/Authenticator.java
index 9dcd002..8415095 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/Authenticator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/Authenticator.java
@@ -21,16 +21,13 @@ package org.apache.isis.core.runtime.authentication.standard;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 
 public interface Authenticator extends ApplicationScopedComponent {
 
-    void init(final DeploymentCategory deploymentCategory);
+    void init();
     void shutdown();
 
-    DeploymentCategory getDeploymentCategory();
-
     /**
      * Whether the provided {@link AuthenticationRequest} is recognized by this
      * {@link Authenticator}.
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticatorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticatorAbstract.java
index fca4bca..ed812d9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticatorAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authentication/standard/AuthenticatorAbstract.java
@@ -21,27 +21,22 @@ package org.apache.isis.core.runtime.authentication.standard;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 
 public abstract class AuthenticatorAbstract implements Authenticator {
 
     // -- constructor, fields
     private final IsisConfiguration configuration;
-    private DeploymentCategory deploymentCategory;
 
     public AuthenticatorAbstract(final IsisConfiguration configuration) {
         this.configuration = configuration;
     }
 
-
-
     // -- init, shutdown
 
     @Override
-    public void init(final DeploymentCategory deploymentCategory) {
+    public void init() {
         // does nothing.
-        this.deploymentCategory = deploymentCategory;
     }
 
     @Override
@@ -49,13 +44,6 @@ public abstract class AuthenticatorAbstract implements Authenticator {
         // does nothing.
     }
 
-    @Override
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
-
-
     // -- API
 
     /**
@@ -91,8 +79,6 @@ public abstract class AuthenticatorAbstract implements Authenticator {
     }
 
 
-
-
     // -- Injected (via constructor)
 
     public IsisConfiguration getConfiguration() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
index 9b7848b..e5bea17 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
@@ -23,7 +23,6 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
@@ -36,7 +35,7 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
 public interface AuthorizationManager extends ApplicationScopedComponent {
 
     @Programmatic
-    void init(final DeploymentCategory deploymentCategory);
+    void init();
 
     @Programmatic
     void shutdown();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
index b873213..c6444e6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
@@ -25,7 +25,6 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.sudo.SudoService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
@@ -45,7 +44,7 @@ public class AuthorizationManagerStandard extends AuthorizationManagerAbstract {
         authorizor = new Authorizor() {
 
             @Override
-            public void init(final DeploymentCategory deploymentCategory) {
+            public void init() {
             }
 
             @Override
@@ -79,8 +78,8 @@ public class AuthorizationManagerStandard extends AuthorizationManagerAbstract {
     // /////////////////////////////////////////////////////////
 
     @Override
-    public void init(final DeploymentCategory deploymentCategory) {
-        authorizor.init(deploymentCategory);
+    public void init() {
+        authorizor.init();
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/Authorizor.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/Authorizor.java
index 5d1616f..d78fb36 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/Authorizor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/Authorizor.java
@@ -21,11 +21,10 @@ package org.apache.isis.core.runtime.authorization.standard;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 
 public interface Authorizor extends ApplicationScopedComponent {
 
-    void init(final DeploymentCategory deploymentCategory);
+    void init();
     void shutdown();
 
     boolean isVisibleInAnyRole(final Identifier identifier);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionValidator.java
deleted file mode 100644
index a585346..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionValidator.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.runtime.runner.opts;
-
-import java.util.Optional;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-
-public interface OptionValidator {
-    Optional<String> validate(final DeploymentCategory deploymentCategory);
-}
\ No newline at end of file
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index a6ff538..7325039 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -33,8 +33,6 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
@@ -72,8 +70,6 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
     protected IsisConfigurationDefault mockConfiguration;
 
     @Mock
-    protected DeploymentCategoryProvider mockDeploymentCategoryProvider;
-    @Mock
     protected AuthenticationSessionProvider mockAuthenticationSessionProvider;
 
     protected IdentifiedHolder facetHolder;
@@ -108,18 +104,10 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
     @Before
     public void setUpFacetedMethodAndParameter() throws Exception {
 
+        // PRODUCTION
 
         context.checking(new Expectations() {{
 
-            allowing(mockServicesInjector).getDeploymentCategoryProvider();
-            will(returnValue(mockDeploymentCategoryProvider));
-
-            allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
-            will(returnValue(mockDeploymentCategoryProvider));
-
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
-
             allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(mockConfiguration));
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index 2dcd12f..4e4977f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -22,19 +22,16 @@ package org.apache.isis.core.metamodel.facets;
 import java.lang.reflect.Method;
 import java.util.List;
 
-import org.apache.isis.commons.internal.collections._Lists;
-
 import org.jmock.Expectations;
 import org.junit.Rule;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -67,7 +64,6 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
 
     protected ServicesInjector stubServicesInjector;
     protected TranslationService mockTranslationService;
-    protected DeploymentCategoryProvider mockDeploymentCategoryProvider;
     protected AuthenticationSessionProvider mockAuthenticationSessionProvider;
     protected AuthenticationSession mockAuthenticationSession;
 
@@ -99,6 +95,8 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        
+        // PRODUCTION
 
         facetHolder = new IdentifiedHolderImpl(
                 Identifier.propertyOrCollectionIdentifier(Customer.class, "firstName"));
@@ -109,7 +107,6 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
 
         methodRemover = new ProgrammableMethodRemover();
 
-        mockDeploymentCategoryProvider = context.mock(DeploymentCategoryProvider.class);
         mockAuthenticationSessionProvider = context.mock(AuthenticationSessionProvider.class);
         mockConfiguration = context.mock(IsisConfiguration.class);
         stubServicesInjector = context.mock(ServicesInjector.class);
@@ -125,16 +122,12 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
                 stubConfiguration,
                 mockAuthenticationSessionProvider,
                 mockSpecificationLoader,
-                mockDeploymentCategoryProvider,
                 mockPersistenceSessionServiceInternal,
                 mockTranslationService
         ), stubConfiguration);
 
         context.checking(new Expectations() {{
 
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
-
             allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
             will(returnValue(mockAuthenticationSession));
         }});
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
index 2be8f04..4261fbd 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -33,8 +33,6 @@ import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
@@ -81,7 +79,6 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
     private final ObjectSpecification customerSpec = new ObjectSpecificationStub("Customer");
 
     private ServicesInjector mockServicesInjector;
-    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     private ConfigurationServiceInternal stubConfigurationServiceInternal;
     private TranslationService mockTranslationService;
@@ -89,20 +86,20 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
 
     public void setUp() throws Exception {
+        
+        // PRODUCTION
+        
         super.setUp();
         mockServicesInjector = context.mock(ServicesInjector.class);
         mockTranslationService = context.mock(TranslationService.class);
         mockPersistenceSessionServiceInternal = context.mock(PersistenceSessionServiceInternal.class);
 
-        mockDeploymentCategoryProvider = context.mock(DeploymentCategoryProvider.class);
         mockAuthenticationSessionProvider = context.mock(AuthenticationSessionProvider.class);
         stubConfigurationServiceInternal = new IsisConfigurationDefault(null);
 
         final AuthenticationSession mockAuthenticationSession = context.mock(AuthenticationSession.class);
 
         context.checking(new Expectations() {{
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
 
             allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
             will(returnValue(mockAuthenticationSession));
@@ -119,18 +116,9 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
             allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(stubConfigurationServiceInternal));
 
-            allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
-            will(returnValue(mockDeploymentCategoryProvider));
-
-            allowing(mockServicesInjector).getDeploymentCategoryProvider();
-            will(returnValue(mockDeploymentCategoryProvider));
-
             allowing(mockServicesInjector).getSpecificationLoader();
             will(returnValue(mockSpecificationLoader));
 
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
-
             allowing(mockServicesInjector).getPersistenceSessionServiceInternal();
             will(returnValue(mockPersistenceSessionServiceInternal));
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
index b8c509e..5ff7b55 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
@@ -19,13 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.actions.action;
 
-import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.UUID;
@@ -46,8 +39,6 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 import org.apache.isis.applib.services.HasUniqueId;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
@@ -76,6 +67,13 @@ import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFa
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
+import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
 @SuppressWarnings({"hiding", "serial"})
 public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
 
@@ -105,6 +103,9 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
 
     @Before
     public void setUp() throws Exception {
+        
+        // PRODUCTION
+        
         facetFactory = new ActionAnnotationFacetFactory();
 
         context.checking(new Expectations() {{
@@ -114,12 +115,6 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowing(mockServicesInjector).getConfigurationServiceInternal();
             will(returnValue(mockConfiguration));
 
-            allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
-            will(returnValue(mockDeploymentCategoryProvider));
-
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
-
         }});
 
         actionMethod = findMethod(Customer.class, "someAction");
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstractTest.java
index 52db4a3..d8f3b7b 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstractTest.java
@@ -22,9 +22,9 @@ import org.jmock.auto.Mock;
 import org.junit.Rule;
 import org.junit.Test;
 
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.plugins.environment.DeploymentType;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.junit.Assert.assertEquals;
@@ -41,14 +41,13 @@ public class PrototypeFacetAbstractTest {
 
     @Test
     public void allCombinations() throws Exception {
-        givenWhenThen(DeploymentCategory.EXPLORING, null);
-        givenWhenThen(DeploymentCategory.PROTOTYPING, null);
-        givenWhenThen(DeploymentCategory.PRODUCTION, "Prototyping action not visible in production mode");
+        givenWhenThen(DeploymentType.PROTOTYPING, null);
+        givenWhenThen(DeploymentType.PRODUCTION, "Prototyping action not visible in production mode");
     }
 
-    protected void givenWhenThen(final DeploymentCategory deploymentCategory, final String expected) {
+    protected void givenWhenThen(final DeploymentType deploymentType, final String expected) {
         // given
-        final PrototypeFacetAbstract facet = new PrototypeFacetAbstract(mockFacetHolder, deploymentCategory){};
+        final PrototypeFacetAbstract facet = new PrototypeFacetAbstract(mockFacetHolder, deploymentType){};
 
         // when
         final String reason = facet.hides(mockVisibilityContext);
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
index ea5a615..d25589e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
@@ -16,10 +16,6 @@
  * under the License. */
 package org.apache.isis.core.metamodel.facets.collections.collection;
 
-import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 import java.lang.reflect.Method;
 import java.util.List;
 
@@ -63,6 +59,10 @@ import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollect
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
+import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
 
     CollectionAnnotationFacetFactory facetFactory;
@@ -107,7 +107,7 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
     public static class Modify extends CollectionAnnotationFacetFactoryTest {
 
         private void addGetterFacet(final FacetHolder holder) {
-            FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(mockOnType, holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
+            FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(mockOnType, holder, 
                     mockConfiguration,
                     mockSpecificationLoader, 
                     mockAuthenticationSessionProvider,
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
index afecb54..ff766b4 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
@@ -34,8 +34,6 @@ import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
 import org.apache.isis.core.metamodel.facets.Annotations;
@@ -59,6 +57,8 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
 
     @Before
     public void setUp() throws Exception {
+        
+        // PRODUCTION
 
         context.allowing(mockSpecificationLoader);
 
@@ -70,12 +70,6 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4T
                 allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
                 will(returnValue(mockAuthenticationSessionProvider));
 
-                allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
-                will(returnValue(mockDeploymentCategoryProvider));
-
-                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-                will(returnValue(DeploymentCategory.PRODUCTION));
-
                 allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
                 will(returnValue(mockAuthenticationSession));
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactoryTest.java
index fff951c..14c3a85 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactoryTest.java
@@ -20,24 +20,23 @@ package org.apache.isis.core.metamodel.facets.object.navparent.annotation;
 
 import java.lang.reflect.Method;
 
+import org.jmock.Expectations;
+import org.jmock.auto.Mock;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.reflection.Reflect;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.object.navparent.NavigableParentFacet;
 import org.apache.isis.core.metamodel.facets.object.navparent.annotation.NavigableParentTestSamples.DomainObjectA;
 import org.apache.isis.core.metamodel.facets.object.navparent.method.NavigableParentFacetMethod;
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
 
 public class NavigableParentAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
 
@@ -51,6 +50,8 @@ public class NavigableParentAnnotationFacetFactoryTest extends AbstractFacetFact
     @Before
     public void setUp() throws Exception {
 
+        // PRODUCTION
+        
         context.allowing(mockSpecificationLoader);
 
         facetFactory = new NavigableParentAnnotationFacetFactory();
@@ -61,12 +62,6 @@ public class NavigableParentAnnotationFacetFactoryTest extends AbstractFacetFact
                 allowing(mockServicesInjector).lookupService(AuthenticationSessionProvider.class);
                 will(returnValue(mockAuthenticationSessionProvider));
 
-                allowing(mockServicesInjector).lookupService(DeploymentCategoryProvider.class);
-                will(returnValue(mockDeploymentCategoryProvider));
-
-                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-                will(returnValue(DeploymentCategory.PRODUCTION));
-
                 allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
                 will(returnValue(mockAuthenticationSession));
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index a1af02e..1c1fb43 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -18,11 +18,6 @@
  */
 package org.apache.isis.core.metamodel.facets.properties.property;
 
-import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
 import java.lang.reflect.Method;
 import java.util.List;
 import java.util.regex.Pattern;
@@ -77,6 +72,11 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 
+import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
 public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
 
     PropertyAnnotationFacetFactory facetFactory;
@@ -117,7 +117,7 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
     public static class Modify extends PropertyAnnotationFacetFactoryTest {
 
         private void addGetterFacet(final FacetHolder holder) {
-            FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(mockOnType, holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
+            FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(mockOnType, holder,
                     mockConfiguration,
                     mockSpecificationLoader, 
                     mockAuthenticationSessionProvider,
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
index d697f59..2f7aafc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -35,8 +35,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
@@ -60,8 +58,6 @@ public abstract class SpecificationLoaderTestAbstract {
     public ExpectedException expectedException = ExpectedException.none();
 
     @Mock
-    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
-    @Mock
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock
     private GridService mockGridService;
@@ -81,12 +77,11 @@ public abstract class SpecificationLoaderTestAbstract {
 
     @Before
     public void setUp() throws Exception {
+        
+        // PRODUCTION
 
         context.checking(new Expectations() {{
 
-            allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-            will(returnValue(DeploymentCategory.PRODUCTION));
-
             ignoring(mockGridService).existsFor(with(any(Class.class)));
 
             ignoring(mockPersistenceSessionServiceInternal);
@@ -101,11 +96,9 @@ public abstract class SpecificationLoaderTestAbstract {
                     _Lists.of(
                         mockAuthenticationSessionProvider,
                         stubConfiguration,
-                        mockDeploymentCategoryProvider,
                         mockPersistenceSessionServiceInternal,
                             mockMessageService,
-                        mockGridService,
-                        mockDeploymentCategoryProvider),
+                        mockGridService),
                     stubConfiguration);
 
         specificationLoader = new SpecificationLoader(
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticatorTest.java b/core/metamodel/src/test/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticatorTest.java
index 6a17244..f14842e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticatorTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/runtime/authentication/exploration/ExplorationAuthenticatorTest.java
@@ -28,7 +28,6 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequestAbstract;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -79,22 +78,22 @@ public class ExplorationAuthenticatorTest {
         assertThat(authenticator.canAuthenticate(someOtherRequest.getClass()), is(false));
     }
 
-    @Test
-    public void isValidExplorationRequestWhenRunningInExplorationMode() throws Exception {
-        authenticator.init(DeploymentCategory.EXPLORING);
-        assertThat(authenticator.isValid(explorationRequest), is(true));
-    }
-
-    @Test
-    public void isNotValidExplorationRequestWhenRunningInSomethingOtherThanExplorationMode() throws Exception {
-        authenticator.init(DeploymentCategory.PROTOTYPING);
-        assertThat(authenticator.isValid(explorationRequest), is(false));
-    }
-
-    @Test
-    public void isValidSomeOtherTypeOfRequest() throws Exception {
-        authenticator.init(DeploymentCategory.PROTOTYPING);
-        assertThat(authenticator.canAuthenticate(someOtherRequest.getClass()), is(false));
-    }
+//    @Test
+//    public void isValidExplorationRequestWhenRunningInExplorationMode() throws Exception {
+//        authenticator.init(DeploymentCategory.EXPLORING);
+//        assertThat(authenticator.isValid(explorationRequest), is(true));
+//    }
+//
+//    @Test
+//    public void isNotValidExplorationRequestWhenRunningInSomethingOtherThanExplorationMode() throws Exception {
+//        authenticator.init(DeploymentCategory.PROTOTYPING);
+//        assertThat(authenticator.isValid(explorationRequest), is(false));
+//    }
+//
+//    @Test
+//    public void isValidSomeOtherTypeOfRequest() throws Exception {
+//        authenticator.init(DeploymentCategory.PROTOTYPING);
+//        assertThat(authenticator.canAuthenticate(someOtherRequest.getClass()), is(false));
+//    }
 
 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/runtime/authentication/fixture/LogonFixtureAuthenticatorTest.java b/core/metamodel/src/test/java/org/apache/isis/core/runtime/authentication/fixture/LogonFixtureAuthenticatorTest.java
index 93d0e59..f49c067 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/runtime/authentication/fixture/LogonFixtureAuthenticatorTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/runtime/authentication/fixture/LogonFixtureAuthenticatorTest.java
@@ -28,7 +28,6 @@ import org.junit.runner.RunWith;
 
 import org.apache.isis.applib.fixtures.LogonFixture;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequestAbstract;
 import org.apache.isis.core.runtime.fixtures.authentication.AuthenticationRequestLogonFixture;
 
@@ -72,28 +71,28 @@ public class LogonFixtureAuthenticatorTest {
         assertThat(authenticator.canAuthenticate(someOtherRequest.getClass()), is(false));
     }
 
-    @Test
-    public void isValidLogonFixtureRequestWhenRunningInExplorationMode() throws Exception {
-        authenticator.init(DeploymentCategory.EXPLORING);
-        assertThat(authenticator.isValid(logonFixtureRequest), is(true));
-    }
-
-    @Test
-    public void isValidLogonFixtureRequestWhenRunningInPrototypeMode() throws Exception {
-        authenticator.init(DeploymentCategory.PROTOTYPING);
-        assertThat(authenticator.isValid(logonFixtureRequest), is(true));
-    }
-
-    @Test
-    public void isNotValidExplorationRequestWhenRunningInSomethingOtherThanExplorationOrPrototypeMode() throws Exception {
-        authenticator.init(DeploymentCategory.PRODUCTION);
-        assertThat(authenticator.isValid(logonFixtureRequest), is(false));
-    }
-
-    @Test
-    public void isValidSomeOtherTypeOfRequest() throws Exception {
-        authenticator.init(DeploymentCategory.EXPLORING);
-        assertThat(authenticator.canAuthenticate(SomeOtherAuthenticationRequest.class), is(false));
-    }
+//    @Test
+//    public void isValidLogonFixtureRequestWhenRunningInExplorationMode() throws Exception {
+//        authenticator.init(DeploymentCategory.EXPLORING);
+//        assertThat(authenticator.isValid(logonFixtureRequest), is(true));
+//    }
+//
+//    @Test
+//    public void isValidLogonFixtureRequestWhenRunningInPrototypeMode() throws Exception {
+//        authenticator.init(DeploymentCategory.PROTOTYPING);
+//        assertThat(authenticator.isValid(logonFixtureRequest), is(true));
+//    }
+//
+//    @Test
+//    public void isNotValidExplorationRequestWhenRunningInSomethingOtherThanExplorationOrPrototypeMode() throws Exception {
+//        authenticator.init(DeploymentCategory.PRODUCTION);
+//        assertThat(authenticator.isValid(logonFixtureRequest), is(false));
+//    }
+//
+//    @Test
+//    public void isValidSomeOtherTypeOfRequest() throws Exception {
+//        authenticator.init(DeploymentCategory.EXPLORING);
+//        assertThat(authenticator.canAuthenticate(SomeOtherAuthenticationRequest.class), is(false));
+//    }
 
 }
diff --git a/core/plugins/jaxrs-resteasy-3/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/IsisPrettyPrintingProcessor.java b/core/plugins/jaxrs-resteasy-3/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/IsisPrettyPrintingProcessor.java
index 39cfc45..7574e2b 100644
--- a/core/plugins/jaxrs-resteasy-3/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/IsisPrettyPrintingProcessor.java
+++ b/core/plugins/jaxrs-resteasy-3/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/IsisPrettyPrintingProcessor.java
@@ -25,7 +25,6 @@ import org.jboss.resteasy.annotations.DecorateTypes;
 import org.jboss.resteasy.spi.DecoratorProcessor;
 
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 
@@ -43,8 +42,8 @@ public class IsisPrettyPrintingProcessor implements DecoratorProcessor<Marshalle
 
     protected boolean shouldPrettyPrint() {
         try {
-            final DeploymentCategory deploymentCategory = getDeploymentCategory();
-            return getConfiguration().getBoolean(KEY_PRETTY_PRINT, !deploymentCategory.isProduction());
+            return getConfiguration().getBoolean(KEY_PRETTY_PRINT, 
+                    IsisContext.getEnvironment().getDeploymentType().isPrototyping());
         } catch (Exception e) {
             return true;
         }
@@ -59,12 +58,6 @@ public class IsisPrettyPrintingProcessor implements DecoratorProcessor<Marshalle
         }
     }
 
-
-
-    protected DeploymentCategory getDeploymentCategory() {
-        return getIsisSessionFactory().getDeploymentCategory();
-    }
-
     protected IsisConfiguration getConfiguration() {
         return getIsisSessionFactory().getConfiguration();
     }
diff --git a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 8b933b4..9e77df3 100644
--- a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -19,10 +19,6 @@
 
 package org.apache.isis.core.wrapper;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
 import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
@@ -47,8 +43,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.adapter.oid.Oid.Factory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred;
@@ -79,6 +73,10 @@ import org.apache.isis.progmodel.wrapper.dom.employees.EmployeeRepository;
 import org.apache.isis.progmodel.wrapper.dom.employees.EmployeeRepositoryImpl;
 import org.apache.isis.schema.cmd.v1.CommandDto;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
 public class WrapperFactoryDefaultTest_wrappedObject {
 
     @Rule
@@ -107,8 +105,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     private ObjectSpecification mockOnType;
     @Mock
     private SpecificationLoader mockSpecificationLoader;
-    @Mock
-    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
+    
     @Mock
     private IsisConfiguration mockConfiguration;
 
@@ -143,6 +140,8 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Before
     public void setUp() {
 
+        // PRODUCTION
+        
         employeeRepository = new EmployeeRepositoryImpl();
 
         employeeDO = new Employee();
@@ -193,9 +192,6 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockServicesInjector).lookupServiceElseFail(AuthenticationSessionProvider.class);
                 will(returnValue(mockAuthenticationSessionProvider));
 
-                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-                will(returnValue(DeploymentCategory.PRODUCTION));
-
                 allowing(mockServicesInjector).getSpecificationLoader();
                 will(returnValue(mockSpecificationLoader));
 
@@ -205,9 +201,6 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockStringSpec).getShortIdentifier();
                 will(returnValue(String.class.getName()));
 
-                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-                will(returnValue(DeploymentCategory.PRODUCTION));
-
                 allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
                 will(returnValue(session));
 
@@ -428,7 +421,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     private FacetedMethod facetedMethodForProperty(
             Method init, Method accessor, Method modify, Method clear, Method hide, Method disable, Method validate) {
         FacetedMethod facetedMethod = FacetedMethod.createForProperty(accessor.getDeclaringClass(), accessor);
-        FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(mockOnType, accessor, facetedMethod, mockDeploymentCategoryProvider.getDeploymentCategory(),
+        FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(mockOnType, accessor, facetedMethod,
                 mockConfiguration, mockSpecificationLoader,
                 mockAuthenticationSessionProvider, mockAdapterManager
         ));
diff --git a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index 57b756c..972d474 100644
--- a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -19,9 +19,6 @@
 
 package org.apache.isis.core.wrapper;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collections;
@@ -50,8 +47,6 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.consent.Veto;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
@@ -68,6 +63,9 @@ import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.progmodel.wrapper.dom.employees.Employee;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 /**
  * Contract test.
  */
@@ -80,8 +78,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     private ObjectAdapterProvider mockAdapterManager;
     @Mock
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
-    @Mock
-    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
+    
     @Mock
     private IsisConfiguration mockConfiguration;
     @Mock
@@ -122,6 +119,8 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
 
     @Before
     public void setUp() throws Exception {
+        
+        // PRODUCTION
 
         employeeDO = new Employee();
         employeeDO.setName("Smith");
@@ -154,9 +153,6 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
                 allowing(mockServicesInjector).getSpecificationLoader();
                 will(returnValue(mockSpecificationLoader));
 
-                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-                will(returnValue(DeploymentCategory.PRODUCTION));
-
 //                allowing(mockAdapterManager).lookupAdapterFor(employeeDO);
 //                will(returnValue(mockEmployeeAdapter));
 
@@ -287,7 +283,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
 
         // and given
         facets = Arrays.asList((Facet)new PropertyAccessorFacetViaAccessor(mockOnType, getPasswordMethod, mockPasswordMember,
-                mockDeploymentCategoryProvider.getDeploymentCategory(), mockConfiguration, mockSpecificationLoader,
+                mockConfiguration, mockSpecificationLoader,
                 mockAuthenticationSessionProvider, mockAdapterManager
         ));
         context.checking(new Expectations() {
diff --git a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 8b933b4..90fb60a 100644
--- a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -19,10 +19,6 @@
 
 package org.apache.isis.core.wrapper;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
 import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
@@ -47,8 +43,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.adapter.oid.Oid.Factory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred;
@@ -79,6 +73,10 @@ import org.apache.isis.progmodel.wrapper.dom.employees.EmployeeRepository;
 import org.apache.isis.progmodel.wrapper.dom.employees.EmployeeRepositoryImpl;
 import org.apache.isis.schema.cmd.v1.CommandDto;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
 public class WrapperFactoryDefaultTest_wrappedObject {
 
     @Rule
@@ -108,8 +106,6 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
-    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
-    @Mock
     private IsisConfiguration mockConfiguration;
 
     @Mock
@@ -143,6 +139,8 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Before
     public void setUp() {
 
+        // PRODUCTION
+        
         employeeRepository = new EmployeeRepositoryImpl();
 
         employeeDO = new Employee();
@@ -193,9 +191,6 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockServicesInjector).lookupServiceElseFail(AuthenticationSessionProvider.class);
                 will(returnValue(mockAuthenticationSessionProvider));
 
-                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-                will(returnValue(DeploymentCategory.PRODUCTION));
-
                 allowing(mockServicesInjector).getSpecificationLoader();
                 will(returnValue(mockSpecificationLoader));
 
@@ -205,9 +200,6 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockStringSpec).getShortIdentifier();
                 will(returnValue(String.class.getName()));
 
-                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-                will(returnValue(DeploymentCategory.PRODUCTION));
-
                 allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
                 will(returnValue(session));
 
@@ -428,7 +420,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     private FacetedMethod facetedMethodForProperty(
             Method init, Method accessor, Method modify, Method clear, Method hide, Method disable, Method validate) {
         FacetedMethod facetedMethod = FacetedMethod.createForProperty(accessor.getDeclaringClass(), accessor);
-        FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(mockOnType, accessor, facetedMethod, mockDeploymentCategoryProvider.getDeploymentCategory(),
+        FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(mockOnType, accessor, facetedMethod,
                 mockConfiguration, mockSpecificationLoader,
                 mockAuthenticationSessionProvider, mockAdapterManager
         ));
diff --git a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index 57b756c..50b93ba 100644
--- a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -19,9 +19,6 @@
 
 package org.apache.isis.core.wrapper;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collections;
@@ -50,8 +47,6 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.consent.Veto;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
@@ -68,6 +63,9 @@ import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.progmodel.wrapper.dom.employees.Employee;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 /**
  * Contract test.
  */
@@ -81,8 +79,6 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     @Mock
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock
-    private DeploymentCategoryProvider mockDeploymentCategoryProvider;
-    @Mock
     private IsisConfiguration mockConfiguration;
     @Mock
     private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
@@ -123,6 +119,8 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     @Before
     public void setUp() throws Exception {
 
+        // PRODUCTION
+        
         employeeDO = new Employee();
         employeeDO.setName("Smith");
         
@@ -154,9 +152,6 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
                 allowing(mockServicesInjector).getSpecificationLoader();
                 will(returnValue(mockSpecificationLoader));
 
-                allowing(mockDeploymentCategoryProvider).getDeploymentCategory();
-                will(returnValue(DeploymentCategory.PRODUCTION));
-
 //                allowing(mockAdapterManager).lookupAdapterFor(employeeDO);
 //                will(returnValue(mockEmployeeAdapter));
 
@@ -287,7 +282,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
 
         // and given
         facets = Arrays.asList((Facet)new PropertyAccessorFacetViaAccessor(mockOnType, getPasswordMethod, mockPasswordMember,
-                mockDeploymentCategoryProvider.getDeploymentCategory(), mockConfiguration, mockSpecificationLoader,
+                mockConfiguration, mockSpecificationLoader,
                 mockAuthenticationSessionProvider, mockAdapterManager
         ));
         context.checking(new Expectations() {
diff --git a/core/plugins/security-shiro/src/main/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizor.java b/core/plugins/security-shiro/src/main/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizor.java
index 8e2fe4d..254a601 100644
--- a/core/plugins/security-shiro/src/main/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizor.java
+++ b/core/plugins/security-shiro/src/main/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizor.java
@@ -23,8 +23,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.isis.commons.internal.collections._Lists;
-
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.UnavailableSecurityManagerException;
 import org.apache.shiro.authc.AuthenticationException;
@@ -46,9 +44,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.Identifier;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequestPassword;
@@ -78,8 +76,6 @@ public class ShiroAuthenticatorOrAuthorizor implements Authenticator, Authorizor
     private final IsisConfiguration configuration;
     private final boolean autoLogout;
 
-    private DeploymentCategory deploymentCategory;
-
     public ShiroAuthenticatorOrAuthorizor(final IsisConfiguration configuration) {
         this.configuration = configuration;
         autoLogout = configuration.getBoolean(
@@ -96,8 +92,7 @@ public class ShiroAuthenticatorOrAuthorizor implements Authenticator, Authorizor
     // -- init, shutdown
 
     @Override
-    public void init(final DeploymentCategory deploymentCategory) {
-        this.deploymentCategory = deploymentCategory;
+    public void init() {
     }
 
 
@@ -105,13 +100,6 @@ public class ShiroAuthenticatorOrAuthorizor implements Authenticator, Authorizor
     public void shutdown() {
     }
 
-    @Override
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
-
-
     // -- Authenticator API
 
     @Override
diff --git a/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_authenticate.java b/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_authenticate.java
index a598a50..bf69cac 100644
--- a/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_authenticate.java
+++ b/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_authenticate.java
@@ -18,19 +18,6 @@
  */
 package org.apache.isis.security.shiro;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
-
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
-import org.apache.isis.core.runtime.authentication.AuthenticationRequestPassword;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.config.IniSecurityManagerFactory;
 import org.apache.shiro.mgt.SecurityManager;
@@ -44,6 +31,19 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
+import org.apache.isis.core.runtime.authentication.AuthenticationRequestPassword;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
 public class ShiroAuthenticatorOrAuthorizorTest_authenticate {
 
     @Rule
@@ -57,13 +57,15 @@ public class ShiroAuthenticatorOrAuthorizorTest_authenticate {
     @Before
     public void setUp() throws Exception {
         
+        // PRODUCTION
+        
     	context.checking(new Expectations() {{
             allowing(mockConfiguration).getBoolean("isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated", false);
             will(returnValue(false));
         }});
     	
    		authOrAuth = new ShiroAuthenticatorOrAuthorizor(mockConfiguration);
-    	authOrAuth.init(DeploymentCategory.PRODUCTION);
+    	authOrAuth.init();
     }
 
     @After
diff --git a/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole.java b/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole.java
index 8f42203..d1965a7 100644
--- a/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole.java
+++ b/core/plugins/security-shiro/src/test/java/org/apache/isis/security/shiro/ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole.java
@@ -33,7 +33,6 @@ import org.junit.Test;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequestPassword;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -55,13 +54,15 @@ public class ShiroAuthenticatorOrAuthorizorTest_isVisibleInAnyRole {
     @Before
     public void setUp() throws Exception {
     	
+        // PRODUCTION
+        
     	context.checking(new Expectations() {{
             allowing(mockConfiguration).getBoolean("isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated", false);
             will(returnValue(false));
         }});
     	
         authOrAuth = new ShiroAuthenticatorOrAuthorizor(mockConfiguration);
-        authOrAuth.init(DeploymentCategory.PRODUCTION);
+        authOrAuth.init();
     }
 
     @After
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
index 4dbf2c9..62882ba 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixtures/FixturesInstallerDelegate.java
@@ -36,7 +36,7 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.lang.ObjectExtensions;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.core.plugins.environment.DeploymentType;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem.java
index aee3a01..f18e345 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem.java
@@ -185,13 +185,8 @@ public class IsisSystem {
                     configurationOverride
                     );
 
-            IsisContext.primeEnvironment(configurationOverride);
-            
             final IsisSessionFactoryBuilder isisSessionFactoryBuilder = 
-                    new IsisSessionFactoryBuilder(
-                            componentProvider,
-                            IsisContext.getEnvironment().getDeploymentCategory(),
-                            appManifestIfAny);
+                    new IsisSessionFactoryBuilder(componentProvider, appManifestIfAny);
 
             // ensures that a FixtureClock is installed as the singleton underpinning the ClockService
             FixtureClock.initialize();
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/deplcat/DeploymentCategoryProviderDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/deplcat/DeploymentCategoryProviderDefault.java
deleted file mode 100644
index 27f234f..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/deplcat/DeploymentCategoryProviderDefault.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.isis.core.runtime.services.deplcat;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
-
-// registered as a fallback
-public class DeploymentCategoryProviderDefault implements DeploymentCategoryProvider {
-
-    private final DeploymentCategory deploymentCategory;
-
-    public DeploymentCategoryProviderDefault(final DeploymentCategory deploymentCategory) {
-        this.deploymentCategory = deploymentCategory;
-    }
-
-
-    @Programmatic
-    @Override
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java
index e4480f9..51953be 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java
@@ -32,8 +32,7 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.i18n.LocaleProvider;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.i18n.TranslationsResolver;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 
 @DomainService(
         nature = NatureOfService.DOMAIN,
@@ -91,7 +90,7 @@ public class TranslationServicePo implements TranslationService {
     }
 
     protected boolean isPrototypeOrTest() {
-        return !getDeploymentCategory().isProduction();
+        return !IsisContext.getEnvironment().getDeploymentType().isProduction();
     }
 
     @Programmatic
@@ -173,13 +172,6 @@ public class TranslationServicePo implements TranslationService {
 
     // //////////////////////////////////////
 
-    DeploymentCategory getDeploymentCategory() {
-        return deploymentCategoryProvider.getDeploymentCategory();
-    }
-
-    @javax.inject.Inject
-    DeploymentCategoryProvider deploymentCategoryProvider;
-
     @javax.inject.Inject
     private TranslationsResolver translationsResolver;
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/MenuBarsLoaderServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/MenuBarsLoaderServiceDefault.java
index c47e74d..61f6014 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/MenuBarsLoaderServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/MenuBarsLoaderServiceDefault.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBars;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.menu.MenuBarsLoaderService;
 import org.apache.isis.commons.internal.resources._Resources;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 
 @DomainService(nature = NatureOfService.DOMAIN)
@@ -35,7 +35,7 @@ public class MenuBarsLoaderServiceDefault implements MenuBarsLoaderService {
 
     @Override
     public boolean supportsReloading() {
-        return !deploymentCategoryProvider.getDeploymentCategory().isProduction();
+        return !IsisContext.getEnvironment().getDeploymentType().isProduction();
     }
 
     @Override
@@ -53,9 +53,6 @@ public class MenuBarsLoaderServiceDefault implements MenuBarsLoaderService {
     }
 
     @javax.inject.Inject
-    DeploymentCategoryProvider deploymentCategoryProvider;
-
-    @javax.inject.Inject
     JaxbService jaxbService;
 
     @javax.inject.Inject
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java
index 7f2962b..a4881c3 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java
@@ -49,7 +49,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facets.actions.notinservicemenu.NotInServiceMenuFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
@@ -61,6 +60,7 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 
 @DomainService(nature = NatureOfService.DOMAIN)
@@ -169,7 +169,7 @@ public class MenuBarsServiceBS3 implements MenuBarsService {
 
         menuBars.setMetadataError(
                 "Exactly one menu must have 'unreferencedActions' flag set; found " + size + " such menus");
-        if(!deploymentCategoryProvider.getDeploymentCategory().isProduction()) {
+        if(!IsisContext.getEnvironment().getDeploymentType().isProduction()) {
             messageService.warnUser("Menubars metadata errors; check the error log");
         }
         LOG.error("Menubar layout metadata errors:\n\n{}\n\n", jaxbService.toXml(menuBars));
@@ -397,9 +397,6 @@ public class MenuBarsServiceBS3 implements MenuBarsService {
     MenuBarsLoaderService menuBarsLoaderService;
 
     @javax.inject.Inject
-    DeploymentCategoryProvider deploymentCategoryProvider;
-
-    @javax.inject.Inject
     MessageService messageService;
 
     @javax.inject.Inject
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
deleted file mode 100644
index f2e6bad..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.runtime.system;
-
-import java.util.List;
-
-import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-
-/**
- * Whether running on client or server side etc.
- */
-final public class DeploymentType {
-
-    private static List<DeploymentType> deploymentTypes = _Lists.of(
-            new DeploymentType("SERVER", DeploymentCategory.PRODUCTION),
-            new DeploymentType("SERVER_PROTOTYPE", DeploymentCategory.PROTOTYPING)
-            );
-
-    public static DeploymentType get() {
-        final DeploymentCategory deploymentCategory = IsisContext.getEnvironment().getDeploymentCategory();
-        return deploymentTypes.stream()
-                .filter(dt->dt.getDeploymentCategory() == deploymentCategory)
-                .findFirst()
-                .orElseThrow(_Exceptions::unexpectedCodeReach);
-    }
-    
-    
-    /**
-     * Look up {@link DeploymentType} by their {@link #name()}.
-     *
-     * <p>
-     * Can substitute <tt>'-'</tt> instead of <tt>'_'</tt>; for example
-     * <tt>server_exploration</tt> will lookup the same as
-     * <tt>server-exploration</tt>.
-     */
-    public static DeploymentType lookup(final String str) {
-        final String underscoredStr = str.replace('-', '_').toUpperCase();
-        for (final DeploymentType deploymentType : deploymentTypes) {
-            if (underscoredStr.equals(deploymentType.name())) {
-                return deploymentType;
-            }
-        }
-        throw new IllegalArgumentException(String.format("Unknown deployment type '%s'", str));
-    }
-
-
-    private final String name;
-    private final DeploymentCategory deploymentCategory;
-
-    private DeploymentType(
-            final String name, final DeploymentCategory category) {
-        this.deploymentCategory = category;
-        this.name = name;
-    }
-
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
-    public boolean isExploring() {
-        return deploymentCategory.isExploring();
-    }
-
-    public boolean isPrototyping() {
-        return deploymentCategory.isPrototyping();
-    }
-
-    public boolean isProduction() {
-        return deploymentCategory.isProduction();
-    }
-
-    public String friendlyName() {
-        return nameLowerCase().replace('_', '-');
-    }
-
-    public String nameLowerCase() {
-        return name().toLowerCase();
-    }
-
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public String toString() {
-        return name();
-    }
-
-    
-    
-    
-
-}
\ No newline at end of file
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 83c3711..803f869 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -31,7 +31,8 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
-import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.core.plugins.environment.DeploymentType;
+import org.apache.isis.core.plugins.environment.IsisSystemEnvironment;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.session.IsisSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
@@ -90,17 +91,17 @@ public interface IsisContext {
      * @return pre-bootstrapping configuration
      */
     public static IsisSystemEnvironment getEnvironment() {
-        return _Context.getOrElse(IsisSystemEnvironment.class, IsisSystemEnvironment::getDefault);
+        return _Context.getEnvironment();
     }
     
     /**
-     * For integration testing allows to prime the environment via provided configuration. Will not override
+     * For integration testing allows to prime the environment via provided parameters. Will not override
      * any IsisSystemEnvironment instance, that is already registered with the current context, because the 
      * IsisSystemEnvironment is expected to be an immutable singleton within an application's life-cycle.
      * @deprecated currently under investigation on user mailing list
      */
-    public static void primeEnvironment(IsisConfiguration conf) {
-        _Context.computeIfAbsent(IsisSystemEnvironment.class, __->IsisSystemEnvironment.of(conf));
+    public static void primeEnvironment(DeploymentType deploymentType) {
+        _Context.computeIfAbsent(IsisSystemEnvironment.class, __->IsisSystemEnvironment.of(deploymentType));
     }
     
     // -- LIFE-CYCLING
@@ -166,7 +167,7 @@ public interface IsisContext {
 
         final Map<String, String> map = new TreeMap<>(configuration.asMap());
 
-        String head = String.format("ISIS %s (%s) ", getVersion(), DeploymentType.get().name());
+        String head = String.format("ISIS %s (%s) ", getVersion(), IsisContext.getEnvironment().getDeploymentType().name());
         final int fillCount = 46-head.length();
         final int fillLeft = fillCount/2;
         final int fillRight = fillCount-fillLeft;
@@ -185,4 +186,6 @@ public interface IsisContext {
 
 
 
+
+
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisSystemEnvironment.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisSystemEnvironment.java
deleted file mode 100644
index a639e82..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisSystemEnvironment.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.runtime.system.context;
-
-import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-
-/**
- * Represents configuration, that is available in an early phase of bootstrapping 
- * and should is regarded immutable during application's life-cycle.
- * 
- * @since 2.0.0-M2
- */
-public interface IsisSystemEnvironment {
-
-    public DeploymentCategory getDeploymentCategory();
-
-    public static IsisSystemEnvironment of(IsisConfiguration config) {
-        
-        final String deploymentTypeLiteral = config.getString("isis.deploymentType");
-        if(_Strings.isNullOrEmpty(deploymentTypeLiteral)) {
-            return getDefault();
-        }
-        
-        // at this point, the deploymentType seem explicitly set via config, so we override any 
-        // environment variables that might be present
-        
-        // throws if type can not be parsed
-        final DeploymentType deploymentType = DeploymentType.lookup(deploymentTypeLiteral);
-        
-        switch(deploymentType.getDeploymentCategory()) {
-        case PROTOTYPING:
-            return getPrototyping();
-        default:
-            return getProduction();
-        }
-    }    
-    
-    // -- DEFAULT IMPLEMENTATIONS 
-    
-    public static IsisSystemEnvironment getDefault() {
-        return () -> {
-            final DeploymentCategory deploymentCategory =
-                    "true".equalsIgnoreCase(System.getenv("PROTOTYPING"))
-                        ? DeploymentCategory.PROTOTYPING
-                                : DeploymentCategory.PRODUCTION;
-
-            return deploymentCategory;
-        };
-    }
-    
-    public static IsisSystemEnvironment getPrototyping() {
-        return () -> DeploymentCategory.PROTOTYPING;
-    }
-    
-    public static IsisSystemEnvironment getProduction() {
-        return () -> DeploymentCategory.PRODUCTION;
-    }
-
-    
-
-    
-    
-}
-
-
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
index e295896..37f14a3 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactory.java
@@ -36,17 +36,16 @@ import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.appmanifest.AppManifestProvider;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.plugins.environment.DeploymentType;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authentication.exploration.ExplorationSession;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration;
-import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.MessageRegistry;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.internal.InitialisationSession;
@@ -77,7 +76,6 @@ implements ApplicationScopedComponent, AppManifestProvider {
 
     // -- constructor, fields, accessors
 
-    private final DeploymentCategory deploymentCategory;
     private final IsisConfiguration configuration;
     private final SpecificationLoader specificationLoader;
     private final ServicesInjector servicesInjector;
@@ -87,12 +85,10 @@ implements ApplicationScopedComponent, AppManifestProvider {
     private final AppManifest appManifest;
 
     public IsisSessionFactory(
-            final DeploymentCategory deploymentCategory,
             final ServicesInjector servicesInjector,
             final AppManifest appManifest) {
 
         this.servicesInjector = servicesInjector;
-        this.deploymentCategory = deploymentCategory;
 
         this.configuration = servicesInjector.getConfigurationServiceInternal();
         this.specificationLoader = servicesInjector.getSpecificationLoader();
@@ -148,7 +144,7 @@ implements ApplicationScopedComponent, AppManifestProvider {
             fixtureInstaller.installFixtures();
 
             // only allow logon fixtures if not in production mode.
-            if (!deploymentCategory.isProduction()) {
+            if (!IsisContext.getEnvironment().getDeploymentType().isProduction()) {
                 logonFixture = fixtureInstaller.getLogonFixture();
             }
 
@@ -380,14 +376,6 @@ implements ApplicationScopedComponent, AppManifestProvider {
 
 
     // -- component accessors
-    /**
-     * The {@link ApplicationScopedComponent application-scoped}
-     * {@link DeploymentCategory}.
-     */
-    @Programmatic
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
 
     /**
      * The {@link ApplicationScopedComponent application-scoped}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
index c3f144a..56c6353 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java
@@ -37,8 +37,6 @@ import org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault;
 import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.lang.ListExtensions;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.configinternal.ConfigurationServiceInternal;
@@ -46,7 +44,6 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
-import org.apache.isis.core.runtime.services.deplcat.DeploymentCategoryProviderDefault;
 import org.apache.isis.core.runtime.system.IsisSystemException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.internal.IsisLocaleInitializer;
@@ -70,39 +67,30 @@ public class IsisSessionFactoryBuilder {
     // -- constructors, accessors
 
     private final IsisComponentProvider componentProvider;
-    private final DeploymentCategory deploymentCategory;
     private final AppManifest appManifest;
 
     private final IsisLocaleInitializer localeInitializer;
     private final IsisTimeZoneInitializer timeZoneInitializer;
 
     public IsisSessionFactoryBuilder(final AppManifest appManifest) {
-        this(new IsisComponentProviderDefault2(appManifest, null), DeploymentCategory.PRODUCTION, appManifest);
+        this(new IsisComponentProviderDefault2(appManifest, null), appManifest);
     }
 
     public IsisSessionFactoryBuilder(
             final IsisComponentProvider componentProvider,
-            final DeploymentCategory deploymentCategory,
             final AppManifest appManifest) {
 
         this.componentProvider = componentProvider;
-        this.deploymentCategory = deploymentCategory;
         this.appManifest = appManifest;
 
         this.localeInitializer = new IsisLocaleInitializer();
         this.timeZoneInitializer = new IsisTimeZoneInitializer();
     }
 
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     public AppManifest getAppManifest() {
         return appManifest;
     }
 
-
-
     // -- buildSessionFactory
 
     public IsisSessionFactory buildSessionFactory() {
@@ -126,7 +114,7 @@ public class IsisSessionFactoryBuilder {
         // ValueSemanticsProvider for a date value type) needs to use the Clock singleton
         // we do this after loading the services to allow a service to prime a different clock
         // implementation (eg to use an NTP time service).
-        if (!getDeploymentCategory().isProduction() && !Clock.isInitialized()) {
+        if (!IsisContext.getEnvironment().getDeploymentType().isProduction() && !Clock.isInitialized()) {
             FixtureClock.initialize();
         }
 
@@ -137,13 +125,8 @@ public class IsisSessionFactoryBuilder {
             // the IsisSessionFactory will look up each of these components from the ServicesInjector
 
             final ServicesInjector servicesInjector = componentProvider.provideServiceInjector(configuration);
-
-            // deploymentCategory, configuration
-            servicesInjector.addFallbackIfRequired(
-                    DeploymentCategoryProvider.class, new DeploymentCategoryProviderDefault(deploymentCategory));
             servicesInjector.addFallbackIfRequired(ConfigurationServiceInternal.class, configuration);
 
-
             // fixtureScripts
             servicesInjector.addFallbackIfRequired(FixtureScripts.class, new FixtureScriptsDefault());
 
@@ -170,7 +153,7 @@ public class IsisSessionFactoryBuilder {
             servicesInjector.validateServices();
 
             // instantiate the IsisSessionFactory
-            isisSessionFactory = new IsisSessionFactory(deploymentCategory, servicesInjector, appManifest);
+            isisSessionFactory = new IsisSessionFactory(servicesInjector, appManifest);
 
             // now, add the IsisSessionFactory itself into ServicesInjector, so it can be @javax.inject.Inject'd
             // into any internal domain services
@@ -212,8 +195,8 @@ public class IsisSessionFactoryBuilder {
                             // at o.a.i.core.runtime.system.session.IsisSessionFactory.doInSession(IsisSessionFactory.java:327)
                             // at todoapp.webapp.UserSettingsThemeProvider.getActiveTheme(UserSettingsThemeProvider.java:36)
 
-                            authenticationManager.init(deploymentCategory);
-                            authorizationManager.init(deploymentCategory);
+                            authenticationManager.init();
+                            authorizationManager.init();
 
                             return null;
                         }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
index 3b708a7..982a45a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.config.NotFoundPolicy;
 import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
 import org.apache.isis.core.runtime.logging.IsisLoggingConfigurer;
-import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder;
 
 import static org.apache.isis.commons.internal._Constants.emptyStringArray;
@@ -68,9 +68,7 @@ public final class IsisWebAppBootstrapper implements ServletContextListener {
                     IsisWebAppConfigProvider.getInstance().getConfigurationBuilder(servletContext);
             isisConfigurationBuilder.addDefaultConfigurationResourcesAndPrimers();
 
-            final DeploymentType deploymentType = DeploymentType.get(); 
-                    
-            addConfigurationResourcesForDeploymentType(isisConfigurationBuilder, deploymentType);
+            addConfigurationResourcesForDeploymentType(isisConfigurationBuilder);
 
         } catch (final RuntimeException e) {
             LOG.error("startup failed", e);
@@ -80,9 +78,9 @@ public final class IsisWebAppBootstrapper implements ServletContextListener {
     }
 
     protected void addConfigurationResourcesForDeploymentType(
-            final IsisConfigurationBuilder isisConfigurationBuilder,
-            final DeploymentType deploymentType) {
-        final String resourceName = deploymentType.name().toLowerCase() + ".properties";
+            final IsisConfigurationBuilder isisConfigurationBuilder) {
+        final String resourceName =
+                IsisContext.getEnvironment().getDeploymentType().name().toLowerCase() + ".properties";
         isisConfigurationBuilder.addConfigurationResource(resourceName, NotFoundPolicy.CONTINUE, IsisConfigurationDefault.ContainsPolicy.IGNORE);
     }
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java
index 04868a2..4094a8b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java
@@ -34,7 +34,6 @@ import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.config.NotFoundPolicy;
 import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
-import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.webapp.modules.WebModule;
 
@@ -83,8 +82,6 @@ public class IsisWebAppContextListener implements ServletContextListener {
                 IsisWebAppConfigProvider.getInstance().getConfigurationBuilder(servletContext);
         isisConfigurationBuilder.addDefaultConfigurationResourcesAndPrimers();
 
-        IsisContext.primeEnvironment(isisConfigurationBuilder.getConfiguration());
-
         final List<WebModule> webModules =
                  WebModule.discoverWebModules()
                  .peek(module->module.prepare(servletContext)) // prepare context
@@ -107,9 +104,9 @@ public class IsisWebAppContextListener implements ServletContextListener {
     }
 
     void addConfigurationResourcesForDeploymentType(
-            final IsisConfigurationBuilder isisConfigurationBuilder,
-            final DeploymentType deploymentType) {
-        final String resourceName = deploymentType.name().toLowerCase() + ".properties";
+            final IsisConfigurationBuilder isisConfigurationBuilder) {
+        final String resourceName = 
+                IsisContext.getEnvironment().getDeploymentType().name().toLowerCase() + ".properties";
         isisConfigurationBuilder.addConfigurationResource(resourceName, NotFoundPolicy.CONTINUE, IsisConfigurationDefault.ContainsPolicy.IGNORE);
     }
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/auth/AuthenticationSessionStrategyDefault.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/auth/AuthenticationSessionStrategyDefault.java
index 1569530..dcb67f9 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/auth/AuthenticationSessionStrategyDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/auth/AuthenticationSessionStrategyDefault.java
@@ -80,7 +80,7 @@ public class AuthenticationSessionStrategyDefault extends AuthenticationSessionS
         final LogonFixture logonFixture = sessionFactory.getLogonFixture();
 
         // see if exploration is supported
-        if (sessionFactory.getDeploymentCategory().isExploring()) {
+        if (false) {
             authSession = authenticationManager.authenticate(new AuthenticationRequestExploration(logonFixture));
             if (authSession != null) {
                 return authSession;
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/modules/WebModule_Wicket.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/modules/WebModule_Wicket.java
index 9130cd5..0397133 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/modules/WebModule_Wicket.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/modules/WebModule_Wicket.java
@@ -18,13 +18,6 @@
  */
 package org.apache.isis.core.webapp.modules;
 
-import static java.util.Objects.requireNonNull;
-import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
-import static org.apache.isis.commons.internal.base._Strings.prefix;
-import static org.apache.isis.commons.internal.base._Strings.suffix;
-import static org.apache.isis.commons.internal.context._Context.getDefaultClassLoader;
-import static org.apache.isis.commons.internal.exceptions._Exceptions.unexpectedCodeReach;
-
 import javax.servlet.Filter;
 import javax.servlet.FilterRegistration.Dynamic;
 import javax.servlet.ServletContext;
@@ -34,6 +27,13 @@ import javax.servlet.ServletException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.webapp.IsisWebAppConfigProvider;
 
+import static java.util.Objects.requireNonNull;
+import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
+import static org.apache.isis.commons.internal.base._Strings.prefix;
+import static org.apache.isis.commons.internal.base._Strings.suffix;
+import static org.apache.isis.commons.internal.context._Context.getDefaultClassLoader;
+import static org.apache.isis.commons.internal.exceptions._Exceptions.unexpectedCodeReach;
+
 /**
  * Package private mixin for WebModule implementing WebModule.
  * @since 2.0.0
@@ -66,7 +66,7 @@ final class WebModule_Wicket implements WebModule  {
                 configProvider.peekAtOrDefault(ctx, "isis.viewer.wicket.basePath", "/wicket");
         
         {
-            deploymentMode = IsisContext.getEnvironment().getDeploymentCategory().isPrototyping()
+            deploymentMode = IsisContext.getEnvironment().getDeploymentType().isPrototyping()
                     ? "development" : "deployment";
         }
         
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/authentication/standard/AuthenticatorDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/authentication/standard/AuthenticatorDefaultTest.java
index 1e858fc..a9188fa 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/authentication/standard/AuthenticatorDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/authentication/standard/AuthenticatorDefaultTest.java
@@ -19,9 +19,6 @@
 
 package org.apache.isis.core.runtime.authentication.standard;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.jmock.Mockery;
 import org.jmock.integration.junit4.JMock;
 import org.jmock.integration.junit4.JUnit4Mockery;
@@ -30,9 +27,11 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 @RunWith(JMock.class)
 public class AuthenticatorDefaultTest {
 
@@ -43,6 +42,9 @@ public class AuthenticatorDefaultTest {
 
     @Before
     public void setUp() {
+        
+                
+        
         mockConfiguration = mockery.mock(IsisConfiguration.class);
 
         authenticator = new AuthenticatorAbstract(mockConfiguration) {
@@ -64,12 +66,5 @@ public class AuthenticatorDefaultTest {
         assertThat(authenticator.getConfiguration(), is(mockConfiguration));
     }
 
-    @Test
-    public void getDeploymentCategory() throws Exception {
-        final DeploymentCategory deploymentCategory = DeploymentCategory.PROTOTYPING;
-        authenticator.init(deploymentCategory);
-        assertThat(authenticator.getDeploymentCategory(), is(deploymentCategory));
-    }
-
 
 }
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authorization/AuthorizorBypass.java b/core/security/src/main/java/org/apache/isis/core/security/authorization/AuthorizorBypass.java
index 6a73ce4..011415c 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authorization/AuthorizorBypass.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authorization/AuthorizorBypass.java
@@ -20,13 +20,12 @@
 package org.apache.isis.core.security.authorization;
 
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.authorization.standard.Authorizor;
 
 public class AuthorizorBypass implements Authorizor {
 
     @Override
-    public void init(final DeploymentCategory deploymentCategory) {
+    public void init() {
         // does nothing
     }
 
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
index c5440a6..0230cc5 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext.java
@@ -20,22 +20,32 @@ package org.apache.isis.viewer.restfulobjects.rendering;
 
 import java.util.List;
 
+import javax.ws.rs.core.MediaType;
+
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
 
 public interface RendererContext {
 
     String urlFor(final String url);
 
     AuthenticationSession getAuthenticationSession();
-
     IsisConfiguration getConfiguration();
-
     PersistenceSession getPersistenceSession();
+    List<MediaType> getAcceptableMediaTypes();
+    
+    SpecificationLoader getSpecificationLoader();
+    ServicesInjector getServicesInjector();
+    
+    InteractionInitiatedBy getInteractionInitiatedBy();
 
     Where getWhere();
 
@@ -61,5 +71,10 @@ public interface RendererContext {
      * @return whether this adapter has already been rendered (implying the caller should not render the value).
      */
     boolean canEagerlyRender(ObjectAdapter objectAdapter);
+    
+    /**
+     * Applies only when rendering a domain object.
+     */
+    RepresentationService.Intent getIntent();
 
 }
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext2.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext2.java
deleted file mode 100644
index fb7e596..0000000
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext2.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.rendering;
-
-import java.util.List;
-
-import javax.ws.rs.core.MediaType;
-
-/**
- * TODO: roll-up in the future (introduced only so that API does not break)
- */
-public interface RendererContext2 extends RendererContext {
-
-    List<MediaType> getAcceptableMediaTypes();
-
-}
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext3.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext3.java
deleted file mode 100644
index 8663a6a..0000000
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext3.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.rendering;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-
-/**
- * TODO: roll-up in the future (introduced only so that API does not break)
- */
-public interface RendererContext3 extends RendererContext2 {
-
-    public DeploymentCategory getDeploymentCategory();
-
-}
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java
deleted file mode 100644
index 129f1a0..0000000
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext4.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.rendering;
-
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-
-/**
- * TODO: roll-up in the future (introduced only so that API does not break)
- */
-public interface RendererContext4 extends RendererContext3 {
-
-    InteractionInitiatedBy getInteractionInitiatedBy();
-
-}
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
deleted file mode 100644
index 246067d..0000000
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext5.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.rendering;
-
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-
-/**
- * TODO: roll-up in the future (introduced only so that API does not break)
- */
-public interface RendererContext5 extends RendererContext4 {
-
-    SpecificationLoader getSpecificationLoader();
-    ServicesInjector getServicesInjector();
-
-}
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext6.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext6.java
deleted file mode 100644
index febbaed..0000000
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/RendererContext6.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.rendering;
-
-import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
-
-/**
- * TODO: roll-up in the future (introduced only so that API does not break)
- */
-public interface RendererContext6 extends RendererContext5 {
-
-    /**
-     * Applies only when rendering a domain object.
-     */
-    RepresentationService.Intent getIntent();
-
-}
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
index a07b021..668915b 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/ReprRendererAbstract.java
@@ -29,14 +29,12 @@ import com.google.common.collect.Maps;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.Rel;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer;
 import org.apache.isis.viewer.restfulobjects.rendering.domaintypes.DomainTypeReprRenderer;
-import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
 
 public abstract class ReprRendererAbstract<R extends ReprRendererAbstract<R, T>, T> implements ReprRenderer<R, T> {
 
@@ -46,7 +44,6 @@ public abstract class ReprRendererAbstract<R extends ReprRendererAbstract<R, T>,
     protected final JsonRepresentation representation;
     private final Map<String,String> mediaTypeParams = Maps.newLinkedHashMap();
 
-    private final DeploymentCategory deploymentCategory;
     private final InteractionInitiatedBy interactionInitiatedBy;
 
     protected boolean includesSelf;
@@ -61,30 +58,12 @@ public abstract class ReprRendererAbstract<R extends ReprRendererAbstract<R, T>,
         this.representationType = representationType;
         this.representation = representation;
 
-        this.deploymentCategory = determineDeploymentCategoryFrom(this.rendererContext);
         this.interactionInitiatedBy = determineInteractionInitiatedByFrom(this.rendererContext);
     }
 
-    private static DeploymentCategory determineDeploymentCategoryFrom(final RendererContext rendererContext) {
-        if(rendererContext instanceof RendererContext3) {
-            return ((RendererContext3) rendererContext).getDeploymentCategory();
-        } else {
-            return DeploymentCategory.PRODUCTION; // fallback
-        }
-    }
-
     private static InteractionInitiatedBy determineInteractionInitiatedByFrom(
             final RendererContext rendererContext) {
-        if (rendererContext instanceof RepresentationService.Context4) {
-            return ((RepresentationService.Context4) rendererContext).getInteractionInitiatedBy();
-        } else {
-            // fallback
-            return InteractionInitiatedBy.USER;
-        }
-    }
-
-    protected DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
+        return rendererContext.getInteractionInitiatedBy();
     }
 
     protected InteractionInitiatedBy getInteractionInitiatedBy() {
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
index f56d1d2..c59f493 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
@@ -21,11 +21,6 @@ import javax.ws.rs.core.Response;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext2;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext3;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext4;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext5;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext6;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberReprMode;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAdapterLinkTo;
@@ -104,14 +99,5 @@ public interface RepresentationService {
     interface Context extends RendererContext {
         ObjectAdapterLinkTo getAdapterLinkTo();
     }
-    interface Context2 extends Context, RendererContext2 {
-    }
-    interface Context3 extends Context2, RendererContext3 {
-    }
-    interface Context4 extends Context3, RendererContext4 {
-    }
-    interface Context5 extends Context4, RendererContext5 {
-    }
-    interface Context6 extends Context5, RendererContext6 {
-    }
+    
 }
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java
index 1688aa9..4e1f0d4 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java
@@ -18,13 +18,12 @@ package org.apache.isis.viewer.restfulobjects.rendering.service;
 
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 
 import javax.annotation.PostConstruct;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.ResponseBuilder;
 
-import java.util.function.Function;
-
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
@@ -53,14 +52,13 @@ public class RepresentationServiceContentNegotiator implements RepresentationSer
     @Override
     @Programmatic
     public Response objectRepresentation(
-            final Context rendererContext,
+            final Context renderContext,
             final ObjectAdapter objectAdapter) {
 
-        final Context2 renderContext2 = asContext2(rendererContext);
         final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
             @Override
             public ResponseBuilder apply(final ContentNegotiationService connegService) {
-                return connegService.buildResponse(renderContext2, objectAdapter);
+                return connegService.buildResponse(renderContext, objectAdapter);
             }
         });
 
@@ -75,25 +73,24 @@ public class RepresentationServiceContentNegotiator implements RepresentationSer
     @Override
     @Programmatic
     public Response objectRepresentation(
-            final Context rendererContext,
+            final Context renderContext,
             final ObjectAdapter objectAdapter,
             final Intent unused) {
-        return objectRepresentation(rendererContext, objectAdapter);
+        return objectRepresentation(renderContext, objectAdapter);
     }
 
 
     @Override
     @Programmatic
     public Response propertyDetails(
-            final Context rendererContext,
+            final Context renderContext,
             final ObjectAndProperty objectAndProperty,
             final MemberReprMode memberReprMode) {
 
-        final Context2 renderContext2 = asContext2(rendererContext);
         final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
             @Override
             public ResponseBuilder apply(final ContentNegotiationService connegService) {
-                return connegService.buildResponse(renderContext2, objectAndProperty);
+                return connegService.buildResponse(renderContext, objectAndProperty);
             }
         });
 
@@ -105,15 +102,14 @@ public class RepresentationServiceContentNegotiator implements RepresentationSer
     @Override
     @Programmatic
     public Response collectionDetails(
-            final Context rendererContext,
+            final Context renderContext,
             final ObjectAndCollection objectAndCollection,
             final MemberReprMode memberReprMode) {
 
-        final Context2 renderContext2 = asContext2(rendererContext);
         final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
             @Override
             public ResponseBuilder apply(final ContentNegotiationService connegService) {
-                return connegService.buildResponse(renderContext2, objectAndCollection);
+                return connegService.buildResponse(renderContext, objectAndCollection);
             }
         });
 
@@ -127,14 +123,13 @@ public class RepresentationServiceContentNegotiator implements RepresentationSer
     @Override
     @Programmatic
     public Response actionPrompt(
-            final Context rendererContext,
+            final Context renderContext,
             final ObjectAndAction objectAndAction) {
 
-        final Context2 renderContext2 = asContext2(rendererContext);
         final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
             @Override
             public ResponseBuilder apply(final ContentNegotiationService connegService) {
-                return connegService.buildResponse(renderContext2, objectAndAction);
+                return connegService.buildResponse(renderContext, objectAndAction);
             }
         });
 
@@ -146,15 +141,14 @@ public class RepresentationServiceContentNegotiator implements RepresentationSer
     @Override
     @Programmatic
     public Response actionResult(
-            final Context rendererContext,
+            final Context renderContext,
             final ObjectAndActionInvocation objectAndActionInvocation,
             final SelfLink selfLink) {
 
-        final Context2 renderContext2 = asContext2(rendererContext);
         final ResponseBuilder responseBuilder = buildResponse(new Function<ContentNegotiationService, ResponseBuilder>() {
             @Override
             public ResponseBuilder apply(final ContentNegotiationService connegService) {
-                return connegService.buildResponse(renderContext2, objectAndActionInvocation);
+                return connegService.buildResponse(renderContext, objectAndActionInvocation);
             }
         });
 
@@ -162,16 +156,6 @@ public class RepresentationServiceContentNegotiator implements RepresentationSer
         return buildResponse(responseBuilder);
     }
 
-    private Context2 asContext2(final Context rendererContext) {
-        if (rendererContext instanceof Context2) {
-            final Context2 context = (Context2) rendererContext;
-            return context;
-        }
-        throw new IllegalArgumentException(String.format(
-                "The %s requires that the context to implement %s",
-                RepresentationServiceContentNegotiator.class.getSimpleName(), Context2.class.getName()));
-    }
-
     void assertContentNegotiationServiceHandled(final ResponseBuilder responseBuilder) {
         if (responseBuilder == null) {
             throw new IllegalStateException("Could not locate " + ContentNegotiationService.class.getSimpleName() + " to handle request");
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
index dcce78c..8cda862 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationService.java
@@ -42,26 +42,26 @@ public interface ContentNegotiationService {
 
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext,
             final ObjectAdapter objectAdapter);
 
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext,
             final ObjectAndProperty objectAndProperty);
 
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext,
             final ObjectAndCollection objectAndCollection);
 
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext,
             final ObjectAndAction objectAndAction);
 
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext,
             final ObjectAndActionInvocation objectAndActionInvocation);
 }
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java
index af3ec5e..51a0b07 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceAbstract.java
@@ -56,7 +56,7 @@ public abstract class ContentNegotiationServiceAbstract implements ContentNegoti
     @Override
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext2,
             final ObjectAdapter objectAdapter) {
         return null;
     }
@@ -64,7 +64,7 @@ public abstract class ContentNegotiationServiceAbstract implements ContentNegoti
     @Override
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext2,
             final ObjectAndProperty objectAndProperty)  {
         return null;
     }
@@ -72,7 +72,7 @@ public abstract class ContentNegotiationServiceAbstract implements ContentNegoti
     @Override
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext2,
             final ObjectAndCollection objectAndCollection) {
         return null;
     }
@@ -80,7 +80,7 @@ public abstract class ContentNegotiationServiceAbstract implements ContentNegoti
     @Override
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext2,
             final ObjectAndAction objectAndAction)  {
         return null;
     }
@@ -88,7 +88,7 @@ public abstract class ContentNegotiationServiceAbstract implements ContentNegoti
     @Override
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext2,
             final ObjectAndActionInvocation objectAndActionInvocation) {
         return null;
     }
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
index ad82bda..3d03f8d 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -82,7 +82,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
 
     @Override
     public ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAdapter objectAdapter) {
 
         final List<MediaType> list = rendererContext.getAcceptableMediaTypes();
@@ -98,7 +98,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
      * Not API
      */
     ResponseBuilder buildResponseTo(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAdapter objectAdapter,
             final JsonRepresentation representationIfAnyRequired,
             final JsonRepresentation rootRepresentation) {
@@ -109,9 +109,8 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
 
         final ResponseBuilder responseBuilder = Responses.ofOk(renderer, Caching.NONE, rootRepresentation);
 
-        if(rendererContext instanceof RepresentationService.Context6) {
-            final RepresentationService.Context6 context6 = (RepresentationService.Context6) rendererContext;
-            final RepresentationService.Intent intent = context6.getIntent();
+        if(true) {
+            final RepresentationService.Intent intent = rendererContext.getIntent();
             if(intent == RepresentationService.Intent.JUST_CREATED) {
                 responseBuilder.status(Response.Status.CREATED);
             }
@@ -130,7 +129,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
 
     @Override
     public ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndProperty objectAndProperty) {
 
         final List<MediaType> list = rendererContext.getAcceptableMediaTypes();
@@ -153,7 +152,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
 
     @Override
     public ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndCollection objectAndCollection) {
 
         final List<MediaType> list = rendererContext.getAcceptableMediaTypes();
@@ -169,7 +168,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
      * Not API
      */
     ResponseBuilder buildResponseTo(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndCollection objectAndCollection,
             final JsonRepresentation representation,
             final JsonRepresentation rootRepresentation) {
@@ -189,7 +188,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
 
     @Override
     public ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndAction objectAndAction) {
 
         final List<MediaType> list = rendererContext.getAcceptableMediaTypes();
@@ -207,7 +206,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
 
     @Override
     public ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndActionInvocation objectAndActionInvocation) {
 
         final ResponseBuilder responseBuilder;
@@ -333,7 +332,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
      * Not API
      */
     ResponseBuilder buildResponseTo(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndActionInvocation objectAndActionInvocation,
             final JsonRepresentation representation,
             final JsonRepresentation rootRepresentation) {
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java
index 6086852..3e7ec66 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java
@@ -100,7 +100,7 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
      */
     @Override
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAdapter objectAdapter) {
 
         boolean canAccept = canAccept(rendererContext);
@@ -137,7 +137,7 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
     @Override
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndProperty objectAndProperty)  {
 
         return null;
@@ -150,7 +150,7 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
     @Override
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndCollection objectAndCollection) {
 
         if(!canAccept(rendererContext)) {
@@ -193,7 +193,7 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
     @Override
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndAction objectAndAction)  {
         return null;
     }
@@ -210,7 +210,7 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
     @Override
     @Programmatic
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAndActionInvocation objectAndActionInvocation) {
 
         if(!canAccept(rendererContext)) {
@@ -290,19 +290,19 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
         return responseBuilder;
     }
 
-    boolean canAccept(final RepresentationService.Context2 rendererContext) {
+    boolean canAccept(final RepresentationService.Context rendererContext) {
         final List<MediaType> acceptableMediaTypes = rendererContext.getAcceptableMediaTypes();
         return mediaTypeParameterMatches(acceptableMediaTypes, "profile", ACCEPT_PROFILE);
     }
 
     protected EnumSet<SuppressionType> suppress(
-            final RepresentationService.Context2 rendererContext) {
+            final RepresentationService.Context rendererContext) {
         final List<MediaType> acceptableMediaTypes = rendererContext.getAcceptableMediaTypes();
         return SuppressionType.ParseUtil.parse(mediaTypeParameterList(acceptableMediaTypes, "suppress"));
     }
     
     private void appendObjectTo(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAdapter objectAdapter,
             final JsonRepresentation rootRepresentation,
             final EnumSet<SuppressionType> suppression) {
@@ -330,7 +330,7 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
     }
 
     private void appendPropertiesTo(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAdapter objectAdapter,
             final JsonRepresentation rootRepresentation,
             final EnumSet<SuppressionType> suppression) {
@@ -385,7 +385,7 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
     }
 
     private void appendCollectionTo(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final ObjectAdapter objectAdapter,
             final OneToManyAssociation collection,
             final JsonRepresentation representation, 
@@ -402,7 +402,7 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
     }
 
     private void appendStreamTo(
-            final RepresentationService.Context2 rendererContext,
+            final RepresentationService.Context rendererContext,
             final Stream<ObjectAdapter> adapters,
             final JsonRepresentation collectionRepresentation, 
             final EnumSet<SuppressionType> suppression) {
@@ -417,12 +417,7 @@ public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiation
 
     private static InteractionInitiatedBy determineInteractionInitiatedByFrom(
             final RendererContext rendererContext) {
-        if (rendererContext instanceof RepresentationService.Context4) {
-            return ((RepresentationService.Context4) rendererContext).getInteractionInitiatedBy();
-        } else {
-            // fallback
-            return InteractionInitiatedBy.USER;
-        }
+        return rendererContext.getInteractionInitiatedBy();
     }
 
 }
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
index 98559a1..4bd477b 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
@@ -61,24 +61,24 @@ public class ContentNegotiationServiceXRoDomainType extends ContentNegotiationSe
      */
     @Override
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext,
             final ObjectAdapter objectAdapter) {
 
         final Object domainObject = objectOf(objectAdapter);
         final RepresentationType representationType = RepresentationType.DOMAIN_OBJECT;
 
-        final MediaType mediaType = mediaTypeFrom(renderContext2, representationType);
+        final MediaType mediaType = mediaTypeFrom(renderContext, representationType);
         if (mediaType == null) {
             return null;
         }
 
-        return buildResponse(renderContext2, domainObject, representationType);
+        return buildResponse(renderContext, domainObject, representationType);
     }
 
     protected MediaType mediaTypeFrom(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext,
             final RepresentationType representationType) {
-        final List<MediaType> acceptableMediaTypes = renderContext2.getAcceptableMediaTypes();
+        final List<MediaType> acceptableMediaTypes = renderContext.getAcceptableMediaTypes();
         MediaType mediaType =
                 representationType.matchesXmlProfileWithParameter(acceptableMediaTypes, X_RO_DOMAIN_TYPE);
 
@@ -94,12 +94,12 @@ public class ContentNegotiationServiceXRoDomainType extends ContentNegotiationSe
      */
     @Override
     public Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext,
             final ObjectAndActionInvocation objectAndActionInvocation) {
 
         final RepresentationType representationType = RepresentationType.ACTION_RESULT;
 
-        final MediaType mediaType = mediaTypeFrom(renderContext2, representationType);
+        final MediaType mediaType = mediaTypeFrom(renderContext, representationType);
         if (mediaType == null) {
             return null;
         }
@@ -108,17 +108,17 @@ public class ContentNegotiationServiceXRoDomainType extends ContentNegotiationSe
         if(domainObject == null) {
             throw RestfulObjectsApplicationException.create(RestfulResponse.HttpStatusCode.NOT_FOUND);
         }
-        return buildResponse(renderContext2, domainObject, representationType);
+        return buildResponse(renderContext, domainObject, representationType);
     }
 
     protected Response.ResponseBuilder buildResponse(
-            final RepresentationService.Context2 renderContext2,
+            final RepresentationService.Context renderContext,
             final Object domainObject,
             final RepresentationType representationType) {
 
-        final List<MediaType> acceptableMediaTypes = renderContext2.getAcceptableMediaTypes();
+        final List<MediaType> acceptableMediaTypes = renderContext.getAcceptableMediaTypes();
 
-        final MediaType mediaType = mediaTypeFrom(renderContext2, representationType);
+        final MediaType mediaType = mediaTypeFrom(renderContext, representationType);
         if (mediaType == null) {
             return null;
         }
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/JsonWriterUtil.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/JsonWriterUtil.java
index 82267cd..ce26642 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/JsonWriterUtil.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/JsonWriterUtil.java
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.restfulobjects.rendering.util;
 
 import java.io.IOException;
 
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
@@ -30,8 +29,7 @@ public final class JsonWriterUtil {
     private JsonWriterUtil(){}
 
     public static String jsonFor(final Object object) {
-        final DeploymentCategory deploymentCategory = getIsisSessionFactory().getDeploymentCategory();
-        final JsonMapper.PrettyPrinting prettyPrinting = inferPrettyPrinting(deploymentCategory);
+        final JsonMapper.PrettyPrinting prettyPrinting = inferPrettyPrinting();
         try {
             return JsonMapper.instance(prettyPrinting).write(object);
         } catch (final IOException e) {
@@ -43,7 +41,9 @@ public final class JsonWriterUtil {
         return IsisContext.getSessionFactory();
     }
 
-    private static JsonMapper.PrettyPrinting inferPrettyPrinting(final DeploymentCategory deploymentCategory) {
-        return deploymentCategory.isProduction() ? JsonMapper.PrettyPrinting.DISABLE : JsonMapper.PrettyPrinting.ENABLE;
+    private static JsonMapper.PrettyPrinting inferPrettyPrinting() {
+        return IsisContext.getEnvironment().getDeploymentType().isProduction() 
+                ? JsonMapper.PrettyPrinting.DISABLE 
+                        : JsonMapper.PrettyPrinting.ENABLE;
     }
 }
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
index 3efb193..d6fafd8 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
@@ -41,7 +41,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -52,12 +51,12 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.DomainModel;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulRequest.RequestParameter;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext6;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
 import org.apache.isis.viewer.restfulobjects.rendering.util.Util;
 
-public class ResourceContext implements RendererContext6 {
+public class ResourceContext implements RendererContext {
 
     private final HttpHeaders httpHeaders;
     private final UriInfo uriInfo;
@@ -67,7 +66,6 @@ public class ResourceContext implements RendererContext6 {
     private final HttpServletResponse httpServletResponse;
     private final SecurityContext securityContext;
 
-    private final DeploymentCategory deploymentCategory;
     private final IsisConfiguration configuration;
     private final ServicesInjector servicesInjector;
     private final SpecificationLoader specificationLoader;
@@ -118,7 +116,6 @@ public class ResourceContext implements RendererContext6 {
 
         this.authenticationSession = isisSessionFactory.getCurrentSession().getAuthenticationSession();
         this.specificationLoader = isisSessionFactory.getSpecificationLoader();
-        this.deploymentCategory = isisSessionFactory.getDeploymentCategory();
         this.persistenceSession = isisSessionFactory.getCurrentSession().getPersistenceSession();
 
         this.interactionInitiatedBy = interactionInitiatedBy;
@@ -248,11 +245,6 @@ public class ResourceContext implements RendererContext6 {
     }
 
     @Override
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
-    @Override
     public InteractionInitiatedBy getInteractionInitiatedBy() {
         return interactionInitiatedBy;
     }
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index 0502802..f4edc9f 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -28,7 +28,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -37,7 +36,7 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
-import org.apache.isis.viewer.restfulobjects.rendering.RendererContext6;
+import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectLinkTo;
@@ -52,14 +51,14 @@ import org.apache.isis.viewer.restfulobjects.server.ResourceContext;
 
 public class DomainResourceHelper {
 
-    static class RepresentationServiceContextAdapter implements RepresentationService.Context6 {
+    static class RepresentationServiceContextAdapter implements RepresentationService.Context {
 
-        private final RendererContext6 rendererContext;
+        private final RendererContext rendererContext;
         private final ObjectAdapterLinkTo adapterLinkTo;
         private RepresentationService.Intent intent;
 
         RepresentationServiceContextAdapter(
-                final RendererContext6 rendererContext,
+                final RendererContext rendererContext,
                 final ObjectAdapterLinkTo adapterLinkTo) {
             this.rendererContext = rendererContext;
             this.adapterLinkTo = adapterLinkTo;
@@ -97,11 +96,6 @@ public class DomainResourceHelper {
         }
 
         @Override
-        public DeploymentCategory getDeploymentCategory() {
-            return rendererContext.getDeploymentCategory();
-        }
-
-        @Override
         public List<List<String>> getFollowLinks() {
             return rendererContext.getFollowLinks();
         }
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index 39c84a6..5d0c4f5 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -37,7 +37,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.url.UrlDecoderUtil;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.authentication.AuthenticationManager;
@@ -163,10 +162,6 @@ public abstract class ResourceAbstract {
     // Dependencies (from singletons)
     // //////////////////////////////////////////////////////////////
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return getIsisSessionFactory().getDeploymentCategory();
-    }
-
     protected IsisConfiguration getConfiguration () {
         return getIsisSessionFactory().getConfiguration();
     }
diff --git a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_getArg.java b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_getArg.java
index 8f29bb3..2ab9c44 100644
--- a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_getArg.java
+++ b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContextTest_getArg.java
@@ -36,7 +36,6 @@ import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.url.UrlDecoderUtil;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -70,11 +69,11 @@ public class ResourceContextTest_getArg {
 
     private ResourceContext resourceContext;
 
-    DeploymentCategory deploymentCategory;
 
     @Before
     public void setUp() throws Exception {
-        deploymentCategory = DeploymentCategory.PRODUCTION;
+
+        // PRODUCTION;
 
         _Context.put(IsisSessionFactory.class, mockIsisSessionFactory, false);
         
@@ -97,8 +96,6 @@ public class ResourceContextTest_getArg {
                 will(returnValue(mockAuthenticationSession));
                 allowing(mockIsisSessionFactory).getSpecificationLoader();
                 will(returnValue(mockSpecificationLoader));
-                allowing(mockIsisSessionFactory).getDeploymentCategory();
-                will(returnValue(deploymentCategory));
                 allowing(mockIsisSession).getPersistenceSession();
                 will(returnValue(mockPersistenceSession));
             }
diff --git a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java
index c438d3a..3c65250 100644
--- a/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java
+++ b/core/viewer-restfulobjects-server/src/test/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java
@@ -18,9 +18,6 @@
  */
 package org.apache.isis.viewer.restfulobjects.server;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -41,7 +38,6 @@ import org.junit.Test;
 import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -52,6 +48,9 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 public abstract class ResourceContext_ensureCompatibleAcceptHeader_ContractTest {
 
     @Rule
@@ -68,10 +67,10 @@ public abstract class ResourceContext_ensureCompatibleAcceptHeader_ContractTest
     @Mock PersistenceSession mockPersistenceSession;
     @Mock SpecificationLoader mockSpecificationLoader;
 
-    DeploymentCategory deploymentCategory;
     @Before
     public void setUp() throws Exception {
-        deploymentCategory = DeploymentCategory.PRODUCTION;
+            
+        // PRODUCTION
         
         _Context.put(IsisSessionFactory.class, mockIsisSessionFactory, false);
 
@@ -94,8 +93,6 @@ public abstract class ResourceContext_ensureCompatibleAcceptHeader_ContractTest
                 will(returnValue(mockAuthenticationSession));
                 allowing(mockIsisSessionFactory).getSpecificationLoader();
                 will(returnValue(mockSpecificationLoader));
-                allowing(mockIsisSessionFactory).getDeploymentCategory();
-                will(returnValue(deploymentCategory));
                 allowing(mockIsisSession).getPersistenceSession();
                 will(returnValue(mockPersistenceSession));
             }
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 32755e9..bda8910 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -76,10 +76,8 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.logging.IsisLoggingConfigurer;
-import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.core.runtime.threadpool.ThreadPoolSupport;
@@ -108,6 +106,8 @@ import org.apache.isis.viewer.wicket.viewer.integration.wicket.ConverterForObjec
 import org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis;
 import org.apache.isis.viewer.wicket.viewer.settings.IsisResourceSettings;
 
+import static java.util.Objects.requireNonNull;
+
 import de.agilecoders.wicket.core.Bootstrap;
 import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapBaseBehavior;
 import de.agilecoders.wicket.core.settings.BootstrapSettings;
@@ -117,7 +117,6 @@ import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchThemeProvid
 import de.agilecoders.wicket.webjars.WicketWebjars;
 import de.agilecoders.wicket.webjars.settings.IWebjarsSettings;
 import de.agilecoders.wicket.webjars.settings.WebjarsSettings;
-import static java.util.Objects.requireNonNull;
 import net.ftlines.wicketsource.WicketSource;
 
 /**
@@ -214,12 +213,6 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi
     @com.google.inject.Inject
     private IsisSessionFactory isisSessionFactory;
 
-    /**
-     * {@link com.google.inject.Inject Inject}ed when {@link #init() initialized}.
-     */
-    @com.google.inject.Inject
-    private DeploymentCategory deploymentCategory;
-
     @com.google.inject.Inject
     private WicketViewerSettings settings;
 
@@ -356,7 +349,7 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi
                 log(mmie.getValidationErrors());
             }
 
-            if(getDeploymentCategory().isPrototyping()) {
+            if(IsisContext.getEnvironment().getDeploymentType().isPrototyping()) {
                 DebugDiskDataStore.register(this);
                 LOG.info("DebugDiskDataStore registered; access via ~/wicket/internal/debug/diskDataStore");
                 LOG.info("DebugDiskDataStore: eg, http://localhost:8080/wicket/wicket/internal/debug/diskDataStore");
@@ -439,9 +432,9 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi
      * app is restarted.
      */
     protected String defaultEncryptionKeyIfNotConfigured() {
-        return getDeploymentCategory().isProduction()
-                ? UUID.randomUUID().toString()
-                        : "PrototypingEncryptionKey";
+        return IsisContext.getEnvironment().getDeploymentType().isPrototyping()
+                ? "PrototypingEncryptionKey"
+                        : UUID.randomUUID().toString();
     }
 
     private void log(final Set<String> validationErrors) {
@@ -473,7 +466,7 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi
     }
 
     protected void configureWicketSourcePlugin() {
-        if(!deploymentCategory.isProduction()) {
+        if(IsisContext.getEnvironment().getDeploymentType().isPrototyping()) {
             WicketSource.configure(this);
         }
     }
@@ -739,7 +732,7 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi
 
     @Override //[ahuber] final on purpose! to switch DeploymentType, do this consistent with IsisContext.
     public final RuntimeConfigurationType getConfigurationType() {
-        return DeploymentType.get().isPrototyping()
+        return IsisContext.getEnvironment().getDeploymentType().isPrototyping()
                 ? RuntimeConfigurationType.DEVELOPMENT
                         : RuntimeConfigurationType.DEPLOYMENT;
     }
@@ -855,10 +848,6 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi
         return isisSessionFactory.getCurrentSession().getAuthenticationSession();
     }
 
-    public DeploymentCategory getDeploymentCategory() {
-        return deploymentCategory;
-    }
-
     @Override
     public WicketViewerSettings getSettings() {
         return settings;
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisInjectModule.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisInjectModule.java
index a96667d..7c64eb5 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisInjectModule.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisInjectModule.java
@@ -31,8 +31,8 @@ import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.factory.InstanceUtil;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.plugins.environment.DeploymentType;
 import org.apache.isis.core.runtime.system.SystemConstants;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
@@ -75,13 +75,13 @@ public class IsisInjectModule extends AbstractModule {
         }
     };
 
-    private final DeploymentCategory deploymentCategory;
+    //private final DeploymentCategory deploymentCategory;
     private final IsisConfigurationDefault isisConfiguration;
 
     public IsisInjectModule(
             final IsisConfigurationDefault isisConfiguration) {
         this.isisConfiguration = isisConfiguration;
-        this.deploymentCategory = IsisContext.getEnvironment().getDeploymentCategory();
+        //this.deploymentCategory = IsisContext.getEnvironment().getDeploymentCategory();
     }
 
     /**
@@ -106,13 +106,10 @@ public class IsisInjectModule extends AbstractModule {
         return isisConfiguration;
     }
 
-    /**
-     * Simply as provided in the constructor.
-     */
     @Provides
     @Singleton
-    protected DeploymentCategory provideDeploymentCategory() {
-        return deploymentCategory;
+    protected DeploymentType provideDeploymentType() {
+        return IsisContext.getEnvironment().getDeploymentType();
     }
 
     @Provides
@@ -127,7 +124,7 @@ public class IsisInjectModule extends AbstractModule {
                 new IsisComponentProviderUsingInstallers(appManifestToUse, isisConfiguration);
 
         final IsisSessionFactoryBuilder builder =
-                new IsisSessionFactoryBuilder(componentProvider, deploymentCategory, componentProvider.getAppManifest());
+                new IsisSessionFactoryBuilder(componentProvider, componentProvider.getAppManifest());
 
         // as a side-effect, if the metamodel turns out to be invalid, then
         // this will push the MetaModelInvalidException into IsisContext.
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index bc7fb45..f80bacd 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -26,11 +26,10 @@ import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import org.apache.isis.commons.internal.collections._Lists;
-
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.base._NullSafe;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -38,7 +37,6 @@ import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -194,8 +192,8 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
             public List<ObjectAdapter> getChoices(
                     final ScalarModel scalarModel,
                     final ObjectAdapter[] argumentsIfAvailable,
-                    final AuthenticationSession authenticationSession,
-                    final DeploymentCategory deploymentCategory) {
+                    final AuthenticationSession authenticationSession) {
+                
                 final PropertyMemento propertyMemento = scalarModel.getPropertyMemento();
                 final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader());
                 ObjectAdapter parentAdapter = scalarModel.getParentEntityModel().load(ConcurrencyChecking.NO_CHECK);
@@ -217,8 +215,8 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
             public List<ObjectAdapter> getAutoComplete(
                     final ScalarModel scalarModel,
                     final String searchArg,
-                    final AuthenticationSession authenticationSession,
-                    final DeploymentCategory deploymentCategory) {
+                    final AuthenticationSession authenticationSession) {
+                
                 final PropertyMemento propertyMemento = scalarModel.getPropertyMemento();
                 final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader());
                 final ObjectAdapter parentAdapter =
@@ -415,8 +413,7 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
             public List<ObjectAdapter> getChoices(
                     final ScalarModel scalarModel,
                     final ObjectAdapter[] argumentsIfAvailable,
-                    final AuthenticationSession authenticationSession,
-                    final DeploymentCategory deploymentCategory) {
+                    final AuthenticationSession authenticationSession) {
                 final ActionParameterMemento parameterMemento = scalarModel.getParameterMemento();
                 final ObjectActionParameter actionParameter = parameterMemento.getActionParameter(scalarModel.getSpecificationLoader());
 
@@ -439,8 +436,7 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
             public List<ObjectAdapter> getAutoComplete(
                     final ScalarModel scalarModel,
                     final String searchArg,
-                    final AuthenticationSession authenticationSession,
-                    final DeploymentCategory deploymentCategory) {
+                    final AuthenticationSession authenticationSession) {
                 final ActionParameterMemento parameterMemento = scalarModel.getParameterMemento();
                 final ObjectActionParameter actionParameter = parameterMemento.getActionParameter(scalarModel.getSpecificationLoader());
 
@@ -604,14 +600,13 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
         public abstract List<ObjectAdapter> getChoices(
                 final ScalarModel scalarModel,
                 final ObjectAdapter[] argumentsIfAvailable,
-                final AuthenticationSession authenticationSession,
-                final DeploymentCategory deploymentCategory);
+                final AuthenticationSession authenticationSession);
 
         public abstract boolean hasAutoComplete(ScalarModel scalarModel);
         public abstract List<ObjectAdapter> getAutoComplete(
                 ScalarModel scalarModel,
                 String searchArg,
-                final AuthenticationSession authenticationSession, final DeploymentCategory deploymentCategory);
+                final AuthenticationSession authenticationSession);
 
         public abstract int getAutoCompleteOrChoicesMinLength(ScalarModel scalarModel);
 
@@ -891,9 +886,8 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
 
     public List<ObjectAdapter> getChoices(
             final ObjectAdapter[] argumentsIfAvailable,
-            final AuthenticationSession authenticationSession,
-            final DeploymentCategory deploymentCategory) {
-        return kind.getChoices(this, argumentsIfAvailable, authenticationSession, deploymentCategory);
+            final AuthenticationSession authenticationSession) {
+        return kind.getChoices(this, argumentsIfAvailable, authenticationSession);
     }
 
     public boolean hasAutoComplete() {
@@ -902,9 +896,8 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
 
     public List<ObjectAdapter> getAutoComplete(
             final String searchTerm,
-            final AuthenticationSession authenticationSession,
-            final DeploymentCategory deploymentCategory) {
-        return kind.getAutoComplete(this, searchTerm, authenticationSession, deploymentCategory);
+            final AuthenticationSession authenticationSession) {
+        return kind.getAutoComplete(this, searchTerm, authenticationSession);
     }
 
     /**
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
index b2e730e..18a6305 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
@@ -25,7 +25,6 @@ import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
@@ -39,8 +38,7 @@ public final class LinkAndLabelUtil {
     private LinkAndLabelUtil(){}
 
     public static List<LinkAndLabel> asActionLinksForAssociation(
-            final ScalarModel scalarModelForAssociation,
-            final DeploymentCategory deploymentCategory) {
+            final ScalarModel scalarModelForAssociation) {
 
         if (scalarModelForAssociation.getKind() != ScalarModel.Kind.PROPERTY) {
             return Collections.emptyList();
@@ -54,7 +52,7 @@ public final class LinkAndLabelUtil {
                 scalarModelForAssociation.getPropertyMemento().getProperty(scalarModelForAssociation.getSpecificationLoader());
 
         final List<ObjectAction> associatedActions =
-                ObjectAction.Util.findForAssociation(parentAdapter, oneToOneAssociation, deploymentCategory);
+                ObjectAction.Util.findForAssociation(parentAdapter, oneToOneAssociation);
 
         return asActionLinksForAdditionalLinksPanel(parentEntityModel, associatedActions,
                 scalarModelForAssociation);
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/AssociatedWithActionsHelper.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/AssociatedWithActionsHelper.java
index 59c27a7..2ea289e 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/AssociatedWithActionsHelper.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/AssociatedWithActionsHelper.java
@@ -27,12 +27,12 @@ import java.util.stream.Stream;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
@@ -59,7 +59,7 @@ public class AssociatedWithActionsHelper implements Serializable {
 
         final ObjectSpecification objectSpec = getObjectSpecification(isisSessionFactory);
 
-        final List<ActionType> actionTypes = inferActionTypes(isisSessionFactory);
+        final List<ActionType> actionTypes = inferActionTypes();
         final Stream<ObjectAction> objectActions = objectSpec.streamObjectActions(actionTypes, Contributed.INCLUDED);
 
         return objectActions
@@ -76,11 +76,10 @@ public class AssociatedWithActionsHelper implements Serializable {
         return parentAdapter.getSpecification();
     }
 
-    private static List<ActionType> inferActionTypes(final IsisSessionFactory isisSessionFactory) {
+    private static List<ActionType> inferActionTypes() {
         final List<ActionType> actionTypes = _Lists.newArrayList();
         actionTypes.add(ActionType.USER);
-        final DeploymentCategory deploymentCategory = isisSessionFactory.getDeploymentCategory();
-        if ( !deploymentCategory.isProduction()) {
+        if ( !IsisContext.getEnvironment().getDeploymentType().isProduction()) {
             actionTypes.add(ActionType.PROTOTYPE);
         }
         return actionTypes;
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
index 9d6999c..4244cf5 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
@@ -79,7 +79,7 @@ BulkActionsProvider {
         final ObjectAdapter adapter = entityModel.load(ConcurrencyChecking.NO_CHECK);
 
         final List<ObjectAction> associatedActions =
-                ObjectAction.Util.findForAssociation(adapter, otma, getDeploymentCategory());
+                ObjectAction.Util.findForAssociation(adapter, otma);
 
         associatedWithActionsHelper = new AssociatedWithActionsHelper(collectionModel);
 
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
index 0ed6bc6..c96f354 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
@@ -56,7 +56,7 @@ class PrototypingMessageProvider {
     private static String getTookTimingMessage() {
         
         final boolean isPrototyping = IsisContext.getEnvironment()
-                .getDeploymentCategory().isPrototyping();
+                .getDeploymentType().isPrototyping();
         
         if(!isPrototyping) {
             return "";
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
index efcf15d..4a04f00 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
@@ -215,7 +215,7 @@ public class PropertyGroup extends PanelAbstract<EntityModel> implements HasDyna
 
         final ObjectAdapter adapter = entityModel.load(ConcurrencyChecking.NO_CHECK);
         final List<ObjectAction> associatedActions =
-                ObjectAction.Util.findForAssociation(adapter, otoa, getDeploymentCategory());
+                ObjectAction.Util.findForAssociation(adapter, otoa);
 
         entityActions.addAll(
                 LinkAndLabelUtil.asActionLinksForAdditionalLinksPanel(entityModel, associatedActions, null));
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
index 594d353..ce9141a 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
@@ -80,7 +80,7 @@ public class EntityHeaderPanel extends PanelAbstract<EntityModel> {
         final ObjectAdapter adapter = model.getObject();
         if (adapter != null) {
             final List<ObjectAction> topLevelActions = ObjectAction.Util
-                    .findTopLevel(adapter, getDeploymentCategory());
+                    .findTopLevel(adapter);
 
             final List<LinkAndLabel> entityActionLinks = LinkAndLabelUtil
                     .asActionLinksForAdditionalLinksPanel(model, topLevelActions, null);
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index d1dd3dd..fe60a97 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -252,7 +252,7 @@ public abstract class ScalarPanelAbstract2 extends PanelAbstract<ScalarModel> im
         scalarTypeContainer.addOrReplace(scalarIfCompact, scalarIfRegular);
 
         List<LinkAndLabel> linkAndLabels =
-                LinkAndLabelUtil.asActionLinksForAssociation(this.scalarModel, getDeploymentCategory());
+                LinkAndLabelUtil.asActionLinksForAssociation(this.scalarModel);
 
         final InlinePromptConfig inlinePromptConfig = getInlinePromptConfig();
         if(inlinePromptConfig.isSupported()) {
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index cd74e66..b0d02a5 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -350,7 +350,7 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract implements PanelW
     private List<ObjectAdapterMemento> obtainChoiceMementos(final ObjectAdapter[] argsIfAvailable) {
         final List<ObjectAdapter> choices = _Lists.newArrayList();
         if(getModel().hasChoices()) {
-            choices.addAll(getModel().getChoices(argsIfAvailable, getAuthenticationSession(), getDeploymentCategory()));
+            choices.addAll(getModel().getChoices(argsIfAvailable, getAuthenticationSession()));
         }
         return _Lists.map(choices, ObjectAdapterMemento.Functions.fromAdapter());
     }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
index 5b53281..4e29455 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
@@ -72,7 +72,7 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract impleme
 
     private List<ObjectAdapterMemento> getChoiceMementos(final ObjectAdapter[] argumentsIfAvailable) {
         final List<ObjectAdapter> choices =
-                scalarModel.getChoices(argumentsIfAvailable, getAuthenticationSession(), getDeploymentCategory());
+                scalarModel.getChoices(argumentsIfAvailable, getAuthenticationSession());
 
         return _Lists.map(choices, ObjectAdapterMemento.Functions.fromAdapter());
     }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
index bd45c7e..61176ae 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
@@ -20,16 +20,15 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
 
-import org.apache.isis.commons.internal.collections._Lists;
-import org.wicketstuff.select2.ChoiceProvider;
 import org.apache.wicket.Session;
 import org.apache.wicket.util.convert.IConverter;
 import org.apache.wicket.util.string.Strings;
+import org.wicketstuff.select2.ChoiceProvider;
 
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -148,9 +147,5 @@ public abstract class ObjectAdapterMementoProviderAbstract extends ChoiceProvide
         return getIsisSessionFactory().getCurrentSession().getAuthenticationSession();
     }
 
-    public DeploymentCategory getDeploymentCategory() {
-        return getIsisSessionFactory().getDeploymentCategory();
-    }
-
 
 }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderForReferenceParamOrPropertyAutoComplete.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderForReferenceParamOrPropertyAutoComplete.java
index 7a27b00..bcfa6aa 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderForReferenceParamOrPropertyAutoComplete.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderForReferenceParamOrPropertyAutoComplete.java
@@ -38,6 +38,8 @@ package org.apache.isis.viewer.wicket.ui.components.widgets.select2.providers;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
@@ -47,12 +49,6 @@ import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import com.google.common.collect.Collections2;
-import org.apache.isis.commons.internal.collections._Lists;
-
 public class ObjectAdapterMementoProviderForReferenceParamOrPropertyAutoComplete
 extends ObjectAdapterMementoProviderAbstract {
 
@@ -68,7 +64,7 @@ extends ObjectAdapterMementoProviderAbstract {
         final List<ObjectAdapter> autoCompleteChoices = _Lists.newArrayList();
         if (getScalarModel().hasAutoComplete()) {
             final List<ObjectAdapter> autoCompleteAdapters =
-                    getScalarModel().getAutoComplete(term, getAuthenticationSession(), getDeploymentCategory());
+                    getScalarModel().getAutoComplete(term, getAuthenticationSession());
             autoCompleteChoices.addAll(autoCompleteAdapters);
         }
         return _Lists.map(autoCompleteChoices, ObjectAdapterMemento.Functions.fromAdapter());
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index 48bc520..a21d695 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -35,7 +35,6 @@ import org.apache.wicket.util.string.Strings;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -206,14 +205,9 @@ public class EntityPage extends PageAbstract {
 
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return getIsisSessionFactory().getDeploymentCategory();
-    }
-
     protected void addWhereAmIIfShown(
             WebMarkupContainer entityPageContainer,
-            WhereAmIModel whereAmIModel)
-    {
+            WhereAmIModel whereAmIModel) {
 
         final WebMarkupContainer whereAmIContainer =
                 new WebMarkupContainer("whereAmI-container");
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
index ee2fd89..1a0ed40 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
@@ -25,7 +25,6 @@ import org.apache.wicket.model.IModel;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -109,10 +108,6 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor {
         return getIsisSessionFactory().getCurrentSession().getAuthenticationSession();
     }
 
-    protected DeploymentCategory getDeploymentCategory() {
-        return getIsisSessionFactory().getDeploymentCategory();
-    }
-
     public SpecificationLoader getSpecificationLoader() {
         return getIsisSessionFactory().getSpecificationLoader();
     }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index 6485fe5..658e2cb 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -26,7 +26,6 @@ import org.apache.wicket.model.IModel;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -159,11 +158,6 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel {
         PanelUtil.addConfirmationDialogIfAreYouSureSemantics(component, semanticsOf, servicesInjector);
     }
 
-    public DeploymentCategory getDeploymentCategory() {
-        return getIsisSessionFactory().getDeploymentCategory();
-    }
-
-
     // ///////////////////////////////////////////////////////////////////
     // Dependencies (from IsisContext)
     // ///////////////////////////////////////////////////////////////////