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 2019/10/29 20:28:17 UTC

[isis] 22/23: ISIS-2158: removing uses of ObjectAdapterProvider

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

commit ec740226b78ef78a6f508eee9e8968ae8df05de5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Oct 29 19:52:18 2019 +0100

    ISIS-2158: removing uses of ObjectAdapterProvider
---
 .../apache/isis/metamodel/MetaModelContext.java    | 24 ++----
 .../isis/metamodel/MetaModelContext_usingIoc.java  |  4 +-
 .../isis/metamodel/facets/CollectionUtils.java     | 10 +--
 ...ctionInvocationFacetForDomainEventAbstract.java | 12 +--
 .../collections/CollectionFacetAbstract.java       |  4 +-
 .../CollectionAccessorFacetViaAccessor.java        |  4 +-
 .../javautilcollection/JavaArrayFacet.java         | 10 ++-
 .../javautilcollection/JavaCollectionFacet.java    | 14 ++--
 .../autocomplete/AutoCompleteFacetAbstract.java    |  9 +-
 .../facets/object/encodeable/EncodableFacet.java   |  3 +-
 .../object/encodeable/EncodableFacetAbstract.java  |  2 +-
 .../encoder/EncodableFacetUsingEncoderDecoder.java |  8 +-
 .../metamodel/facets/object/mixin/MixinFacet.java  |  3 +-
 .../facets/object/mixin/MixinFacetAbstract.java    |  8 +-
 .../object/parseable/ParseableFacetAbstract.java   |  6 +-
 .../parser/ParseableFacetUsingParser.java          | 13 +--
 ...ObjectFacetDeclarativeInitializingAbstract.java | 37 ++++----
 .../annotation/TitleFacetViaTitleAnnotation.java   |  6 +-
 .../ValueSemanticsProviderAndFacetAbstract.java    | 10 ++-
 .../ActionParameterAutoCompleteFacetViaMethod.java |  4 +-
 .../method/ActionChoicesFacetViaMethod.java        |  4 +-
 .../ActionParameterChoicesFacetViaMethod.java      |  4 +-
 .../accessor/PropertyAccessorFacetViaAccessor.java |  2 +-
 .../method/PropertyAutoCompleteFacetMethod.java    |  6 +-
 .../method/PropertyChoicesFacetViaMethod.java      |  2 +-
 ...pertyDefaultFacetDerivedFromDefaultedFacet.java |  2 +-
 .../method/PropertyDefaultFacetViaMethod.java      |  2 +-
 .../DateAndTimeValueSemanticsProviderAbstract.java |  4 +-
 .../ValueSemanticsProviderAbstractTemporal.java    | 12 +--
 .../BooleanPrimitiveValueSemanticsProvider.java    |  3 +-
 .../facets/value/booleans/BooleanValueFacet.java   |  5 --
 .../facets/value/bytes/ByteValueFacet.java         |  7 +-
 .../bytes/ByteValueSemanticsProviderAbstract.java  | 12 +--
 .../chars/CharPrimitiveValueSemanticsProvider.java |  4 +-
 .../facets/value/chars/CharValueFacet.java         |  7 +-
 .../chars/CharValueSemanticsProviderAbstract.java  |  8 +-
 .../facets/value/color/ColorValueFacet.java        |  7 +-
 .../value/color/ColorValueSemanticsProvider.java   | 12 +--
 .../facets/value/date/DateValueFacet.java          |  6 +-
 .../datejdk8local/Jdk8LocalDateValueFacet.java     |  6 +-
 .../Jdk8LocalDateValueSemanticsProvider.java       | 12 +--
 .../datejodalocal/JodaLocalDateValueFacet.java     |  6 +-
 .../JodaLocalDateValueSemanticsProvider.java       |  8 +-
 .../Jdk8LocalDateTimeValueFacet.java               |  6 +-
 .../Jdk8LocalDateTimeValueSemanticsProvider.java   |  8 +-
 .../JodaLocalDateTimeValueFacet.java               |  6 +-
 .../JodaLocalDateTimeValueSemanticsProvider.java   | 12 +--
 .../doubles/DoubleFloatingPointValueFacet.java     |  7 +-
 .../DoublePrimitiveValueSemanticsProvider.java     |  4 +-
 .../DoubleValueSemanticsProviderAbstract.java      | 12 +--
 .../DoubleWrapperValueSemanticsProvider.java       |  3 +-
 .../FloatPrimitiveValueSemanticsProvider.java      |  4 +-
 .../FloatValueSemanticsProviderAbstract.java       | 12 +--
 .../value/floats/FloatingPointValueFacet.java      |  6 +-
 .../value/image/ImageValueSemanticsProvider.java   |  2 +-
 .../JavaAwtImageValueSemanticsProvider.java        |  5 +-
 .../IntPrimitiveValueSemanticsProvider.java        |  4 +-
 .../integer/IntValueSemanticsProviderAbstract.java |  8 +-
 .../facets/value/integer/IntegerValueFacet.java    |  7 +-
 .../localrespath/LocalResourcePathValueFacet.java  |  7 +-
 .../LocalResourcePathValueSemanticsProvider.java   |  8 +-
 .../facets/value/longs/LongValueFacet.java         |  7 +-
 .../longs/LongValueSemanticsProviderAbstract.java  |  8 +-
 .../facets/value/markup/MarkupValueFacet.java      |  7 +-
 .../value/markup/MarkupValueSemanticsProvider.java | 12 +--
 .../facets/value/money/MoneyValueFacet.java        |  8 +-
 .../value/money/MoneyValueSemanticsProvider.java   | 10 +--
 .../facets/value/password/PasswordValueFacet.java  |  8 +-
 .../password/PasswordValueSemanticsProvider.java   | 14 ++--
 .../PercentageValueSemanticsProvider.java          | 10 +--
 .../facets/value/shortint/ShortValueFacet.java     |  7 +-
 .../ShortValueSemanticsProviderAbstract.java       |  8 +-
 .../facets/value/string/StringValueFacet.java      |  7 +-
 .../value/string/StringValueSemanticsProvider.java |  8 +-
 .../metamodel/facets/value/url/URLValueFacet.java  |  7 +-
 .../value/url/URLValueSemanticsProvider.java       |  8 +-
 .../facets/value/uuid/UUIDValueFacet.java          |  7 +-
 .../value/uuid/UUIDValueSemanticsProvider.java     |  8 +-
 .../loader => objectmanager}/ObjectLoader.java     |  4 +-
 .../ObjectLoader_builder.java}                     |  8 +-
 .../ObjectLoader_builtinHandlers.java              |  6 +-
 .../metamodel/objectmanager/ObjectManager.java     | 62 ++++++++++++++
 .../ObjectManager_default.java}                    | 16 ++--
 .../apache/isis/metamodel/spec/ManagedObject.java  | 65 +++++++++-----
 .../specimpl/ObjectActionContributee.java          |  2 +-
 .../specloader/specimpl/ObjectActionDefault.java   |  2 +-
 .../specimpl/ObjectActionParameterAbstract.java    | 14 ++--
 .../ObjectActionParameterContributeeAbstract.java  |  2 +-
 .../specimpl/OneToManyAssociationContributee.java  |  2 +-
 .../specimpl/OneToManyAssociationDefault.java      | 30 ++++---
 .../specimpl/OneToOneAssociationContributee.java   |  5 +-
 .../specimpl/OneToOneAssociationDefault.java       | 24 ++----
 .../metamodel/MetaModelContext_forTesting.java     | 30 +++----
 .../metamodel/facets/AbstractFacetFactoryTest.java |  2 +-
 .../collections/JavaCollectionFacetTest.java       |  2 +-
 .../TitleFacetViaTitleAnnotationTest.java          | 25 +++---
 .../parseable/ParseableFacetUsingParserTest.java   |  2 +-
 .../SpecificationLoaderTestAbstract.java           |  2 +-
 .../runtime/system/ObjectMemberAbstractTest.java   |  2 +-
 .../WrapperFactoryDefaultTest_wrappedObject.java   | 98 +++++++++-------------
 ...FactoryDefaultTest_wrappedObject_transient.java | 29 ++++---
 .../apache/isis/wrapper/WrapperFactoryDefault.java |  3 +-
 .../DelegatingInvocationHandlerDefault.java        |  4 +-
 .../handlers/DomainObjectInvocationHandler.java    | 68 +++++++--------
 .../services/publish/PublishedObjectsDefault.java  |  1 +
 .../webapp/context/IsisWebAppCommonContext.java    |  2 +-
 .../memento/ObjectAdapterMementoDefault.java       | 26 +++---
 .../ObjectAdapterMementoSupport_usingDefault.java  |  2 +-
 .../isis/runtime/memento/StandaloneData.java       |  2 +-
 .../system/context/session/RuntimeContext.java     |  1 -
 .../system/context/session/RuntimeContextBase.java | 14 ++--
 .../ObjectAdapterContext_MementoSupport.java       | 36 ++++----
 .../system/ObjectActionLayoutXmlDefaultTest.java   |  2 +-
 .../system/OneToManyAssociationDefaultTest.java    |  2 +-
 .../models/whereami/WhereAmIModelDefault.java      |  2 +-
 .../ScalarModel_isScalarSubtypingAnyOf_Test.java   |  6 +-
 .../scalars/ScalarPanelTextFieldAbstract.java      | 12 +--
 .../testdomain/auditing/AuditerServiceTest.java    |  4 +-
 .../SpringServiceProvisioningTest.java             |  2 +-
 .../bootstrapping/builtin-domain-services.list     | 27 ++++++
 120 files changed, 688 insertions(+), 559 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext.java
index 09d1d1c..3853853 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext.java
@@ -30,8 +30,7 @@ import org.apache.isis.applib.services.xactn.TransactionState;
 import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.homepage.HomePageAction;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -60,8 +59,8 @@ public interface MetaModelContext {
      */
     IsisConfiguration getConfiguration();
 
-    ObjectAdapterProvider getObjectAdapterProvider();
-
+    ObjectManager getObjectManager();
+    
     ServiceInjector getServiceInjector();
 
     ServiceRegistry getServiceRegistry();
@@ -88,8 +87,6 @@ public interface MetaModelContext {
 
     HomePageAction getHomePageAction();
 
-    ObjectLoader getObjectLoader();
-    
     @Deprecated
     Stream<ObjectAdapter> streamServiceAdapters();
     
@@ -124,11 +121,6 @@ public interface MetaModelContext {
         }
 
         @Override
-        public default ObjectAdapterProvider getObjectAdapterProvider() {
-            return getMetaModelContext().getObjectAdapterProvider();
-        }
-
-        @Override
         public default ServiceInjector getServiceInjector() {
             return getMetaModelContext().getServiceInjector();
         }
@@ -197,12 +189,12 @@ public interface MetaModelContext {
             return getMetaModelContext().getTransactionService();
         }
 
-        @Override
+        @Override @Deprecated
         public default Stream<ObjectAdapter> streamServiceAdapters() {
             return getMetaModelContext().streamServiceAdapters();
         }
 
-        @Override
+        @Override @Deprecated
         default ObjectAdapter lookupServiceAdapterById(String serviceId) {
             return getMetaModelContext().lookupServiceAdapterById(serviceId);
         }
@@ -213,11 +205,13 @@ public interface MetaModelContext {
         }
         
         @Override
-        default ObjectLoader getObjectLoader() {
-            return getObjectLoader();
+        default ObjectManager getObjectManager() {
+            return getMetaModelContext().getObjectManager();
         }
 
     }
+
+    
     
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext_usingIoc.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext_usingIoc.java
index cae7130..8335849 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext_usingIoc.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext_usingIoc.java
@@ -37,7 +37,7 @@ import org.apache.isis.commons.internal.ioc.IocContainer;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.ServiceUtil;
 import org.apache.isis.metamodel.services.homepage.HomePageAction;
 import org.apache.isis.metamodel.services.homepage.HomePageResolverService;
@@ -157,7 +157,7 @@ class MetaModelContext_usingIoc implements MetaModelContext {
     // -- OBJECT LOADING
     
     @Getter(onMethod = @__(@Override))
-    final ObjectLoader objectLoader = ObjectLoader.buildDefault(this);    
+    final ObjectManager objectManager = ObjectManager.of(this);    
 
     
     // -- HELPER
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/CollectionUtils.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/CollectionUtils.java
index 7b91b2e..2832af7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/CollectionUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/CollectionUtils.java
@@ -41,9 +41,9 @@ import org.apache.isis.commons.internal.base._With;
 import org.apache.isis.commons.internal.collections._Arrays;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Sets;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
 public final class CollectionUtils {
@@ -54,9 +54,9 @@ public final class CollectionUtils {
     public static Object[] getCollectionAsObjectArray(
             final Object optionPojo, 
             final ObjectSpecification spec, 
-            final ObjectAdapterProvider adapterProvider) {
+            final ObjectManager objectManger) {
         
-        final ObjectAdapter collection = adapterProvider.adapterFor(optionPojo);
+        final ManagedObject collection = objectManger.adapt(optionPojo);
         final CollectionFacet facet = CollectionFacet.Utils.getCollectionFacetFromSpec(collection);
         
 //        {//TODO[2158] migrate
@@ -66,7 +66,7 @@ public final class CollectionUtils {
 //                    facet, collectionFacet);
 //        }
 
-        final Stream<ObjectAdapter> objectAdapters = 
+        final Stream<ManagedObject> objectAdapters = 
                 CollectionFacet.Utils.streamAdapters(collection);
 
         return objectAdapters
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index b388477..9cd4a37 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -176,7 +176,7 @@ implements ImperativeFacet {
                         "Unable to persist command for action '%s'; CommandService does not support persistent commands ",
                         actionId));
             }
-            returnedAdapter = getObjectAdapterProvider().adapterFor(command);
+            returnedAdapter = getObjectManager().adapt(command);
 
         } else {
             // otherwise, go ahead and execute action in the 'foreground'
@@ -185,7 +185,7 @@ implements ImperativeFacet {
             final Object mixinElseRegularPojo = ManagedObject.unwrapPojo(mixinElseRegularAdapter);
 
             final List<ManagedObject> argumentAdapterList = Arrays.asList(argumentAdapters);
-            final List<Object> argumentPojos = ObjectAdapter.Util.unwrapPojoList(argumentAdapterList);
+            final List<Object> argumentPojos = ManagedObject.unwrapPojoListElseEmpty(argumentAdapterList);
 
             final String targetMember = targetNameFor(owningAction, mixedInAdapter);
             final String targetClass = CommandUtil.targetClassNameFor(mixinElseRegularAdapter);
@@ -300,7 +300,7 @@ implements ImperativeFacet {
 
 
             final Object returnedPojo = priorExecution.getReturned();
-            returnedAdapter = getObjectAdapterProvider().adapterFor(returnedPojo);
+            returnedAdapter = getObjectManager().adapt(returnedPojo);
 
             // sync DTO with result
             getInteractionDtoServiceInternal()
@@ -371,7 +371,7 @@ implements ImperativeFacet {
         // to remove boilerplate from the domain, we automatically clone the returned object if it is a view model.
 
         if (resultPojo != null) {
-            final ManagedObject resultAdapter = getObjectAdapterProvider().adapterFor(resultPojo);
+            final ManagedObject resultAdapter = getObjectManager().adapt(resultPojo);
             return cloneIfViewModelElse(resultAdapter, resultAdapter);
         } else {
             // if void or null, attempt to clone the original target, else return null.
@@ -388,7 +388,7 @@ implements ImperativeFacet {
         final ViewModelFacet viewModelFacet = adapter.getSpecification().getFacet(ViewModelFacet.class);
         final Object clone = viewModelFacet.clone(adapter.getPojo());
 
-        final ManagedObject clonedAdapter = getObjectAdapterProvider().adapterFor(clone);
+        final ManagedObject clonedAdapter = getObjectManager().adapt(clone);
         return clonedAdapter;
     }
 
@@ -461,7 +461,7 @@ implements ImperativeFacet {
                             method.getReturnType());
 
             if (visibleObjects != null) {
-                return getObjectAdapterProvider().adapterFor(visibleObjects);
+                return getObjectManager().adapt(visibleObjects);
             }
 
             // would be null if unable to take a copy (unrecognized return type)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/CollectionFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/CollectionFacetAbstract.java
index de4fe31..48b47cf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/CollectionFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/CollectionFacetAbstract.java
@@ -24,7 +24,9 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
 
-public abstract class CollectionFacetAbstract extends FacetAbstract implements CollectionFacet {
+public abstract class CollectionFacetAbstract 
+extends FacetAbstract 
+implements CollectionFacet {
 
     public CollectionFacetAbstract(final FacetHolder holder) {
         super(CollectionFacet.class, holder, Derivation.NOT_DERIVED);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index ccbc9b1..8344841 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -34,6 +34,8 @@ import org.apache.isis.metamodel.facets.propcoll.accessor.PropertyOrCollectionAc
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
+import lombok.val;
+
 public class CollectionAccessorFacetViaAccessor
 extends PropertyOrCollectionAccessorFacetAbstract
 implements ImperativeFacet {
@@ -71,7 +73,7 @@ implements ImperativeFacet {
             return null;
         }
 
-        final ObjectAdapter collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
+        val collectionAdapter = getObjectManager().adapt(collectionOrArray);
 
         final boolean filterForVisibility = getConfiguration().getReflector().getFacet().isFilterVisibility();
         if(filterForVisibility) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
index 38533fe..c25996b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
@@ -22,8 +22,8 @@ package org.apache.isis.metamodel.facets.collections.javautilcollection;
 import java.util.function.Supplier;
 import java.util.stream.Stream;
 
+import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.collections.CollectionFacetAbstract;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -32,6 +32,8 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
 import static org.apache.isis.commons.internal.base._NullSafe.isEmpty;
 import static org.apache.isis.commons.internal.collections._Arrays.toArray;
 
+import lombok.val;
+
 public class JavaArrayFacet extends CollectionFacetAbstract {
 
     public JavaArrayFacet(final FacetHolder holder) {
@@ -58,11 +60,11 @@ public class JavaArrayFacet extends CollectionFacetAbstract {
             return Stream.of();
         }
 
-        final ObjectAdapterProvider adapterProvider = getObjectAdapterProvider();
+        val objectManager = super.getObjectManager();
 
         return Stream.of(array)
-                .map(adapterProvider::adapterFor) //FIXME[ISIS-1976] we always generate an OA here
-                .map(x->(T)x);
+                .map(objectManager::adapt)
+                .map(x->_Casts.<T>uncheckedCast(x));
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
index 1295a96..f682455 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
@@ -25,12 +25,13 @@ import java.util.stream.Stream;
 
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.collections.CollectionFacetAbstract;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
+import lombok.val;
+
 public class JavaCollectionFacet extends CollectionFacetAbstract {
 
     public JavaCollectionFacet(final FacetHolder holder) {
@@ -58,20 +59,19 @@ public class JavaCollectionFacet extends CollectionFacetAbstract {
     @Override
     public <T extends ManagedObject> Stream<T> stream(T collectionAdapter) {
 
-        final ObjectAdapterProvider adapterProvider = getObjectAdapterProvider();
+        val objectManager = super.getObjectManager();
 
         return pojoCollection(collectionAdapter)
                 .stream()
-                .map(adapterProvider::adapterFor) //FIXME[ISIS-1976] we always generate an OA here
-                .map(x->(T)x);
+                .map(objectManager::adapt)
+                .map(x->_Casts.<T>uncheckedCast(x));
     }
 
     /**
      * The underlying collection of objects (not {@link ObjectAdapter}s).
      */
-    @SuppressWarnings("unchecked")
-    private Collection<? super Object> pojoCollection(final ManagedObject collectionAdapter) {
-        return (Collection<? super Object>) collectionAdapter.getPojo();
+    private Collection<?> pojoCollection(final ManagedObject collectionAdapter) {
+        return (Collection<?>) collectionAdapter.getPojo();
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
index b7bc291..8079138 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
@@ -27,7 +27,6 @@ import java.util.Map;
 import java.util.stream.Stream;
 
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetAbstract;
@@ -37,13 +36,14 @@ import org.apache.isis.metamodel.facets.param.autocomplete.MinLengthUtil;
 import org.apache.isis.metamodel.services.publishing.PublishingServiceInternal;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
-public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements AutoCompleteFacet {
+public abstract class AutoCompleteFacetAbstract 
+extends FacetAbstract 
+implements AutoCompleteFacet {
 
     public static Class<? extends Facet> type() {
         return AutoCompleteFacet.class;
     }
 
-    private final ObjectAdapterProvider adapterProvider;
     private final Class<?> repositoryClass;
     private final Method repositoryMethod;
 
@@ -61,7 +61,6 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
 
         this.repositoryClass = repositoryClass;
         this.repositoryMethod = repositoryMethod;
-        this.adapterProvider = getObjectAdapterProvider();
     }
 
     public Class<?> getRepositoryClass() {
@@ -79,7 +78,7 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
                     @Override
                     public ManagedObject exec() {
                         final Object list = invoke();
-                        return adapterProvider.adapterFor(list);
+                        return getObjectManager().adapt(list);
                     }
 
                     private Object invoke()  {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacet.java
index bc3088c..058a178 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacet.java
@@ -20,7 +20,6 @@
 package org.apache.isis.metamodel.facets.object.encodeable;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facets.MultipleValueFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
@@ -33,7 +32,7 @@ public interface EncodableFacet extends MultipleValueFacet {
      * Equivalent to {@link EncoderDecoder#fromEncodedString(String)}, though
      * may be implemented through some other equivalent mechanism.
      */
-    ObjectAdapter fromEncodedString(String encodedData);
+    ManagedObject fromEncodedString(String encodedData);
 
     /**
      * Equivalent to {@link EncoderDecoder#toEncodedString(Object)}, though may
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
index 1a113b7..8b81eb9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
@@ -74,7 +74,7 @@ public abstract class EncodableFacetAbstract extends FacetAbstract implements En
     }
 
     @Override
-    public ObjectAdapter fromEncodedString(final String encodedData) {
+    public ManagedObject fromEncodedString(final String encodedData) {
         return encodeableFacetUsingEncoderDecoder.fromEncodedString(encodedData);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
index bcf8234..d2ef0f8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
@@ -27,7 +27,9 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
-public class EncodableFacetUsingEncoderDecoder extends FacetAbstract implements EncodableFacet {
+public class EncodableFacetUsingEncoderDecoder
+extends FacetAbstract
+implements EncodableFacet {
 
     private final EncoderDecoder<?> encoderDecoder;
 
@@ -46,14 +48,14 @@ public class EncodableFacetUsingEncoderDecoder extends FacetAbstract implements
     }
 
     @Override
-    public ObjectAdapter fromEncodedString(final String encodedData) {
+    public ManagedObject fromEncodedString(final String encodedData) {
         _Assert.assertNotNull(encodedData);
         if (ENCODED_NULL.equals(encodedData)) {
             return null;
         } else {
             getServiceInjector().injectServicesInto(encoderDecoder);
             final Object decodedObject = encoderDecoder.fromEncodedString(encodedData);
-            return getObjectAdapterProvider().adapterFor(decodedObject);
+            return getObjectManager().adapt(decodedObject);
         }
 
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacet.java
index d376c1f..1c5749f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacet.java
@@ -27,7 +27,6 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Mixin;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facets.SingleValueFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -57,7 +56,7 @@ public interface MixinFacet extends SingleValueFacet<String> {
      * Returns the (adapter of the) domain object that is the <i>holder</i> of the 
      * given mix-in adapter.
      */
-    ObjectAdapter mixedIn(ManagedObject mixinAdapter, Policy policy);
+    ManagedObject mixedIn(ManagedObject mixinAdapter, Policy policy);
 
     /**
      * Returns the mix-in around the provided domain object (<i>holder</i>)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacetAbstract.java
index a19bdda..6fbc5eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacetAbstract.java
@@ -24,7 +24,6 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Map;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.SingleValueFacetAbstract;
@@ -33,7 +32,8 @@ import org.apache.isis.metamodel.spec.ManagedObject;
 import lombok.val;
 
 public abstract class MixinFacetAbstract 
-extends SingleValueFacetAbstract<String> implements MixinFacet {
+extends SingleValueFacetAbstract<String> 
+implements MixinFacet {
 
     private final Class<?> mixinType;
     private final Class<?> constructorType;
@@ -98,11 +98,11 @@ extends SingleValueFacetAbstract<String> implements MixinFacet {
     }
     
     @Override
-    public ObjectAdapter mixedIn(ManagedObject mixinAdapter, Policy policy) {
+    public ManagedObject mixedIn(ManagedObject mixinAdapter, Policy policy) {
         val mixinPojo = mixinAdapter.getPojo();
         val holderPojo = holderPojoFor(mixinPojo, policy);
         return holderPojo!=null
-                ? getObjectAdapterProvider().adapterFor(holderPojo)
+                ? getObjectManager().adapt(holderPojo)
                         : null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetAbstract.java
index 581c195..1ce7dd6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetAbstract.java
@@ -28,7 +28,9 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
-public abstract class ParseableFacetAbstract extends FacetAbstract implements ParseableFacet {
+public abstract class ParseableFacetAbstract 
+extends FacetAbstract 
+implements ParseableFacet {
 
     private final Class<?> parserClass;
 
@@ -74,7 +76,7 @@ public abstract class ParseableFacetAbstract extends FacetAbstract implements Pa
     }
 
     @Override
-    public ObjectAdapter parseTextEntry(
+    public ManagedObject parseTextEntry(
             final ManagedObject original,
             final String entryText,
             final InteractionInitiatedBy interactionInitiatedBy) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
index d4c70f2..ef8f8f6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
@@ -24,7 +24,6 @@ import java.util.IllegalFormatException;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.adapters.ParsingException;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.consent.InteractionResultSet;
 import org.apache.isis.metamodel.facetapi.FacetAbstract;
@@ -39,7 +38,11 @@ import org.apache.isis.metamodel.interactions.ValidityContext;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
-public class ParseableFacetUsingParser extends FacetAbstract implements ParseableFacet {
+import lombok.val;
+
+public class ParseableFacetUsingParser
+extends FacetAbstract
+implements ParseableFacet {
 
     private final Parser<?> parser;
 
@@ -58,7 +61,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
     }
 
     @Override
-    public ObjectAdapter parseTextEntry(
+    public ManagedObject parseTextEntry(
             final ManagedObject contextAdapter,
             final String entry,
             final InteractionInitiatedBy interactionInitiatedBy) {
@@ -70,7 +73,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
         // check string is valid
         // (eg pick up any @RegEx on value type)
         if (getFacetHolder().containsFacet(ValueFacet.class)) {
-            final ObjectAdapter entryAdapter = getObjectAdapterProvider().adapterFor(entry);
+            val entryAdapter = getObjectManager().adapt(entry);
             final Identifier identifier = getIdentified().getIdentifier();
             final ParseValueContext parseValueContext =
                     new ParseValueContext(
@@ -91,7 +94,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
 
             // check resultant object is also valid
             // (eg pick up any validate() methods on it)
-            final ObjectAdapter adapter = getObjectAdapterProvider().adapterFor(parsed);
+            val adapter = getObjectManager().adapt(parsed);
             final ObjectSpecification specification = adapter.getSpecification();
             final ObjectValidityContext validateContext =
                     specification.createValidityInteractionContext(
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index 6c8cc82..cd3ab74 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -29,7 +29,6 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
-import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.Contributed;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
 
@@ -42,6 +41,7 @@ extends RecreatableObjectFacetAbstract {
             final FacetHolder holder,
             final RecreationMechanism recreationMechanism,
             final PostConstructMethodCache postConstructMethodCache) {
+        
         super(holder, recreationMechanism, postConstructMethodCache);
     }
 
@@ -60,12 +60,12 @@ extends RecreatableObjectFacetAbstract {
             return;
         }
 
-        val viewModelAdapter = getObjectAdapterProvider()
-                .adapterForViewModel(viewModelPojo, mementoStr);
+        val objectManager = super.getObjectManager();
+        val spec = objectManager.loadSpec(viewModelPojo);
+        val viewModelAdapter = ManagedObject.of(spec, viewModelPojo); 
 
-        viewModelAdapter.injectServices(getServiceInjector());
-
-        val spec = viewModelAdapter.getSpecification();
+        super.getServiceInjector().injectServicesInto(viewModelPojo);
+        
         val propertiesStream = spec.streamProperties(Contributed.EXCLUDED)
                 .filter(property->mementoKeys.contains(property.getId()));
 
@@ -76,7 +76,7 @@ extends RecreatableObjectFacetAbstract {
             val propertyValue = memento.get(propertyId, propertyType);
 
             if(propertyValue != null) {
-                property.set(viewModelAdapter, getObjectAdapterProvider().adapterFor(propertyValue), InteractionInitiatedBy.FRAMEWORK);
+                property.set(viewModelAdapter, objectManager.adapt(propertyValue), InteractionInitiatedBy.FRAMEWORK);
             }
         });
 
@@ -87,18 +87,17 @@ extends RecreatableObjectFacetAbstract {
 
         final _Mementos.Memento memento = newMemento();
 
-        final ManagedObject ownerAdapter = 
-                /*
-                 * ObjectAdapter that holds the ObjectSpecification used for 
-                 * interrogating the domain object's metadata. 
-                 * 
-                 * Does _not_ perform dependency injection on the domain object. Also bypasses 
-                 * caching (if any), that is each call to this method creates a new unique instance.
-                 */
-                ManagedObject.of(getSpecificationLoader().loadSpecification(viewModelPojo.getClass()), viewModelPojo);
-
-
-        final ObjectSpecification spec = ownerAdapter.getSpecification();
+        val objectManager = super.getObjectManager();
+        val spec = objectManager.loadSpec(viewModelPojo);
+        
+        /*
+         * ManagedObject that holds the ObjectSpecification used for 
+         * interrogating the domain object's metadata. 
+         * 
+         * Does _not_ perform dependency injection on the domain object. Also bypasses 
+         * caching (if any), that is each call to this method creates a new instance.
+         */
+        val ownerAdapter = ManagedObject.of(spec, viewModelPojo);
 
         final Stream<OneToOneAssociation> properties = spec.streamProperties(Contributed.EXCLUDED);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
index 2c27489..5b5ff5b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
@@ -122,8 +122,8 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
 
     @Override
     public String title(ManagedObject contextAdapter, ManagedObject targetAdapter) {
-        final StringBuilder stringBuilder = new StringBuilder();
-        final ObjectAdapterProvider adapterProvider = getObjectAdapterProvider();
+        val stringBuilder = new StringBuilder();
+        val objectManager = getObjectManager();
 
         try {
             for (final TitleComponent component : this.components) {
@@ -132,7 +132,7 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
                     continue;
                 }
                 // ignore context, if provided
-                final ObjectAdapter titlePartAdapter = adapterProvider.adapterFor(titlePart);
+                val titlePartAdapter = objectManager.adapt(titlePart);
                 if(Objects.equals(contextAdapter, titlePartAdapter)) {
                     continue;
                 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index c695bd3..5ad6233 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -32,16 +32,18 @@ import org.apache.isis.applib.adapters.ValueSemanticsProvider;
 import org.apache.isis.applib.clock.Clock;
 import org.apache.isis.commons.exceptions.UnknownTypeException;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.commons.LocaleUtil;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.InvalidEntryException;
 import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
-public abstract class ValueSemanticsProviderAndFacetAbstract<T> extends FacetAbstract implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProvider<T> {
+public abstract class ValueSemanticsProviderAndFacetAbstract<T> 
+extends FacetAbstract 
+implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProvider<T> {
 
     private final Class<T> adaptedClass;
     private final int typicalLength;
@@ -300,10 +302,10 @@ public abstract class ValueSemanticsProviderAndFacetAbstract<T> extends FacetAbs
     // Helper: createAdapter
     // //////////////////////////////////////////////////////////
 
-    protected ObjectAdapter createAdapter(final Class<?> type, final Object object) {
+    protected ManagedObject createAdapter(final Class<?> type, final Object object) {
         final ObjectSpecification specification = getSpecificationLoader().loadSpecification(type);
         if (specification.isNotCollection()) {
-            return getObjectAdapterProvider().adapterFor(object);
+            return getObjectManager().adapt(object);
         } else {
             throw new UnknownTypeException("not an object, is this a collection?");
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index 86066cc..6396d95 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -84,7 +84,7 @@ extends ActionParameterAutoCompleteFacetAbstract implements ImperativeFacet {
         if (collectionOrArray == null) {
             return _Constants.emptyObjects;
         }
-        final ManagedObject collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
+        final ManagedObject collectionAdapter = getObjectManager().adapt(collectionOrArray);
 
         final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
         final Class<?> parameterType = facetedMethodParameter.getType();
@@ -97,7 +97,7 @@ extends ActionParameterAutoCompleteFacetAbstract implements ImperativeFacet {
                 _Lists.map(visibleAdapters, ManagedObject::unwrapPojo);
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
-        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
index 9f3c518..95ac7ed 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
@@ -96,7 +96,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
             return null;
         }
 
-        final ManagedObject collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
+        final ManagedObject collectionAdapter = getObjectManager().adapt(collectionOrArray);
 
         final List<ManagedObject> visibleAdapters =
                 ObjectAdapter.Util.visibleAdapters(
@@ -106,7 +106,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
                 _Lists.map(visibleAdapters, ManagedObject::unwrapPojo);
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
-        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, parameterSpec, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, parameterSpec, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index 33bdd42..3c27d83 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -76,7 +76,7 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
         if (choices == null) {
             return _Constants.emptyObjects;
         }
-        final ManagedObject objectAdapter = getObjectAdapterProvider().adapterFor(choices);
+        final ManagedObject objectAdapter = getObjectManager().adapt(choices);
         final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
         final Class<?> parameterType = facetedMethodParameter.getType();
 
@@ -88,7 +88,7 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
                 _Lists.map(visibleAdapters, ManagedObject::unwrapPojo);
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
-        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index 667fd19..c705b4b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -74,7 +74,7 @@ implements ImperativeFacet {
 
         boolean filterForVisibility = super.getMetaModelContext().getConfiguration().getReflector().getFacet().isFilterVisibility();
         if(filterForVisibility) {
-            final ObjectAdapter referencedAdapter = getObjectAdapterProvider().adapterFor(referencedObject);
+            final ManagedObject referencedAdapter = getObjectManager().adapt(referencedObject);
             final boolean visible = ManagedObject.Visibility
                     .isVisible(referencedAdapter, interactionInitiatedBy);
             if (!visible) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
index a3fc20a..8632d00 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
@@ -36,6 +36,8 @@ import org.apache.isis.metamodel.facets.properties.autocomplete.PropertyAutoComp
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
+import lombok.val;
+
 public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAbstract implements ImperativeFacet {
 
     private final Method method;
@@ -82,7 +84,7 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
             return null;
         }
 
-        final ObjectAdapter collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
+        val collectionAdapter = getObjectManager().adapt(collectionOrArray);
 
         final FacetedMethod facetedMethod = (FacetedMethod) getFacetHolder();
         final Class<?> propertyType = facetedMethod.getType();
@@ -95,7 +97,7 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
                 _Lists.map(visibleAdapters, ManagedObject::unwrapPojo);
 
         final ObjectSpecification propertySpec = getSpecification(propertyType);
-        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, propertySpec, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, propertySpec, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
index 2e67ed8..5dd1047 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
@@ -76,7 +76,7 @@ public class PropertyChoicesFacetViaMethod extends PropertyChoicesFacetAbstract
             return ObjectExtensions.asArray(options);
         }
         final ObjectSpecification specification = getSpecificationLoader().loadSpecification(choicesClass);
-        return CollectionUtils.getCollectionAsObjectArray(options, specification, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(options, specification, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java
index ec1b108..0f0938c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java
@@ -47,7 +47,7 @@ public class PropertyDefaultFacetDerivedFromDefaultedFacet extends FacetAbstract
         if (typeFacetDefault == null) {
             return null;
         }
-        return getObjectAdapterProvider().adapterFor(typeFacetDefault);
+        return getObjectManager().adapt(typeFacetDefault);
     }
 
     @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
index 4fd00d5..1900981 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
@@ -70,7 +70,7 @@ public class PropertyDefaultFacetViaMethod extends PropertyDefaultFacetAbstract
     private ManagedObject createAdapter(final Class<?> type, final Object object) {
         val specification = getSpecificationLoader().loadSpecification(type);
         if (specification.isNotCollection()) {
-            return getObjectAdapterProvider().adapterFor(object);
+            return getObjectManager().adapt(object);
         } else {
             throw new UnknownTypeException("not an object, is this a collection?");
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
index 6de808a..d4ba883 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
@@ -30,8 +30,8 @@ import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 
-
-public abstract class DateAndTimeValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
+public abstract class DateAndTimeValueSemanticsProviderAbstract<T> 
+extends ValueSemanticsProviderAbstractTemporal<T> {
 
     private static Map<String, DateFormat> formats = _Maps.newHashMap();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index 6fac59a..14a780f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -34,14 +34,16 @@ import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.metamodel.facets.value.date.DateValueFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
-public abstract class ValueSemanticsProviderAbstractTemporal<T> extends ValueSemanticsProviderAndFacetAbstract<T> implements DateValueFacet {
+public abstract class ValueSemanticsProviderAbstractTemporal<T> 
+extends ValueSemanticsProviderAndFacetAbstract<T> 
+implements DateValueFacet {
 
     /**
      * Introduced to allow BDD tests to provide a different format string
@@ -320,13 +322,13 @@ public abstract class ValueSemanticsProviderAbstractTemporal<T> extends ValueSem
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final Date dateValue(final ObjectAdapter object) {
+    public final Date dateValue(final ManagedObject object) {
         return object == null ? null : dateValue(object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final Date date) {
-        return getObjectAdapterProvider().adapterFor(setDate(date));
+    public final ManagedObject createValue(final Date date) {
+        return getObjectManager().adapt(setDate(date));
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
index 706bc68..ff6ae62 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.value.booleans;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -48,7 +47,7 @@ public class BooleanPrimitiveValueSemanticsProvider extends BooleanValueSemantic
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public ObjectAdapter getDefault(final ManagedObject inObject) {
+    public ManagedObject getDefault(final ManagedObject inObject) {
         return createAdapter(boolean.class, Boolean.FALSE);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanValueFacet.java
index 16d69d6..7f1eedb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanValueFacet.java
@@ -26,9 +26,4 @@ public interface BooleanValueFacet extends Facet {
 
     boolean isSet(ManagedObject object);
 
-    //    void set(ObjectAdapter object);
-    //
-    //    void reset(ObjectAdapter object);
-    //
-    //    void toggle(ObjectAdapter object);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueFacet.java
index 640e58c..e543a8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.bytes;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface ByteValueFacet extends Facet {
-    Byte byteValue(ObjectAdapter object);
+    
+    Byte byteValue(ManagedObject object);
 
-    ObjectAdapter createValue(Byte value);
+    ManagedObject createValue(Byte value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
index a0d71cd..9f257ec 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
@@ -25,13 +25,15 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
-public abstract class ByteValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Byte> implements ByteValueFacet {
+public abstract class ByteValueSemanticsProviderAbstract 
+extends ValueSemanticsProviderAndFacetAbstract<Byte> 
+implements ByteValueFacet {
 
     private static Class<? extends Facet> type() {
         return ByteValueFacet.class;
@@ -90,13 +92,13 @@ public abstract class ByteValueSemanticsProviderAbstract extends ValueSemanticsP
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Byte byteValue(final ObjectAdapter object) {
+    public Byte byteValue(final ManagedObject object) {
         return (Byte) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final Byte value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Byte value) {
+        return getObjectManager().adapt(value);
     }
 
     // ///// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharPrimitiveValueSemanticsProvider.java
index 00bfe5d..66ea3a5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharPrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharPrimitiveValueSemanticsProvider.java
@@ -26,7 +26,9 @@ import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet
 import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class CharPrimitiveValueSemanticsProvider extends CharValueSemanticsProviderAbstract implements PropertyDefaultFacet {
+public class CharPrimitiveValueSemanticsProvider
+extends CharValueSemanticsProviderAbstract 
+implements PropertyDefaultFacet {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueFacet.java
index 0812cce..d815beb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.chars;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface CharValueFacet extends Facet {
-    Character charValue(ObjectAdapter object);
+    
+    Character charValue(ManagedObject object);
 
-    ObjectAdapter createValue(Character value);
+    ManagedObject createValue(Character value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
index 6edc620..f8d475e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
@@ -21,11 +21,11 @@ package org.apache.isis.metamodel.facets.value.chars;
 
 import java.text.DecimalFormat;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.InvalidEntryException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public abstract class CharValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Character> implements CharValueFacet {
@@ -84,13 +84,13 @@ public abstract class CharValueSemanticsProviderAbstract extends ValueSemanticsP
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Character charValue(final ObjectAdapter object) {
+    public Character charValue(final ManagedObject object) {
         return object == null ? null : (Character) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final Character value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Character value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
index 2600da4..825f0d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.color;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface ColorValueFacet extends Facet {
-    int colorValue(ObjectAdapter object);
+    
+    int colorValue(ManagedObject object);
 
-    ObjectAdapter createValue(ObjectAdapter object, int color);
+    ManagedObject createValue(ManagedObject object, int color);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueSemanticsProvider.java
index 4303c7b..1e6972a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueSemanticsProvider.java
@@ -24,14 +24,16 @@ import java.text.DecimalFormat;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Color;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class ColorValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Color> implements ColorValueFacet {
+public class ColorValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<Color> 
+implements ColorValueFacet {
 
     public static Class<? extends Facet> type() {
         return ColorValueFacet.class;
@@ -103,7 +105,7 @@ public class ColorValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public int colorValue(final ObjectAdapter object) {
+    public int colorValue(final ManagedObject object) {
         if (object == null) {
             return 0;
         }
@@ -112,9 +114,9 @@ public class ColorValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     }
 
     @Override
-    public ObjectAdapter createValue(final ObjectAdapter object, final int colorAsInt) {
+    public ManagedObject createValue(final ManagedObject object, final int colorAsInt) {
         final Color color = new Color(colorAsInt);
-        return getObjectAdapterProvider().adapterFor(color);
+        return getObjectManager().adapt(color);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/date/DateValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/date/DateValueFacet.java
index a396a4a..ca9f83c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/date/DateValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/date/DateValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.date;
 
 import java.util.Date;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface DateValueFacet extends Facet {
 
-    Date dateValue(ObjectAdapter object);
+    Date dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(Date date);
+    ManagedObject createValue(Date date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueFacet.java
index 280f692..8233e95 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.datejdk8local;
 
 import java.time.LocalDate;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface Jdk8LocalDateValueFacet extends Facet {
 
-    LocalDate dateValue(ObjectAdapter object);
+    LocalDate dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalDate date);
+    ManagedObject createValue(LocalDate date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java
index 6daf1ea..48b3dfb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java
@@ -29,18 +29,20 @@ import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.metamodel.facets.value.datejodalocal.JodaLocalDateValueFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 import static org.apache.isis.metamodel.facets.value.datejdk8local.Jdk8LocalDateUtil.formatterOf;
 import static org.apache.isis.metamodel.facets.value.datejdk8local.Jdk8LocalDateUtil.formatterOfStyle;
 import static org.apache.isis.metamodel.facets.value.datejdk8local.Jdk8LocalDateUtil.parserOf;
 import static org.apache.isis.metamodel.facets.value.datejdk8local.Jdk8LocalDateUtil.parserOfStyle;
 
-public class Jdk8LocalDateValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<LocalDate> implements Jdk8LocalDateValueFacet {
+public class Jdk8LocalDateValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<LocalDate>
+implements Jdk8LocalDateValueFacet {
 
     public static final int MAX_LENGTH = 12;
     public static final int TYPICAL_LENGTH = MAX_LENGTH;
@@ -235,13 +237,13 @@ public class Jdk8LocalDateValueSemanticsProvider extends ValueSemanticsProviderA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final LocalDate dateValue(final ObjectAdapter object) {
+    public final LocalDate dateValue(final ManagedObject object) {
         return (LocalDate) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final LocalDate date) {
-        return getObjectAdapterProvider().adapterFor(date);
+    public final ManagedObject createValue(final LocalDate date) {
+        return getObjectManager().adapt(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueFacet.java
index 2573dc7..b36f95b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.datejodalocal;
 
 import org.joda.time.LocalDate;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface JodaLocalDateValueFacet extends Facet {
 
-    LocalDate dateValue(ObjectAdapter object);
+    LocalDate dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalDate date);
+    ManagedObject createValue(LocalDate date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
index 14bc421..d46833a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
@@ -33,10 +33,10 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public class JodaLocalDateValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<LocalDate> implements JodaLocalDateValueFacet {
@@ -237,13 +237,13 @@ public class JodaLocalDateValueSemanticsProvider extends ValueSemanticsProviderA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final LocalDate dateValue(final ObjectAdapter object) {
+    public final LocalDate dateValue(final ManagedObject object) {
         return (LocalDate) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final LocalDate date) {
-        return getObjectAdapterProvider().adapterFor(date);
+    public final ManagedObject createValue(final LocalDate date) {
+        return getObjectManager().adapt(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueFacet.java
index 83decf2..f7b2216 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.datetimejdk8local;
 
 import java.time.LocalDateTime;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface Jdk8LocalDateTimeValueFacet extends Facet {
 
-    LocalDateTime dateValue(ObjectAdapter object);
+    LocalDateTime dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalDateTime date);
+    ManagedObject createValue(LocalDateTime date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java
index e6f8d2a..d24a7d3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java
@@ -32,10 +32,10 @@ import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 import static org.apache.isis.metamodel.facets.value.datetimejdk8local.Jdk8LocalDateTimeUtil.formatterOf;
 import static org.apache.isis.metamodel.facets.value.datetimejdk8local.Jdk8LocalDateTimeUtil.parserOf;
@@ -255,13 +255,13 @@ public class Jdk8LocalDateTimeValueSemanticsProvider extends ValueSemanticsProvi
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final LocalDateTime dateValue(final ObjectAdapter object) {
+    public final LocalDateTime dateValue(final ManagedObject object) {
         return (LocalDateTime) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final LocalDateTime date) {
-        return getObjectAdapterProvider().adapterFor(date);
+    public final ManagedObject createValue(final LocalDateTime date) {
+        return getObjectManager().adapt(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueFacet.java
index 3e8db54..695e197 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.datetimejodalocal;
 
 import org.joda.time.LocalDateTime;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface JodaLocalDateTimeValueFacet extends Facet {
 
-    LocalDateTime dateValue(ObjectAdapter object);
+    LocalDateTime dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalDateTime date);
+    ManagedObject createValue(LocalDateTime date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
index df45563..e1d4202 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
@@ -34,13 +34,15 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class JodaLocalDateTimeValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<LocalDateTime> implements JodaLocalDateTimeValueFacet {
+public class JodaLocalDateTimeValueSemanticsProvider 
+extends ValueSemanticsProviderAndFacetAbstract<LocalDateTime> 
+implements JodaLocalDateTimeValueFacet {
 
     public static final int MAX_LENGTH = 36;
     public static final int TYPICAL_LENGTH = 22;
@@ -237,13 +239,13 @@ public class JodaLocalDateTimeValueSemanticsProvider extends ValueSemanticsProvi
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final LocalDateTime dateValue(final ObjectAdapter object) {
+    public final LocalDateTime dateValue(final ManagedObject object) {
         return (LocalDateTime) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final LocalDateTime date) {
-        return getObjectAdapterProvider().adapterFor(date);
+    public final ManagedObject createValue(final LocalDateTime date) {
+        return getObjectManager().adapt(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleFloatingPointValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleFloatingPointValueFacet.java
index 717e7a6..e9b898d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleFloatingPointValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleFloatingPointValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.doubles;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface DoubleFloatingPointValueFacet extends Facet {
-    Double doubleValue(ObjectAdapter object);
+    
+    Double doubleValue(ManagedObject object);
 
-    ObjectAdapter createValue(Double value);
+    ManagedObject createValue(Double value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoublePrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoublePrimitiveValueSemanticsProvider.java
index a044cde..e012cdb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoublePrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoublePrimitiveValueSemanticsProvider.java
@@ -26,7 +26,9 @@ import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet
 import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class DoublePrimitiveValueSemanticsProvider extends DoubleValueSemanticsProviderAbstract implements PropertyDefaultFacet {
+public class DoublePrimitiveValueSemanticsProvider
+extends DoubleValueSemanticsProviderAbstract
+implements PropertyDefaultFacet {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
index e7e3620..c809144 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
@@ -25,14 +25,16 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public abstract class DoubleValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Double> implements DoubleFloatingPointValueFacet {
+public abstract class DoubleValueSemanticsProviderAbstract 
+extends ValueSemanticsProviderAndFacetAbstract<Double> 
+implements DoubleFloatingPointValueFacet {
 
     private static Class<? extends Facet> type() {
         return DoubleFloatingPointValueFacet.class;
@@ -95,13 +97,13 @@ public abstract class DoubleValueSemanticsProviderAbstract extends ValueSemantic
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Double doubleValue(final ObjectAdapter object) {
+    public Double doubleValue(final ManagedObject object) {
         return (Double) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public ObjectAdapter createValue(final Double value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Double value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleWrapperValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleWrapperValueSemanticsProvider.java
index 7e433d4..8b10f92 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleWrapperValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleWrapperValueSemanticsProvider.java
@@ -24,7 +24,8 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 
 
-public class DoubleWrapperValueSemanticsProvider extends DoubleValueSemanticsProviderAbstract {
+public class DoubleWrapperValueSemanticsProvider 
+extends DoubleValueSemanticsProviderAbstract {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatPrimitiveValueSemanticsProvider.java
index bc5f05f..32bd200 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatPrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatPrimitiveValueSemanticsProvider.java
@@ -26,7 +26,9 @@ import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet
 import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class FloatPrimitiveValueSemanticsProvider extends FloatValueSemanticsProviderAbstract implements PropertyDefaultFacet {
+public class FloatPrimitiveValueSemanticsProvider
+extends FloatValueSemanticsProviderAbstract
+implements PropertyDefaultFacet {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
index 2bf6349..e06229a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
@@ -25,14 +25,16 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class FloatValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Float> implements FloatingPointValueFacet {
+public class FloatValueSemanticsProviderAbstract
+extends ValueSemanticsProviderAndFacetAbstract<Float>
+implements FloatingPointValueFacet {
 
     public static Class<? extends Facet> type() {
         return FloatingPointValueFacet.class;
@@ -91,13 +93,13 @@ public class FloatValueSemanticsProviderAbstract extends ValueSemanticsProviderA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Float floatValue(final ObjectAdapter object) {
+    public Float floatValue(final ManagedObject object) {
         return object == null ? null : (Float) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final Float value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Float value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatingPointValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatingPointValueFacet.java
index 6f3c2b0..e0cc89e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatingPointValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatingPointValueFacet.java
@@ -19,12 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.floats;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface FloatingPointValueFacet extends Facet {
 
-    Float floatValue(ObjectAdapter object);
+    Float floatValue(ManagedObject object);
 
-    ObjectAdapter createValue(Float value);
+    ManagedObject createValue(Float value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/image/ImageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/image/ImageValueSemanticsProvider.java
index c954346..7e68a4a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/image/ImageValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/image/ImageValueSemanticsProvider.java
@@ -94,7 +94,7 @@ public class ImageValueSemanticsProvider extends ImageValueSemanticsProviderAbst
 
     @Override
     public ManagedObject createValue(final java.awt.Image image) {
-        return getObjectAdapterProvider().adapterFor(new Image(grabPixels(image)));
+        return getObjectManager().adapt(new Image(grabPixels(image)));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java
index 4724cef..120585a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java
@@ -25,7 +25,8 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.value.image.ImageValueSemanticsProviderAbstract;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
-public class JavaAwtImageValueSemanticsProvider extends ImageValueSemanticsProviderAbstract<Image> {
+public class JavaAwtImageValueSemanticsProvider 
+extends ImageValueSemanticsProviderAbstract<Image> {
 
     public JavaAwtImageValueSemanticsProvider(final FacetHolder holder) {
         super(holder, Image.class);
@@ -76,7 +77,7 @@ public class JavaAwtImageValueSemanticsProvider extends ImageValueSemanticsProvi
 
     @Override
     public ManagedObject createValue(final Image image) {
-        return getObjectAdapterProvider().adapterFor(image);
+        return getObjectManager().adapt(image);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntPrimitiveValueSemanticsProvider.java
index b0a3932..fade969 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntPrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntPrimitiveValueSemanticsProvider.java
@@ -26,7 +26,9 @@ import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet
 import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class IntPrimitiveValueSemanticsProvider extends IntValueSemanticsProviderAbstract implements PropertyDefaultFacet {
+public class IntPrimitiveValueSemanticsProvider
+extends IntValueSemanticsProviderAbstract
+implements PropertyDefaultFacet {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
index 7cb1765..108c282 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
@@ -25,11 +25,11 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Integer> implements IntegerValueFacet {
@@ -91,13 +91,13 @@ public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsPr
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Integer integerValue(final ObjectAdapter object) {
+    public Integer integerValue(final ManagedObject object) {
         return (Integer) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public ObjectAdapter createValue(final Integer value) {
-        return value == null ? null : getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Integer value) {
+        return value == null ? null : getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntegerValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntegerValueFacet.java
index 80a8c02..f6c18a9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntegerValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntegerValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.integer;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface IntegerValueFacet extends Facet {
-    Integer integerValue(ObjectAdapter object);
+    
+    Integer integerValue(ManagedObject object);
 
-    ObjectAdapter createValue(Integer value);
+    ManagedObject createValue(Integer value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueFacet.java
index 85682f5..e827fd0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueFacet.java
@@ -20,12 +20,13 @@
 package org.apache.isis.metamodel.facets.value.localrespath;
 
 import org.apache.isis.applib.value.LocalResourcePath;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface LocalResourcePathValueFacet extends Facet {
-    LocalResourcePath localResourcePathValue(ObjectAdapter object);
+    
+    LocalResourcePath localResourcePathValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalResourcePath value);
+    ManagedObject createValue(LocalResourcePath value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
index 0942670..dce612a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
@@ -24,10 +24,10 @@ import java.nio.file.InvalidPathException;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.LocalResourcePath;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class LocalResourcePathValueSemanticsProvider
 extends ValueSemanticsProviderAndFacetAbstract<LocalResourcePath> implements LocalResourcePathValueFacet {
@@ -111,13 +111,13 @@ extends ValueSemanticsProviderAndFacetAbstract<LocalResourcePath> implements Loc
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public LocalResourcePath localResourcePathValue(final ObjectAdapter object) {
+    public LocalResourcePath localResourcePathValue(final ManagedObject object) {
         return object == null ? null : (LocalResourcePath) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final LocalResourcePath value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final LocalResourcePath value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueFacet.java
index c6f4146..f03b5b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.longs;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface LongValueFacet extends Facet {
-    Long longValue(ObjectAdapter object);
+    
+    Long longValue(ManagedObject object);
 
-    ObjectAdapter createValue(Long value);
+    ManagedObject createValue(Long value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
index 4c6480a..2bed55d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
@@ -25,11 +25,11 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public abstract class LongValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Long> implements LongValueFacet {
@@ -91,13 +91,13 @@ public abstract class LongValueSemanticsProviderAbstract extends ValueSemanticsP
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Long longValue(final ObjectAdapter object) {
+    public Long longValue(final ManagedObject object) {
         return (Long) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public ObjectAdapter createValue(final Long value) {
-        return value == null ? null : getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Long value) {
+        return value == null ? null : getObjectManager().adapt(value);
     }
 
     // // ///// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueFacet.java
index 6998b37..e046970 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.markup;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface MarkupValueFacet extends Facet {
-    String markupValue(ObjectAdapter object);
-    ObjectAdapter createValue(ObjectAdapter object, String html);
+    
+    String markupValue(ManagedObject object);
+    ManagedObject createValue(ManagedObject object, String html);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java
index 197698e..bf80165 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java
@@ -22,12 +22,14 @@ package org.apache.isis.metamodel.facets.value.markup;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Markup;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
-public class MarkupValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Markup> implements MarkupValueFacet {
+public class MarkupValueSemanticsProvider 
+extends ValueSemanticsProviderAndFacetAbstract<Markup> 
+implements MarkupValueFacet {
 
     private static final int TYPICAL_LENGTH = 0;
 
@@ -73,7 +75,7 @@ public class MarkupValueSemanticsProvider extends ValueSemanticsProviderAndFacet
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public String markupValue(final ObjectAdapter object) {
+    public String markupValue(final ManagedObject object) {
         if (object == null) {
             return "";
         }
@@ -82,9 +84,9 @@ public class MarkupValueSemanticsProvider extends ValueSemanticsProviderAndFacet
     }
 
     @Override
-    public ObjectAdapter createValue(final ObjectAdapter object, final String html) {
+    public ManagedObject createValue(final ManagedObject object, final String html) {
         final Markup markup = new Markup(html);
-        return getObjectAdapterProvider().adapterFor(markup);
+        return getObjectManager().adapt(markup);
     }
 
     // //////////////////////////////////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueFacet.java
index d983043..b4dea41 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueFacet.java
@@ -19,15 +19,15 @@
 
 package org.apache.isis.metamodel.facets.value.money;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface MoneyValueFacet extends Facet {
 
-    float getAmount(ObjectAdapter object);
+    float getAmount(ManagedObject object);
 
-    String getCurrencyCode(ObjectAdapter object);
+    String getCurrencyCode(ManagedObject object);
 
-    ObjectAdapter createValue(float amount, String currencyCode);
+    ManagedObject createValue(float amount, String currencyCode);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
index 5d23be2..ea51750 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
@@ -28,12 +28,12 @@ import java.util.Map;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Money;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class MoneyValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Money> implements MoneyValueFacet {
 
@@ -190,7 +190,7 @@ public class MoneyValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public float getAmount(final ObjectAdapter object) {
+    public float getAmount(final ManagedObject object) {
         final Money money = (Money) object.getPojo();
         if (money == null) {
             return 0.0f;
@@ -200,7 +200,7 @@ public class MoneyValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     }
 
     @Override
-    public String getCurrencyCode(final ObjectAdapter object) {
+    public String getCurrencyCode(final ManagedObject object) {
         final Money money = (Money) object.getPojo();
         if (money == null) {
             return "";
@@ -210,8 +210,8 @@ public class MoneyValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     }
 
     @Override
-    public ObjectAdapter createValue(final float amount, final String currencyCode) {
-        return getObjectAdapterProvider().adapterFor(new Money(amount, currencyCode));
+    public ManagedObject createValue(final float amount, final String currencyCode) {
+        return getObjectManager().adapt(new Money(amount, currencyCode));
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueFacet.java
index b6ca1df..229f29f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueFacet.java
@@ -19,15 +19,15 @@
 
 package org.apache.isis.metamodel.facets.value.password;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface PasswordValueFacet extends Facet {
 
-    boolean checkPassword(ObjectAdapter object, String password);
+    boolean checkPassword(ManagedObject object, String password);
 
-    String getEditText(ObjectAdapter object);
+    String getEditText(ManagedObject object);
 
-    ObjectAdapter createValue(String value);
+    ManagedObject createValue(String value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
index 982840b..bef8682 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
@@ -22,10 +22,10 @@ package org.apache.isis.metamodel.facets.value.password;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Password;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public class PasswordValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Password> implements
@@ -87,23 +87,23 @@ PasswordValueFacet {
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public boolean checkPassword(final ObjectAdapter object, final String password) {
+    public boolean checkPassword(final ManagedObject object, final String password) {
         return password(object.getPojo()).checkPassword(password);
     }
 
     @Override
-    public String getEditText(final ObjectAdapter object) {
+    public String getEditText(final ManagedObject object) {
         return object == null ? "" : password(object).getPassword();
     }
 
     @Override
-    public ObjectAdapter createValue(final String password) {
-        return getObjectAdapterProvider().adapterFor(new Password(password));
+    public ManagedObject createValue(final String password) {
+        return getObjectManager().adapt(new Password(password));
     }
 
     private Password password(final Object object) {
-        if (object instanceof ObjectAdapter) {
-            return (Password) ((ObjectAdapter) object).getPojo();
+        if (object instanceof ManagedObject) {
+            return (Password) ((ManagedObject) object).getPojo();
         } else {
             return (Password) object;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
index cd399c0..cdb42af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
@@ -27,12 +27,12 @@ import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Percentage;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.metamodel.facets.value.floats.FloatingPointValueFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class PercentageValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Percentage> implements FloatingPointValueFacet {
 
@@ -124,21 +124,21 @@ public class PercentageValueSemanticsProvider extends ValueSemanticsProviderAndF
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Float floatValue(final ObjectAdapter object) {
+    public Float floatValue(final ManagedObject object) {
         final Percentage per = (Percentage) object.getPojo();
         return new Float(per.floatValue());
     }
 
     @Override
-    public ObjectAdapter createValue(final Float value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Float value) {
+        return getObjectManager().adapt(value);
     }
 
     // //////////////////////////////////////////////////////////////////
     // PropertyDefaultFacet
     // //////////////////////////////////////////////////////////////////
 
-    public Object getDefault(final ObjectAdapter inObject) {
+    public Object getDefault(final ManagedObject inObject) {
         return Float.valueOf(0.0f);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueFacet.java
index b531863..ceaa1e3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.shortint;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface ShortValueFacet extends Facet {
-    Short shortValue(ObjectAdapter object);
+    
+    Short shortValue(ManagedObject object);
 
-    ObjectAdapter createValue(Short value);
+    ManagedObject createValue(Short value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
index 5c0a955..e192b54 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
@@ -25,11 +25,11 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public class ShortValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Short> implements ShortValueFacet {
@@ -91,12 +91,12 @@ public class ShortValueSemanticsProviderAbstract extends ValueSemanticsProviderA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public ObjectAdapter createValue(final Short value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Short value) {
+        return getObjectManager().adapt(value);
     }
 
     @Override
-    public Short shortValue(final ObjectAdapter object) {
+    public Short shortValue(final ManagedObject object) {
         return (Short) (object == null ? null : object.getPojo());
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueFacet.java
index 64b4ea1..9efc7a8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueFacet.java
@@ -19,12 +19,13 @@
 
 package org.apache.isis.metamodel.facets.value.string;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface StringValueFacet extends Facet {
-    String stringValue(ObjectAdapter object);
+    
+    String stringValue(ManagedObject object);
 
-    ObjectAdapter createValue(String value);
+    ManagedObject createValue(String value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueSemanticsProvider.java
index a4b20f1..f9453ac 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueSemanticsProvider.java
@@ -21,10 +21,10 @@ package org.apache.isis.metamodel.facets.value.string;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class StringValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<String> implements StringValueFacet {
 
@@ -107,13 +107,13 @@ public class StringValueSemanticsProvider extends ValueSemanticsProviderAndFacet
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public String stringValue(final ObjectAdapter object) {
+    public String stringValue(final ManagedObject object) {
         return object == null ? "" : (String) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final String value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final String value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueFacet.java
index 3c30fb2..918f7f4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueFacet.java
@@ -19,12 +19,13 @@
 
 package org.apache.isis.metamodel.facets.value.url;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface URLValueFacet extends Facet {
-    java.net.URL urlValue(ObjectAdapter object);
+    
+    java.net.URL urlValue(ManagedObject object);
 
-    ObjectAdapter createValue(java.net.URL value);
+    ManagedObject createValue(java.net.URL value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueSemanticsProvider.java
index f9a7943..20369df 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueSemanticsProvider.java
@@ -23,10 +23,10 @@ import java.net.MalformedURLException;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class URLValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<java.net.URL> implements URLValueFacet {
 
@@ -108,13 +108,13 @@ public class URLValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbs
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public java.net.URL urlValue(final ObjectAdapter object) {
+    public java.net.URL urlValue(final ManagedObject object) {
         return object == null ? null : (java.net.URL) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final java.net.URL value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final java.net.URL value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueFacet.java
index 5d3c242..abd250d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueFacet.java
@@ -21,12 +21,13 @@ package org.apache.isis.metamodel.facets.value.uuid;
 
 import java.util.UUID;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface UUIDValueFacet extends Facet {
-    UUID uuidValue(ObjectAdapter object);
+    
+    UUID uuidValue(ManagedObject object);
 
-    ObjectAdapter createValue(UUID value);
+    ManagedObject createValue(UUID value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java
index a63577f..34dd31d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java
@@ -23,10 +23,10 @@ import java.util.UUID;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public class UUIDValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<UUID> implements UUIDValueFacet {
@@ -93,13 +93,13 @@ public class UUIDValueSemanticsProvider extends ValueSemanticsProviderAndFacetAb
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public UUID uuidValue(final ObjectAdapter object) {
+    public UUID uuidValue(final ManagedObject object) {
         return object == null ? null : (UUID) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final UUID value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final UUID value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader.java
similarity index 95%
rename from core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader.java
rename to core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader.java
index 0cf87b7..d582e1c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader.java
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.metamodel.adapter.loader;
+package org.apache.isis.metamodel.objectmanager;
 
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContextAware;
@@ -57,7 +57,7 @@ public interface ObjectLoader {
     }
 
     public static ObjectLoaderBuilder builder(MetaModelContext metaModelContext) {
-        return new ObjectLoader_Builder(metaModelContext);
+        return new ObjectLoader_builder(metaModelContext);
     }
 
     public static ObjectLoader buildDefault(MetaModelContext metaModelContext) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_Builder.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builder.java
similarity index 87%
rename from core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_Builder.java
rename to core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builder.java
index 8ac93a5..44a6cda 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_Builder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builder.java
@@ -17,27 +17,27 @@
  *  under the License.
  */
 
-package org.apache.isis.metamodel.adapter.loader;
+package org.apache.isis.metamodel.objectmanager;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
 import org.apache.isis.metamodel.MetaModelContext;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader.ObjectLoaderBuilder;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader.ObjectLoaderBuilder;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 @RequiredArgsConstructor
-class ObjectLoader_Builder implements ObjectLoaderBuilder {
+class ObjectLoader_builder implements ObjectLoaderBuilder {
     
     private final MetaModelContext metaModelContext;
 
     private final List<ObjectLoader.Handler> handlers = new ArrayList<>();
 
     @Override
-    public ObjectLoader_Builder add(ObjectLoader.Handler handler) {
+    public ObjectLoader_builder add(ObjectLoader.Handler handler) {
         handler.setMetaModelContext(metaModelContext);
         handlers.add(handler);
         return this;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_builtinHandlers.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builtinHandlers.java
similarity index 97%
rename from core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_builtinHandlers.java
rename to core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builtinHandlers.java
index 76c9f0f..c581165 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_builtinHandlers.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builtinHandlers.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.metamodel.adapter.loader;
+package org.apache.isis.metamodel.objectmanager;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Modifier;
@@ -25,10 +25,10 @@ import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
 import org.apache.isis.metamodel.MetaModelContext;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader.Handler;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader.ObjectLoadRequest;
 import org.apache.isis.metamodel.facets.object.entity.EntityFacet;
 import org.apache.isis.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader.Handler;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader.ObjectLoadRequest;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager.java
new file mode 100644
index 0000000..6da6947
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager.java
@@ -0,0 +1,62 @@
+/*
+ *  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.metamodel.objectmanager;
+
+import org.apache.isis.metamodel.MetaModelContext;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader.ObjectLoadRequest;
+import org.apache.isis.metamodel.spec.ManagedObject;
+import org.apache.isis.metamodel.spec.ObjectSpecification;
+
+import lombok.val;
+
+/**
+ * 
+ * @since 2.0
+ *
+ */
+public interface ObjectManager {
+
+    MetaModelContext getMetaModelContext();
+    ObjectLoader getObjectLoader();
+
+    public static ObjectManager of(MetaModelContext metaModelContext) {
+        val objectLoader = ObjectLoader.buildDefault(metaModelContext);
+        val objectManager = new ObjectManager_default(metaModelContext, objectLoader);
+        return objectManager;
+    }
+
+    public default ManagedObject loadObject(ObjectLoadRequest objectLoadRequest) {
+        return getObjectLoader().loadObject(objectLoadRequest);
+    }
+    
+    public default ManagedObject adapt(Object pojo) {
+        if(pojo==null) {
+            return null; // don't propagate null into ManagedObject, null has no type 
+        }
+        return ManagedObject.of(getMetaModelContext().getSpecificationLoader()::loadSpecification, pojo);
+    }
+
+    public default ObjectSpecification loadSpec(Object pojo) {
+        if(pojo==null) {
+            return null; 
+        }
+        return getMetaModelContext().getSpecificationLoader().loadSpecification(pojo.getClass());
+    }
+    
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager_default.java
similarity index 63%
copy from core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
copy to core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager_default.java
index 2600da4..6c8b68f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager_default.java
@@ -16,14 +16,18 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
+package org.apache.isis.metamodel.objectmanager;
 
-package org.apache.isis.metamodel.facets.value.color;
+import org.apache.isis.metamodel.MetaModelContext;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.facetapi.Facet;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 
-public interface ColorValueFacet extends Facet {
-    int colorValue(ObjectAdapter object);
+@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
+class ObjectManager_default implements ObjectManager {
 
-    ObjectAdapter createValue(ObjectAdapter object, int color);
+    @Getter(onMethod = @__(@Override)) private final MetaModelContext metaModelContext;
+    @Getter(onMethod = @__(@Override)) private final ObjectLoader objectLoader;
+    
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
index 5881907..4f6dc13 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
@@ -22,6 +22,7 @@ package org.apache.isis.metamodel.spec;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -31,18 +32,17 @@ import org.apache.isis.applib.domain.DomainObjectList;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader;
 import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
 import org.apache.isis.metamodel.adapter.oid.factory.OidFactory;
 import org.apache.isis.metamodel.adapter.version.Version;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.metamodel.consent.InteractionResult;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.metamodel.facets.object.entity.EntityFacet;
 import org.apache.isis.metamodel.interactions.InteractionUtils;
 import org.apache.isis.metamodel.interactions.ObjectVisibilityContext;
 import org.apache.isis.metamodel.interactions.VisibilityContext;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.metamodel.specloader.SpecificationLoaderDefault;
 
@@ -306,18 +306,19 @@ public interface ManagedObject {
     // -- DEPRECATIONS (in an attempt to decouple the metamodel from ObjectAdapter)
     
     @Deprecated
-    public static ObjectAdapter promote(ManagedObject managedObject) {
-        if(managedObject==null) {
-            return null;
-        }
-        return (ObjectAdapter) managedObject;
+    public static Optional<ObjectAdapter> promote(ManagedObject managedObject) {
+        return Optional.ofNullable(managedObject)
+        .filter(mo->mo instanceof ObjectAdapter) 
+        .map(ObjectAdapter.class::cast);
     }
 
     // -- DEPRECATIONS - SPECIALIZED
     
     @Deprecated
     static boolean _isDestroyed(ManagedObject adapter) {
-        return ManagedObject.promote(adapter).isDestroyed();
+        return ManagedObject.promote(adapter)
+                .map(ObjectAdapter::isDestroyed)
+                .orElseGet(()->!ManagedObject._oid(adapter).isPersistent());
     }
 
     @Deprecated
@@ -331,17 +332,32 @@ public interface ManagedObject {
     }
 
     @Deprecated
-    static boolean _whenFirstIsRepresentingPersistent_ensureSecondIsAsWell(
+    static void _whenFirstIsBookmarkable_ensureSecondIsNotTransient(
             ManagedObject first,
             ManagedObject second) {
         
-        //if(ownerAdapter.getSpecification().isEntity() && !referencedAdapter.getSpecification().isEntity()) {
-        
-        if(ManagedObject.promote(first).isRepresentingPersistent() &&
-                ManagedObject.promote(second).isTransient()) {
-            return false; 
+        if(ManagedObject.isBookmarkable(first) && second!=null) {
+            
+            val refSpec = second.getSpecification();
+            
+            if(refSpec.isParented() || !refSpec.isEntity()) {
+                return;
+            }
+            
+            val oid = ManagedObject._rootOidIfAny(second);
+            
+            if(oid.isTransient()) {
+
+                // TODO: I've never seen this exception, and in any case DataNucleus supports persistence-by-reachability; so probably not required
+                throw _Exceptions.illegalArgument(
+                        "can't set a reference to a transient object [%s] from a persistent one [%s]",
+                            second,
+                            first.titleString(null));
+            }
+            
         }
-        return true;
+        
+        
     }
     
     @Deprecated
@@ -368,8 +384,11 @@ public interface ManagedObject {
                 // a choices list could include a null (eg example in ToDoItems#choices1Categorized()); want to show as "visible"
                 return true;
             }
-            if(ManagedObject._isDestroyed(adapter)) {
-                return false;
+            val spec = adapter.getSpecification();
+            if(spec.isEntity()) {
+                if(ManagedObject._isDestroyed(adapter)) {
+                    return false;
+                }
             }
             if(interactionInitiatedBy == InteractionInitiatedBy.FRAMEWORK) { 
                 return true; 
@@ -380,16 +399,16 @@ public interface ManagedObject {
         private static boolean isVisibleForUser(ManagedObject adapter) {
             val visibilityContext = createVisibleInteractionContextForUser(adapter);
             val spec = adapter.getSpecification();
-            final InteractionResult visibleResult = InteractionUtils.isVisibleResult(spec, visibilityContext);
-            return visibleResult.isNotVetoing();
+            return InteractionUtils.isVisibleResult(spec, visibilityContext)
+                    .isNotVetoing();
         }
 
         private static VisibilityContext<?> createVisibleInteractionContextForUser(
-                ManagedObject objectAdapter) {
+                ManagedObject adapter) {
             
             return new ObjectVisibilityContext(
-                    objectAdapter,
-                    objectAdapter.getSpecification().getIdentifier(),
+                    adapter,
+                    adapter.getSpecification().getIdentifier(),
                     InteractionInitiatedBy.USER,
                     Where.OBJECT_FORMS);
         }
@@ -444,7 +463,7 @@ public interface ManagedObject {
         val objectId = rootOid.getIdentifier();
         
         val objectLoadRequest = ObjectLoader.ObjectLoadRequest.of(spec, objectId);
-        val managedObject = mmc.getObjectLoader().loadObject(objectLoadRequest);
+        val managedObject = mmc.getObjectManager().loadObject(objectLoadRequest);
         
         return managedObject;
         
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java
index 972cfcb..51f00c3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java
@@ -253,7 +253,7 @@ public class ObjectActionContributee extends ObjectActionDefault implements Cont
     }
 
     public ManagedObject getServiceAdapter() {
-        return getObjectAdapterProvider().adapterFor(servicePojo);
+        return getObjectManager().adapt(servicePojo);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java
index 4de111e..4c3d56b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -508,7 +508,7 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
     }
 
     private ManagedObject adapterFor(final Object pojo) {
-        return pojo == null ? null : getObjectAdapterProvider().adapterFor(pojo);
+        return pojo == null ? null : getObjectManager().adapt(pojo);
     }
 
     private static ThreadLocal<List<ManagedObject>> commandTargetAdaptersHolder = new ThreadLocal<>();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 093a395..3bb7bf0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -28,7 +28,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.commons.ClassExtensions;
 import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.commons.StringExtensions;
@@ -54,6 +53,7 @@ import org.apache.isis.metamodel.interactions.InteractionUtils;
 import org.apache.isis.metamodel.interactions.UsabilityContext;
 import org.apache.isis.metamodel.interactions.ValidityContext;
 import org.apache.isis.metamodel.interactions.VisibilityContext;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.metamodel.spec.DomainModelException;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -244,7 +244,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
                     interactionInitiatedBy);
             checkChoicesOrAutoCompleteType(getSpecificationLoader(), choices, getSpecification());
             for (final Object choice : choices) {
-                adapters.add(getObjectAdapterProvider().adapterFor(choice));
+                adapters.add(getObjectManager().adapt(choice));
             }
         }
         /* // now incorporated into above choices processing (BoundedFacet is no more)
@@ -296,7 +296,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
                     interactionInitiatedBy);
             checkChoicesOrAutoCompleteType(getSpecificationLoader(), choices, getSpecification());
             for (final Object choice : choices) {
-                ManagedObject adapter = choice != null? getObjectAdapterProvider().adapterFor(choice) : null;
+                ManagedObject adapter = choice != null? getObjectManager().adapt(choice) : null;
                 adapters.add(adapter);
             }
         }
@@ -337,7 +337,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
                 // invoked it is unable to return a default.
                 return null;
             }
-            return getObjectAdapterProvider().adapterFor(dflt);
+            return getObjectManager().adapt(dflt);
         }
         return null;
     }
@@ -471,7 +471,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
         ManagedObject proposedValueAdapter = null;
         ObjectSpecification proposedValueSpec;
         if(proposedValue != null) {
-            proposedValueAdapter = getObjectAdapterProvider().adapterFor(proposedValue);
+            proposedValueAdapter = getObjectManager().adapt(proposedValue);
             if(proposedValueAdapter == null) {
                 return null;
             }
@@ -516,8 +516,8 @@ implements ObjectActionParameter, FacetHolder.Delegating {
         return parentAction.getSpecificationLoader();
     }
 
-    protected ObjectAdapterProvider getObjectAdapterProvider() {
-        return parentAction.getObjectAdapterProvider();
+    protected ObjectManager getObjectManager() {
+        return parentAction.getObjectManager();
     }
 
     protected PersistenceSessionServiceInternal getObjectPersistor() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
index 63d84ab..ed4a595 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
@@ -56,7 +56,7 @@ implements ObjectActionParameterContributee {
     }
 
     protected ManagedObject getServiceAdapter() {
-        return getObjectAdapterProvider().adapterFor(servicePojo);
+        return getObjectManager().adapt(servicePojo);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index c107f6e..3e23224 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -173,7 +173,7 @@ extends OneToManyAssociationDefault implements ContributeeMember {
     // -- FacetHolder
 
     private ManagedObject getServiceAdapter() {
-        return getObjectAdapterProvider().adapterForBean(serviceBean);
+        return getObjectManager().adapt(serviceBean);
     }
 
     // -- ContributeeMember2 impl (getServiceContributedBy)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index 21117b6..4877563 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -20,7 +20,6 @@
 package org.apache.isis.metamodel.specloader.specimpl;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.commons.exceptions.IsisException;
 import org.apache.isis.metamodel.commons.ToString;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
@@ -164,10 +163,20 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
         if (collection == null) {
             return null;
         }
-
-        val parentOid = ManagedObject._collectionOidIfAny(ownerAdapter); 
-        val newAdapter = getObjectAdapterProvider().adapterForCollection(collection, parentOid, this);
-        return newAdapter.injectServices(getServiceInjector());
+        
+        val objectManager = super.getObjectManager();
+        System.err.println("#### likely won't work");
+        return objectManager.adapt(collection);
+        
+//        val objectIdentifier = ManagedObject._collectionOidIfAny(ownerAdapter).getIdentifier();
+//
+//        
+//        //val spec = objectManager.loadSpec(collection); 
+//        val objectLoadRequest = ObjectLoadRequest.ofParentedCollection(ownerAdapter, this);
+//        val collectionAdapter = objectManager.loadObject(objectLoadRequest);
+//         
+//        val newAdapter = getObjectAdapterProvider().adapterForCollection(collection, parentOid, this);
+//        return newAdapter.injectServices(getServiceInjector());
     }
 
     @Override
@@ -186,19 +195,16 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
             final ManagedObject ownerAdapter,
             final ManagedObject referencedAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
+        
         if (referencedAdapter == null) {
             throw new IllegalArgumentException("Can't use null to add an item to a collection");
         }
         if (readWrite()) {
             
-            if (!ManagedObject._whenFirstIsRepresentingPersistent_ensureSecondIsAsWell(
+            ManagedObject._whenFirstIsBookmarkable_ensureSecondIsNotTransient(
                     ownerAdapter, 
-                    referencedAdapter)) {
-                
-                throw new IsisException("can't set a reference to a transient object from a persistent one: "
-                        + ownerAdapter.titleString(null)
-                        + " (persistent) -> " + referencedAdapter.titleString() + " (transient)");
-            }
+                    referencedAdapter);
+                    
             val facet = getFacet(CollectionAddToFacet.class);
             facet.add(ownerAdapter, referencedAdapter, interactionInitiatedBy);
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
index 73dba87..524f347 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
@@ -23,7 +23,6 @@ import java.util.List;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -155,8 +154,8 @@ public class OneToOneAssociationContributee extends OneToOneAssociationDefault i
         return InteractionUtils.isUsableResult(this, ic).createConsent();
     }
 
-    private ObjectAdapter getServiceAdapter() {
-        return getObjectAdapterProvider().adapterForBean(serviceBean);
+    private ManagedObject getServiceAdapter() {
+        return getObjectManager().adapt(serviceBean);
     }
 
     // -- Contributee impl - getServiceContributedBy()
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index 6b3a845..5a6d723 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -31,7 +31,6 @@ import org.apache.isis.metamodel.commons.ToString;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.consent.InteractionResult;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.actions.action.invocation.CommandUtil;
@@ -151,7 +150,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
             return null;
         }
 
-        return getObjectAdapterProvider().adapterFor(referencedPojo);
+        return getObjectManager().adapt(referencedPojo);
     }
 
     @Override
@@ -198,23 +197,14 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
             final ManagedObject newReferencedAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
-        final PropertySetterFacet setterFacet = getFacet(PropertySetterFacet.class);
-        if (setterFacet == null) {
+        val propertySetterFacet = getFacet(PropertySetterFacet.class);
+        if (propertySetterFacet == null) {
             return;
         }
         
-        if (    
-                newReferencedAdapter != null && 
-                !newReferencedAdapter.getSpecification().isParented() &&
-                !ManagedObject._whenFirstIsRepresentingPersistent_ensureSecondIsAsWell(
-                        ownerAdapter, 
-                        newReferencedAdapter)) {
-
-            // TODO: I've never seen this exception, and in any case DataNucleus supports persistence-by-reachability; so probably not required
-            throw new IsisException("can't set a reference to a transient object from a persistent one: " + newReferencedAdapter.titleString(null) + " (transient)");
-        }
+        ManagedObject._whenFirstIsBookmarkable_ensureSecondIsNotTransient(ownerAdapter, newReferencedAdapter);
 
-        setterFacet.setProperty(this, ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
+        propertySetterFacet.setProperty(this, ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
     }
 
     private void clearValue(
@@ -280,7 +270,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
                 interactionInitiatedBy);
 
         List<ManagedObject> adapters = _NullSafe.stream(pojoOptions)
-                .map(  getObjectAdapterProvider()::adapterFor )
+                .map(  getObjectManager()::adapt )
                 .collect(Collectors.toList());
         return adapters.toArray(new ManagedObject[]{});
     }
@@ -303,7 +293,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
         if (pojoOptions != null) {
             final ManagedObject[] options = new ManagedObject[pojoOptions.length];
             for (int i = 0; i < options.length; i++) {
-                options[i] = getObjectAdapterProvider().adapterFor(pojoOptions[i]);
+                options[i] = getObjectManager().adapt(pojoOptions[i]);
             }
             return options;
         }
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java
index 7d1a4ac..d5307c6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java
@@ -36,8 +36,7 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.metamodel.services.events.MetamodelEventService;
 import org.apache.isis.metamodel.services.homepage.HomePageAction;
@@ -61,22 +60,12 @@ import lombok.val;
 @Builder @Getter
 public final class MetaModelContext_forTesting implements MetaModelContext {
     
-//    public static MetaModelContext current() {
-//        return _Context.getElseFail(MetaModelContext.class);
-//    }
     
     public static MetaModelContext buildDefault() {
         return MetaModelContext_forTesting.builder()
         .build();
     }
     
-//    public static void preset(MetaModelContext primed) {
-//        _Context.clear();
-//        _Context.putSingleton(MetaModelContext.class, primed);
-//    }
-
-    private ObjectAdapterProvider objectAdapterProvider;
-
     private ServiceInjector serviceInjector;
     private ServiceRegistry serviceRegistry; 
 
@@ -90,6 +79,8 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
     
     @Builder.Default
     private IsisConfiguration configuration = newIsisConfiguration();
+    
+    private ObjectManager objectManager;
 
     private SpecificationLoader specificationLoader;
     
@@ -147,9 +138,6 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
         return serviceAdaptersById.get(serviceId);
     }
     
-    @Getter(onMethod = @__(@Override))
-    final ObjectLoader objectLoader = ObjectLoader.buildDefault(this);
-    
     // -- LOOKUP
 
     @Override
@@ -162,7 +150,7 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
         val fields = _Lists.of(
                 getConfigurationLegacy(),
                 getConfiguration(),
-                objectAdapterProvider,
+                getObjectManager(),
                 systemEnvironment,
                 serviceInjector,
                 serviceRegistry,
@@ -238,6 +226,14 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
         }
         return specificationLoader;
     }
-
+    
+    @Override
+    public ObjectManager getObjectManager() {
+        if(objectManager==null) {
+            objectManager = ObjectManager.of((MetaModelContext)this);
+        }
+        return objectManager;
+    }
+    
 
 }
\ No newline at end of file
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java
index 1ffa85e..b7a5d0f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java
@@ -119,7 +119,7 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
                 .translationService(mockTranslationService)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+//                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .build();
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/collections/JavaCollectionFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/collections/JavaCollectionFacetTest.java
index 7f5c68b..b7be27c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/collections/JavaCollectionFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/collections/JavaCollectionFacetTest.java
@@ -60,7 +60,7 @@ public class JavaCollectionFacetTest {
         facet = new JavaCollectionFacet(mockFacetHolder);
         
         metaModelContext = MetaModelContext_forTesting.builder()
-                .objectAdapterProvider(mockOAProvider)
+//                .objectAdapterProvider(mockOAProvider)
                 .build();
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
index f5df297..1b73991 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
@@ -32,13 +32,13 @@ import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.Annotations;
 import org.apache.isis.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
 import org.apache.isis.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation;
 import org.apache.isis.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation.TitleComponent;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -51,8 +51,8 @@ public class TitleFacetViaTitleAnnotationTest {
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
 
     @Mock private FacetHolder mockFacetHolder;
-    @Mock private ObjectAdapter mockObjectAdapter;
-    @Mock private ObjectAdapterProvider mockAdapterManager;
+    @Mock private ManagedObject mockManagedObject;
+    @Mock private ObjectManager mockObjectManager;
 
     protected MetaModelContext metaModelContext;
     
@@ -87,7 +87,8 @@ public class TitleFacetViaTitleAnnotationTest {
     @Before
     public void setUp() {
         metaModelContext = MetaModelContext_forTesting.builder()
-                .objectAdapterProvider(mockAdapterManager)
+//                .objectAdapterProvider(mockAdapterManager)
+                .objectManager(mockObjectManager)
                 .build();
     }
 
@@ -108,21 +109,21 @@ public class TitleFacetViaTitleAnnotationTest {
                 allowing(mockFacetHolder).getMetaModelContext();
                 will(returnValue(metaModelContext));
                 
-                allowing(mockObjectAdapter).getPojo();
+                allowing(mockManagedObject).getPojo();
                 will(returnValue(normalPojo));
 
-                allowing(mockAdapterManager).adapterFor("Normal");
+                allowing(mockObjectManager).adapt("Normal");
                 inSequence(sequence);
 
-                allowing(mockAdapterManager).adapterFor("Domain");
+                allowing(mockObjectManager).adapt("Domain");
                 inSequence(sequence);
 
-                allowing(mockAdapterManager).adapterFor("Object");
+                allowing(mockObjectManager).adapt("Object");
                 inSequence(sequence);
             }
         });
 
-        final String title = facet.title(mockObjectAdapter);
+        final String title = facet.title(mockManagedObject);
         assertThat(title, is("Normal Domain Object"));
     }
 
@@ -141,12 +142,12 @@ public class TitleFacetViaTitleAnnotationTest {
                 allowing(mockFacetHolder).getMetaModelContext();
                 will(returnValue(metaModelContext));
                 
-                allowing(mockObjectAdapter).getPojo();
+                allowing(mockManagedObject).getPojo();
                 will(returnValue(screwedPojo));
             }
         });
 
-        final String title = facet.title(mockObjectAdapter);
+        final String title = facet.title(mockManagedObject);
         assertThat(title, is("Failed Title"));
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
index 0d05b0f..7456d6a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
@@ -60,7 +60,7 @@ public class ParseableFacetUsingParserTest {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
-                .objectAdapterProvider(mockAdapterManager)
+//                .objectAdapterProvider(mockAdapterManager)
                 .build();
 
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
index a15d1a4..dff48ee 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -127,7 +127,7 @@ abstract class SpecificationLoaderTestAbstract {
                 .configuration(isisConfiguration = producers.newConfiguration())
                 .programmingModel(programmingModel)
                 .translationService(producers.mockTranslationService())
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal = producers.mockPersistenceSessionServiceInternal())
+//                .objectAdapterProvider(mockPersistenceSessionServiceInternal = producers.mockPersistenceSessionServiceInternal())
                 .authenticationSessionProvider(mockAuthenticationSessionProvider = producers.mockAuthenticationSessionProvider())
                 .singleton(mockMessageService = producers.mockMessageService())
                 .singleton(mockGridService = producers.mockGridService())
diff --git a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java
index 00f16bc..58ee82e 100644
--- a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java
@@ -95,7 +95,7 @@ public class ObjectMemberAbstractTest {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .build();
 
diff --git a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 895d9d6..3bb3c73 100644
--- a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -40,9 +40,6 @@ import org.apache.isis.applib.services.wrapper.InvalidException;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.oid.Oid.Factory;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.all.named.NamedFacetInferred;
@@ -53,9 +50,9 @@ import org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFac
 import org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod;
 import org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
 import org.apache.isis.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethod;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.command.CommandDtoServiceInternal;
-import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.metamodel.spec.ObjectSpecId;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
@@ -85,9 +82,9 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Rule
     public ExpectedException expectedException = ExpectedException.none();
 
-    @Mock private ObjectAdapterProvider mockAdapterManager;
+    //@Mock private ObjectAdapterProvider mockAdapterManager;
     @Mock private AuthenticationSessionProvider mockAuthenticationSessionProvider;
-    @Mock private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+//    @Mock private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
     @Mock private MessageService mockMessageService;
     @Mock private CommandContext mockCommandContext;
     @Mock private Command mockCommand;
@@ -98,13 +95,14 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock private ObjectSpecificationDefault mockEmployeeSpec;
     @Mock private FactoryService mockFactoryService;
     @Mock private TransactionService mockTransactionService;
+    @Mock protected ObjectManager mockObjectManager;
     
     private ObjectMember employeeNameMember;
 
     @Mock private ObjectSpecificationDefault mockStringSpec;
-    @Mock private ObjectAdapter mockEmployeeAdapter;
-    @Mock private ObjectAdapter mockAdapterForStringSmith;
-    @Mock private ObjectAdapter mockAdapterForStringJones;
+    @Mock private ManagedObject mockEmployeeAdapter;
+    @Mock private ManagedObject mockAdapterForStringSmith;
+    @Mock private ManagedObject mockAdapterForStringJones;
 
     private final SimpleSession session = new SimpleSession("tester", Collections.<String>emptyList());
 
@@ -125,7 +123,8 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .objectManager(mockObjectManager)
+//                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .singleton(wrapperFactory = createWrapperFactory())
                 .singleton(mockCommandContext)
@@ -145,48 +144,28 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         context.checking(new Expectations() {
             {
-                //                allowing(mockIsisSessionFactory).getServicesInjector();
-                //                will(returnValue(mockServicesInjector));
-
-                //                allowing(mockServicesInjector).getPersistenceSessionServiceInternal();
-                //                will(returnValue(mockPersistenceSessionServiceInternal));
-
-                allowing(mockPersistenceSessionServiceInternal).adapterFor(employeeDO);
+                
+                allowing(mockObjectManager).adapt(employeeDO);
                 will(returnValue(mockEmployeeAdapter));
 
-                //                allowing(mockServicesInjector).getAuthenticationSessionProvider();
-                //                will(returnValue(mockAuthenticationSessionProvider));
-
-                allowing(mockEmployeeAdapter).getOid();
-                will(returnValue(Factory.persistentOf(ObjectSpecId.of("EMP"), "1")));
+//                allowing(mockEmployeeAdapter).getOid();
+//                will(returnValue(Factory.persistentOf(ObjectSpecId.of("EMP"), "1")));
 
+                allowing(mockEmployeeSpec).isManagedBean();
+                will(returnValue(true));
+                
                 allowing(mockEmployeeSpec).getCorrespondingClass();
                 will(returnValue(Employee.class));
 
                 allowing(mockStringSpec).getCorrespondingClass();
                 will(returnValue(String.class));
 
-                //                allowing(mockServicesInjector).lookupService(CommandContext.class);
-                //                will(returnValue(Optional.of(mockCommandContext)));
-                //
-                //                allowing(mockServicesInjector).lookupService(CommandDtoServiceInternal.class);
-                //                will(returnValue(Optional.of(mockCommandDtoServiceInternal)));
-
-                allowing(mockCommandDtoServiceInternal).asCommandDto(with(any(List.class)), with(any(OneToOneAssociation.class)), with(any(ObjectAdapter.class)));
+                allowing(mockCommandDtoServiceInternal).asCommandDto(with(any(List.class)), with(any(OneToOneAssociation.class)), with(any(ManagedObject.class)));
                 will(returnValue(new CommandDto()));
-
+                
                 allowing(mockCommandContext).getCommand();
                 will(returnValue(mockCommand));
 
-                //                allowing(mockServicesInjector).lookupServiceElseFail(CommandDtoServiceInternal.class);
-                //                will(returnValue(new CommandDtoServiceInternalDefault()));
-                //
-                //                allowing(mockServicesInjector).lookupServiceElseFail(AuthenticationSessionProvider.class);
-                //                will(returnValue(mockAuthenticationSessionProvider));
-                //
-                //                allowing(mockServicesInjector).getSpecificationLoader();
-                //                will(returnValue(mockSpecificationLoader));
-
                 allowing(mockSpecificationLoader).loadSpecification(String.class);
                 will(returnValue(mockStringSpec));
 
@@ -196,12 +175,12 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
                 will(returnValue(session));
 
-                //                allowing(mockAdapterManager).lookupAdapterFor(employeeDO);
-                //                will(returnValue(mockEmployeeAdapter));
-
-                allowing(mockAdapterManager).adapterFor(employeeDO);
-                will(returnValue(mockEmployeeAdapter));
+//                allowing(mockAdapterManager).adapterFor(employeeDO);
+//                will(returnValue(mockEmployeeAdapter));
 
+                allowing(mockEmployeeAdapter).titleString(null);
+                will(returnValue("titleOf[mockEmployeeAdapter]"));
+                
                 allowing(mockEmployeeAdapter).getSpecification();
                 will(returnValue(mockEmployeeSpec));
 
@@ -211,20 +190,19 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockEmployeeSpec).getMember(methodOf(Employee.class, "getEmployeeRepository"));
                 will(returnValue(null));
 
-                allowing(mockAdapterForStringJones).isDestroyed();
-                will(returnValue(false));
+//                allowing(mockAdapterForStringJones).isDestroyed();
+//                will(returnValue(false));
 
                 allowing(mockAdapterForStringJones).getSpecification();
                 will(returnValue(mockStringSpec));
 
-                allowing(mockPersistenceSessionServiceInternal).adapterFor("Jones");
+                allowing(mockObjectManager).adapt("Jones");
                 will(returnValue(mockAdapterForStringJones));
 
             }
         });
 
 
-        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
 
         final Method employeeGetNameMethod = methodOf(Employee.class, "getName");
@@ -259,8 +237,8 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockEmployeeAdapter).getPojo();
                 will(returnValue(employeeDO));
 
-                allowing(mockEmployeeAdapter).isRepresentingPersistent();
-                will(returnValue(true));
+//                allowing(mockEmployeeAdapter).isRepresentingPersistent();
+//                will(returnValue(true));
             }
         });
 
@@ -309,10 +287,10 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
             ignoring(mockStringSpec);
 
-            allowing(mockAdapterForStringSmith).isDestroyed();
-            will(returnValue(false));
+//            allowing(mockAdapterForStringSmith).isDestroyed();
+//            will(returnValue(false));
 
-            allowing(mockPersistenceSessionServiceInternal).adapterFor("Smith");
+            allowing(mockObjectManager).adapt("Smith");
             will(returnValue(mockAdapterForStringSmith));
         }});
 
@@ -444,8 +422,8 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     private void allowingEmployeeHasSmithAdapter() {
         context.checking(new Expectations() {
             {
-                allowing(mockAdapterManager).adapterFor("Smith");
-                will(returnValue(mockAdapterForStringSmith));
+//                allowing(mockAdapterManager).adapterFor("Smith");
+//                will(returnValue(mockAdapterForStringSmith));
 
                 allowing(mockAdapterForStringSmith).getPojo();
                 will(returnValue("Smith"));
@@ -456,14 +434,14 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     private void allowingJonesStringValueAdapter() {
         context.checking(new Expectations() {
             {
-                allowing(mockAdapterManager).adapterFor("Jones");
-                will(returnValue(mockAdapterForStringJones));
+//                allowing(mockAdapterManager).adapterFor("Jones");
+//                will(returnValue(mockAdapterForStringJones));
 
                 allowing(mockAdapterForStringJones).getPojo();
                 will(returnValue("Jones"));
 
-                allowing(mockAdapterForStringJones).isTransient();
-                will(returnValue(false));
+//                allowing(mockAdapterForStringJones).isTransient();
+//                will(returnValue(false));
             }
         });
     }
diff --git a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index 0e575db..0848fa0 100644
--- a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -42,7 +42,6 @@ import org.apache.isis.applib.services.wrapper.events.PropertyVisibilityEvent;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.consent.Allow;
 import org.apache.isis.metamodel.consent.Consent;
@@ -54,7 +53,9 @@ import org.apache.isis.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
 import org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
 import org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
@@ -77,7 +78,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     @Rule
     public final JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
-    @Mock private ObjectAdapterProvider mockAdapterManager;
+    //@Mock private ObjectAdapterProvider mockAdapterManager;
     @Mock private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
     @Mock private SpecificationLoader mockSpecificationLoader;
@@ -86,14 +87,15 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     @Mock private TransactionService mockTransactionService;
     
     
-    @Mock private ObjectAdapter mockEmployeeAdapter;
+    @Mock private ManagedObject mockEmployeeAdapter;
     @Mock private ObjectSpecificationDefault mockOnType;
     @Mock private ObjectSpecificationDefault mockEmployeeSpec;
     @Mock private OneToOneAssociation mockPasswordMember;
     @Mock private Identifier mockPasswordIdentifier;
     @Mock private ServiceInjector mockServiceInjector;
     @Mock private ServiceRegistry mockServiceRegistry;
-    @Mock protected ObjectAdapter mockPasswordAdapter;
+    @Mock protected ManagedObject mockPasswordAdapter;
+    @Mock protected ObjectManager mockObjectManager;
 
     private Employee employeeDO;
 
@@ -117,7 +119,8 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .objectManager(mockObjectManager)
+                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .singleton(wrapperFactory = createWrapperFactory())
                 .singleton(mockFactoryService)
@@ -134,21 +137,21 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
         setPasswordMethod = Employee.class.getMethod("setPassword", String.class);
 
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
-        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
+        //wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
 
         context.checking(new Expectations() {
             {
 
-                allowing(mockPersistenceSessionServiceInternal).adapterFor(employeeDO);
-                will(returnValue(mockEmployeeAdapter));
-                
-                allowing(mockPersistenceSessionServiceInternal).adapterFor(passwordValue);
-                will(returnValue(mockPasswordAdapter));
+//                allowing(mockPersistenceSessionServiceInternal).adapterFor(employeeDO);
+//                will(returnValue(mockEmployeeAdapter));
+//                
+//                allowing(mockPersistenceSessionServiceInternal).adapterFor(passwordValue);
+//                will(returnValue(mockPasswordAdapter));
 
-                allowing(mockAdapterManager).adapterFor(employeeDO);
+                allowing(mockObjectManager).adapt(employeeDO);
                 will(returnValue(mockEmployeeAdapter));
 
-                allowing(mockAdapterManager).adapterFor(passwordValue);
+                allowing(mockObjectManager).adapt(passwordValue);
                 will(returnValue(mockPasswordAdapter));
 
                 allowing(mockEmployeeAdapter).getSpecification();
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/WrapperFactoryDefault.java b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/WrapperFactoryDefault.java
index 2470a0a..3f0ed89 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/WrapperFactoryDefault.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/WrapperFactoryDefault.java
@@ -59,7 +59,6 @@ import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.metamodel.MetaModelContext;
-import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.security.authentication.AuthenticationSessionProvider;
 import org.apache.isis.wrapper.dispatchers.InteractionEventDispatcher;
@@ -240,7 +239,7 @@ public class WrapperFactoryDefault implements WrapperFactory {
     // -- DEPENDENCES
 
     @Inject AuthenticationSessionProvider authenticationSessionProvider;
-    @Inject PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+//    @Inject PersistenceSessionServiceInternal persistenceSessionServiceInternal;
     @Inject FactoryService factoryService;
     @Inject MetaModelContext metaModelContext;
     @Inject IsisSessionFactory isisSessionFactory;
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DelegatingInvocationHandlerDefault.java b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DelegatingInvocationHandlerDefault.java
index 8a9bbbf..a819014 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DelegatingInvocationHandlerDefault.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DelegatingInvocationHandlerDefault.java
@@ -28,7 +28,7 @@ import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
 import org.apache.isis.applib.services.wrapper.events.InteractionEvent;
 import org.apache.isis.commons.internal._Constants;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.runtime.system.context.IsisContext;
 import org.apache.isis.runtime.system.persistence.PersistenceSession;
 
@@ -77,7 +77,7 @@ public class DelegatingInvocationHandlerDefault<T> implements DelegatingInvocati
         this.resolveObjectChangedEnabled = resolveObjectChangedEnabled;
     }
 
-    protected void resolveIfRequired(final ObjectAdapter targetAdapter) {
+    protected void resolveIfRequired(final ManagedObject targetAdapter) {
         resolveIfRequired(targetAdapter.getPojo());
     }
 
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DomainObjectInvocationHandler.java b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DomainObjectInvocationHandler.java
index 5710fbc..2ac89b5 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -47,13 +47,12 @@ import org.apache.isis.commons.internal.collections._Arrays;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.metamodel.IsisJdoMetamodelPlugin;
 import org.apache.isis.metamodel.MetaModelContext;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.consent.InteractionResult;
 import org.apache.isis.metamodel.facets.ImperativeFacet;
 import org.apache.isis.metamodel.facets.ImperativeFacet.Intent;
 import org.apache.isis.metamodel.facets.object.mixin.MixinFacet;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.Contributed;
@@ -67,7 +66,6 @@ import org.apache.isis.metamodel.specloader.specimpl.ContributeeMember;
 import org.apache.isis.metamodel.specloader.specimpl.ObjectActionContributee;
 import org.apache.isis.metamodel.specloader.specimpl.ObjectActionMixedIn;
 import org.apache.isis.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.runtime.system.context.IsisContext;
 import org.apache.isis.security.authentication.AuthenticationSession;
 
 import lombok.val;
@@ -160,7 +158,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             return delegate(method, args);
         }
 
-        final ObjectAdapter targetAdapter = adapterFor(getDelegate());
+        final ManagedObject targetAdapter = adapterForPojo(getDelegate());
 
         if (isTitleMethod(method)) {
             return handleTitleMethod(targetAdapter);
@@ -239,7 +237,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             val objectAction = (ObjectAction) objectMember;
 
             ObjectAction actualObjectAction;
-            ObjectAdapter actualTargetAdapter;
+            ManagedObject actualTargetAdapter;
 
             val mixinFacet = targetAdapter.getSpecification().getFacet(MixinFacet.class);
             if(mixinFacet != null) {
@@ -266,7 +264,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     }
 
     private static ObjectAction determineMixinAction(
-            final ObjectAdapter domainObjectAdapter,
+            final ManagedObject domainObjectAdapter,
             final ObjectAction objectAction) {
         
         if(domainObjectAdapter == null) {
@@ -362,7 +360,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // title
     // /////////////////////////////////////////////////////////////////
 
-    private Object handleTitleMethod(final ObjectAdapter targetAdapter)
+    private Object handleTitleMethod(final ManagedObject targetAdapter)
             throws IllegalAccessException, InvocationTargetException {
 
         resolveIfRequired(targetAdapter);
@@ -380,7 +378,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleSaveMethod(
-            final ObjectAdapter targetAdapter, final ObjectSpecification targetNoSpec) {
+            final ManagedObject targetAdapter, final ObjectSpecification targetNoSpec) {
 
         runValidationTask(()->{
             val interactionResult =
@@ -388,13 +386,15 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             notifyListenersAndVetoIfRequired(interactionResult);
         });
         
-        return runExecutionTask(()->{
-            if (targetAdapter.isTransient()) {
-                val ps = IsisContext.getPersistenceSession().get();
-                ps.makePersistentInTransaction(targetAdapter);
-            }
-            return null;
-        });
+        
+        val spec = targetAdapter.getSpecification();
+        if(spec.isEntity()) {
+            return runExecutionTask(()->{
+                ManagedObject._makePersistentInTransaction(targetAdapter);
+                return null;
+            }); 
+        }
+        return null;
         
     }
 
@@ -403,7 +403,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleGetterMethodOnProperty(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Object[] args,
             final OneToOneAssociation property) {
 
@@ -439,7 +439,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
 
 
     private Object handleSetterMethodOnProperty(
-            final ObjectAdapter targetAdapter, 
+            final ManagedObject targetAdapter, 
             final Object[] args,
             final OneToOneAssociation property) {
         
@@ -450,7 +450,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             checkUsability(targetAdapter, property);
         });
         
-        val argumentAdapter = adapterFor(singleArg);
+        val argumentAdapter = adapterForPojo(singleArg);
         
         resolveIfRequired(targetAdapter);
 
@@ -474,7 +474,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleGetterMethodOnCollection(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Object[] args,
             final OneToManyAssociation collection,
             final Method method,
@@ -540,7 +540,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleCollectionAddToMethod(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Object[] args,
             final OneToManyAssociation otma) {
 
@@ -552,7 +552,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         });
         
         resolveIfRequired(targetAdapter);
-        val argumentAdapter = adapterFor(singleArg);
+        val argumentAdapter = adapterForPojo(singleArg);
         
         runValidationTask(()->{
             val interactionResult = otma.isValidToAdd(targetAdapter, argumentAdapter,
@@ -576,7 +576,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
 
 
     private Object handleCollectionRemoveFromMethod(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Object[] args,
             final OneToManyAssociation collection) {
         
@@ -588,7 +588,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         });
 
         resolveIfRequired(targetAdapter);
-        val argumentAdapter = adapterFor(singleArg);
+        val argumentAdapter = adapterForPojo(singleArg);
 
         runValidationTask(()->{
             val interactionResult = collection.isValidToRemove(targetAdapter, argumentAdapter,
@@ -609,18 +609,18 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleActionMethod(
-            final ObjectAdapter targetAdapter, 
+            final ManagedObject targetAdapter, 
             final Object[] args,
             final ObjectAction objectAction,
             final ContributeeMember contributeeMember) {
 
-        final ObjectAdapter contributeeAdapter;
+        final ManagedObject contributeeAdapter;
         final Object[] contributeeArgs;
         if(contributeeMember != null) {
             val contributeeParamPosition = contributeeMember.getContributeeParamPosition();
             val contributee = args[contributeeParamPosition];
             
-            contributeeAdapter = adapterFor(contributee);
+            contributeeAdapter = adapterForPojo(contributee);
             contributeeArgs = _Arrays.removeByIndex(args, contributeeParamPosition); 
         } else {
             contributeeAdapter = null;
@@ -651,7 +651,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         return runExecutionTask(()->{
 
             val interactionInitiatedBy = getInteractionInitiatedBy();
-            val mixedInAdapter = (ObjectAdapter)null; // if a mixin action, then it will automatically fill in.
+            val mixedInAdapter = (ManagedObject)null; // if a mixin action, then it will automatically fill in.
             val returnedAdapter = objectAction.execute(
                     targetAdapter, mixedInAdapter, argAdapters,
                     interactionInitiatedBy);
@@ -671,19 +671,19 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         notifyListenersAndVetoIfRequired(interactionResult);
     }
 
-    private ObjectAdapter[] asObjectAdaptersUnderlying(final Object[] args) {
+    private ManagedObject[] asObjectAdaptersUnderlying(final Object[] args) {
 
-        val argAdapters = new ObjectAdapter[args.length];
+        val argAdapters = new ManagedObject[args.length];
         int i = 0;
         for (final Object arg : args) {
-            argAdapters[i++] = adapterFor(underlying(arg));
+            argAdapters[i++] = adapterForPojo(underlying(arg));
         }
 
         return argAdapters;
     }
 
-    private ObjectAdapter adapterFor(final Object obj) {
-        return obj != null ? getObjectAdapterProvider().adapterFor(obj) : null;
+    private ManagedObject adapterForPojo(final Object pojo) {
+        return pojo != null ? getObjectManager().adapt(pojo) : null;
     }
 
     private Object underlying(final Object arg) {
@@ -887,8 +887,8 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         return mmContext.getAuthenticationSessionProvider().getAuthenticationSession();
     }
 
-    protected ObjectAdapterProvider getObjectAdapterProvider() {
-        return mmContext.getObjectAdapterProvider();
+    protected ObjectManager getObjectManager() {
+        return mmContext.getObjectManager();
     }
 
     
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishedObjectsDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishedObjectsDefault.java
index 8a1a238..e0514ce 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishedObjectsDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishedObjectsDefault.java
@@ -66,6 +66,7 @@ public class PublishedObjectsDefault implements PublishedObjects, RepresentsInte
             final int numberLoaded,
             final int numberObjectPropertiesModified,
             final Map<ObjectAdapter, PublishingChangeKind> changesByAdapter) {
+        
         this.transactionUuid = transactionUuid;
         this.sequence = sequence;
         this.userName = userName;
diff --git a/core/runtime-web/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java b/core/runtime-web/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java
index bd1f8e0..b82601e 100644
--- a/core/runtime-web/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java
+++ b/core/runtime-web/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java
@@ -66,7 +66,7 @@ public class IsisWebAppCommonContext implements MetaModelContext.Delegating {
     private final ObjectAdapterMementoSupport mementoSupport = lookupServiceElseFail(ObjectAdapterMementoSupport.class);
     
     @Getter(lazy = true)
-    private final Function<Object, ObjectAdapter> pojoToAdapter = metaModelContext.getObjectAdapterProvider()::adapterFor;
+    private final Function<Object, ManagedObject> pojoToAdapter = metaModelContext.getObjectManager()::adapt;
     
     public IsisSession getCurrentSession() {
         return IsisSession.currentOrElseNull();
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
index afaa4c4..35d20f0 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
@@ -117,7 +117,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
         SCALAR {
 
             @Override
-            public ObjectAdapter asAdapter(
+            public ManagedObject asAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession,
                     SpecificationLoader specificationLoader) {
@@ -153,7 +153,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
         VECTOR {
 
             @Override
-            public ObjectAdapter asAdapter(
+            public ManagedObject asAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession,
                     SpecificationLoader specificationLoader) {
@@ -194,7 +194,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
             throw new IllegalStateException("Memento is not for " + sort);
         }
 
-        public abstract ObjectAdapter asAdapter(
+        public abstract ManagedObject asAdapter(
                 ObjectAdapterMementoDefault memento,
                 PersistenceSession persistenceSession,
                 SpecificationLoader specificationLoader);
@@ -214,7 +214,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
          */
         ENCODEABLE {
             @Override
-            ObjectAdapter recreateAdapter(
+            ManagedObject recreateAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession,
                     SpecificationLoader specificationLoader) {
@@ -257,14 +257,14 @@ public class ObjectAdapterMementoDefault implements Serializable {
          */
         LOOKUP {
             @Override
-            ObjectAdapter recreateAdapter(
+            ManagedObject recreateAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession, 
                     SpecificationLoader specificationLoader) {
                 
                 RootOid oid = Oid.unmarshaller().unmarshal(memento.persistentOidStr, RootOid.class);
                 try {
-                    final ObjectAdapter adapter = persistenceSession.adapterFor(oid);
+                    final ManagedObject adapter = persistenceSession.adapterFor(oid);
                     return adapter;
 
                 } finally {
@@ -284,9 +284,9 @@ public class ObjectAdapterMementoDefault implements Serializable {
                     SpecificationLoader specificationLoader) {
                 
                 //XXX REVIEW: this may be redundant because recreateAdapter also guarantees the version will be reset.
-                final ObjectAdapter adapter = recreateAdapter(
+                final ManagedObject adapter = recreateAdapter(
                         memento, persistenceSession, specificationLoader);
-                Oid oid = adapter.getOid();
+                Oid oid = ManagedObject._oid(adapter);
                 memento.persistentOidStr = oid.enString();
             }
 
@@ -315,7 +315,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
              * {@link ConcurrencyChecking} is ignored for transients.
              */
             @Override
-            ObjectAdapter recreateAdapter(
+            ManagedObject recreateAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession, 
                     SpecificationLoader specificationLoader) {
@@ -346,7 +346,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
             }
         };
 
-        public ObjectAdapter getAdapter(
+        public ManagedObject getAdapter(
                 ObjectAdapterMementoDefault memento,
                 PersistenceSession persistenceSession,
                 SpecificationLoader specificationLoader) {
@@ -354,7 +354,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
             return recreateAdapter(memento, persistenceSession, specificationLoader);
         }
 
-        abstract ObjectAdapter recreateAdapter(
+        abstract ManagedObject recreateAdapter(
                 ObjectAdapterMementoDefault memento,
                 PersistenceSession persistenceSession, 
                 SpecificationLoader specificationLoader);
@@ -554,7 +554,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
      * best to call once and then hold onto the value thereafter. Alternatively,
      * can call {@link #setAdapter(ObjectAdapter)} to keep this memento in sync.
      */
-    public ObjectAdapter getObjectAdapter(
+    public ManagedObject getObjectAdapter(
             PersistenceSession persistenceSession,
             SpecificationLoader specificationLoader) {
         
@@ -639,7 +639,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
             return pojo->ObjectAdapterMementoDefault.createOrNull( adapterProvider.adapterFor(pojo) );
         }
 
-        public static Function<ObjectAdapterMementoDefault, ObjectAdapter> fromMemento(
+        public static Function<ObjectAdapterMementoDefault, ManagedObject> fromMemento(
                 final PersistenceSession persistenceSession,
                 final SpecificationLoader specificationLoader) {
 
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
index 7a26a5c..598a973 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
@@ -120,7 +120,7 @@ implements ObjectAdapterMementoSupport {
         }
 
         @Override
-        public ObjectAdapter getObjectAdapter(SpecificationLoader specificationLoader) {
+        public ManagedObject getObjectAdapter(SpecificationLoader specificationLoader) {
             return delegate.getObjectAdapter(persistenceSession(), specificationLoader);
         }
         
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java
index 2a7b636..e8bb90f 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java
@@ -123,7 +123,7 @@ public class StandaloneData extends Data {
     //
     // ///////////////////////////////////////////////////////
 
-    public ObjectAdapter getAdapter(
+    public ManagedObject getAdapter(
             ObjectAdapterProvider objectAdapterProvider,
             SpecificationLoader specificationLoader) {
         
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContext.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContext.java
index 3254857..5debb60 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContext.java
@@ -50,7 +50,6 @@ public interface RuntimeContext {
     ServiceRegistry getServiceRegistry();
     HomePageAction getHomePageAction();
 
-    ObjectAdapter adapterOfPojo(Object pojo);
     ObjectAdapter adapterOfMemento(ObjectSpecification spec, Oid oid, Data data);
 
     ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec);
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContextBase.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContextBase.java
index b56ea91..6038807 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContextBase.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContextBase.java
@@ -27,9 +27,9 @@ import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.homepage.HomePageAction;
 import org.apache.isis.metamodel.spec.ManagedObjectState;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -60,9 +60,9 @@ public abstract class RuntimeContextBase implements RuntimeContext {
     @Getter(onMethod = @__(@Override)) protected final ServiceRegistry serviceRegistry;
     @Getter(onMethod = @__(@Override)) protected final SpecificationLoader specificationLoader;
     
-    @Getter protected final ObjectAdapterProvider objectAdapterProvider;
     @Getter protected final TransactionService transactionService;
     @Getter protected final Supplier<HomePageAction> homePageActionResolver;
+    @Getter protected final ObjectManager objectManager;
 
     // -- SINGLE ARG CONSTRUCTOR
 
@@ -72,7 +72,7 @@ public abstract class RuntimeContextBase implements RuntimeContext {
         this.serviceInjector = mmc.getServiceInjector();
         this.serviceRegistry = mmc.getServiceRegistry();
         this.specificationLoader = mmc.getSpecificationLoader();
-        this.objectAdapterProvider = mmc.getObjectAdapterProvider();
+        this.objectManager = mmc.getObjectManager();
         this.transactionService = mmc.getTransactionService();
         this.homePageActionResolver = mmc::getHomePageAction;
     }
@@ -89,11 +89,6 @@ public abstract class RuntimeContextBase implements RuntimeContext {
 
     // -- OBJECT ADAPTER SUPPORT
 
-    @Override
-    public ObjectAdapter adapterOfPojo(Object pojo) {
-        return objectAdapterProvider.adapterFor(pojo);
-    }
-
     @Override //FIXME [2033] decouple from JDO
     public ObjectAdapter adapterOfMemento(ObjectSpecification spec, Oid oid, Data data) {
         return ps().adapterOfMemento(spec, oid, data);
@@ -125,7 +120,7 @@ public abstract class RuntimeContextBase implements RuntimeContext {
 
     @Override
     public ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec) {
-        return objectAdapterProvider.newTransientInstance(domainTypeSpec);
+        return ps().newTransientInstance(domainTypeSpec);
     }
 
     @Override
@@ -147,6 +142,7 @@ public abstract class RuntimeContextBase implements RuntimeContext {
 
     private final _Lazy<PersistenceSession> persistenceSession = 
             _Lazy.of(IsisContext.getPersistenceSession()::get);
+ 
 
     private PersistenceSession ps() {
         return persistenceSession.get();
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
index 4542178..f78d516 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
@@ -100,7 +100,7 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
         return adapter;
     }
 
-    private ObjectAdapter recreateReference(Data data) {
+    private ManagedObject recreateReference(Data data) {
         // handle values
         if (data instanceof StandaloneData) {
             val standaloneData = (StandaloneData) data;
@@ -144,7 +144,7 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
             final ObjectSpecification collectionSpec, 
             final CollectionData state) {
 
-        final Stream<ObjectAdapter> initData = state.streamElements()
+        final Stream<ManagedObject> initData = state.streamElements()
                 .map((final Data elementData) -> recreateReference(elementData));
 
         final CollectionFacet facet = collectionSpec.getFacet(CollectionFacet.class);
@@ -194,19 +194,23 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
 
     }
 
-    private void updateField(final ObjectAdapter objectAdapter, final ObjectData objectData, final ObjectAssociation objectAssoc) {
+    private void updateField(
+            final ManagedObject adapter, 
+            final ObjectData objectData, 
+            final ObjectAssociation objectAssoc) {
+        
         final Object fieldData = objectData.getEntry(objectAssoc.getId());
 
         if (objectAssoc.isOneToManyAssociation()) {
-            updateOneToManyAssociation(objectAdapter, (OneToManyAssociation) objectAssoc, (CollectionData) fieldData);
+            updateOneToManyAssociation(adapter, (OneToManyAssociation) objectAssoc, (CollectionData) fieldData);
 
         } else if (objectAssoc.getSpecification().containsFacet(EncodableFacet.class)) {
             final EncodableFacet facet = objectAssoc.getSpecification().getFacet(EncodableFacet.class);
-            final ObjectAdapter value = facet.fromEncodedString((String) fieldData);
-            ((OneToOneAssociation) objectAssoc).initAssociation(objectAdapter, value);
+            final ManagedObject value = facet.fromEncodedString((String) fieldData);
+            ((OneToOneAssociation) objectAssoc).initAssociation(adapter, value);
 
         } else if (objectAssoc.isOneToOneAssociation()) {
-            updateOneToOneAssociation(objectAdapter, (OneToOneAssociation) objectAssoc, (Data) fieldData);
+            updateOneToOneAssociation(adapter, (OneToOneAssociation) objectAssoc, (Data) fieldData);
         }
     }
 
@@ -217,9 +221,9 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
 
         val collection = otma.get(objectAdapter, InteractionInitiatedBy.FRAMEWORK);
         
-        final Set<ObjectAdapter> original = CollectionFacet.Utils.streamAdapters(ManagedObject.promote(collection))
+        final Set<ManagedObject> original = CollectionFacet.Utils.streamAdapters(collection)
                 .collect(Collectors.toCollection(LinkedHashSet::new));
-        final Set<ObjectAdapter> incoming = collectionData.streamElements()
+        final Set<ManagedObject> incoming = collectionData.streamElements()
                 .map(this::recreateReference)
                 .collect(Collectors.toCollection(LinkedHashSet::new));
 
@@ -227,7 +231,7 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
         .filter(original::contains)
         .forEach(elementAdapter->{
             if (log.isDebugEnabled()) {
-                log.debug("  association {} changed, added {}", otma, elementAdapter.getOid());
+                log.debug("  association {} changed, added {}", otma, ManagedObject._oid(elementAdapter));
             }
             otma.addElement(objectAdapter, elementAdapter, InteractionInitiatedBy.FRAMEWORK);
         });
@@ -236,21 +240,25 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
         .filter(not(incoming::contains))
         .forEach(elementAdapter->{
             if (log.isDebugEnabled()) {
-                log.debug("  association {} changed, removed {}", otma, elementAdapter.getOid());
+                log.debug("  association {} changed, removed {}", otma, ManagedObject._oid(elementAdapter));
             }
             otma.removeElement(objectAdapter, elementAdapter, InteractionInitiatedBy.FRAMEWORK);
         });
 
     }
 
-    private void updateOneToOneAssociation(final ObjectAdapter objectAdapter, final OneToOneAssociation otoa, final Data assocData) {
+    private void updateOneToOneAssociation(
+            final ManagedObject objectAdapter,
+            final OneToOneAssociation otoa, 
+            final Data assocData) {
+        
         if (assocData == null) {
             otoa.initAssociation(objectAdapter, null);
         } else {
-            final ObjectAdapter ref = recreateReference(assocData);
+            final ManagedObject ref = recreateReference(assocData);
             if (otoa.get(objectAdapter, InteractionInitiatedBy.FRAMEWORK) != ref) {
                 if (log.isDebugEnabled()) {
-                    log.debug("  association {} changed to {}", otoa, ref.getOid());
+                    log.debug("  association {} changed to {}", otoa, ManagedObject._oid(ref));
                 }
                 otoa.initAssociation(objectAdapter, ref);
             }
diff --git a/core/runtime/src/test/java/org/apache/isis/runtime/system/ObjectActionLayoutXmlDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/runtime/system/ObjectActionLayoutXmlDefaultTest.java
index bd93c1c7..2c6353d 100644
--- a/core/runtime/src/test/java/org/apache/isis/runtime/system/ObjectActionLayoutXmlDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/runtime/system/ObjectActionLayoutXmlDefaultTest.java
@@ -63,7 +63,7 @@ public class ObjectActionLayoutXmlDefaultTest {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .build();
 
diff --git a/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java
index 6973be8..401562f 100644
--- a/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java
@@ -80,7 +80,7 @@ public class OneToManyAssociationDefaultTest {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .singleton(mockMessageService)
                 .build();
diff --git a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModelDefault.java b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModelDefault.java
index a5b39b3..67d58e5 100644
--- a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModelDefault.java
+++ b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModelDefault.java
@@ -84,7 +84,7 @@ class WhereAmIModelDefault implements WhereAmIModel {
     // -- HELPER
 
     private EntityModel toEntityModel(Object domainObject) {
-        val objectAdapter = commonContext.getObjectAdapterProvider().adapterFor(domainObject);
+        val objectAdapter = commonContext.getObjectManager().adapt(domainObject);
         return EntityModel.ofAdapter(commonContext, objectAdapter);
     }
 
diff --git a/core/viewer-wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java b/core/viewer-wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
index 173e796..459607c 100644
--- a/core/viewer-wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
+++ b/core/viewer-wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
@@ -26,7 +26,7 @@ import org.junit.Test;
 
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.runtime.memento.ObjectAdapterMementoSupport;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -46,7 +46,7 @@ public class ScalarModel_isScalarSubtypingAnyOf_Test {
     @Mock ObjectSpecification mockObjectSpecification;
     @Mock EntityModel mockEntityModel;
     @Mock ObjectAdapterMementoSupport mockObjectAdapterMementoSupport;
-    @Mock ObjectAdapterProvider mockObjectAdapterProvider; 
+    @Mock ObjectManager mockObjectManager; 
     
     MetaModelContext metaModelContext;
 
@@ -58,7 +58,7 @@ public class ScalarModel_isScalarSubtypingAnyOf_Test {
     public void setup() {
         
         metaModelContext = MetaModelContext_forTesting.builder()
-                .objectAdapterProvider(mockObjectAdapterProvider)
+                .objectManager(mockObjectManager)
                 .singleton(mockObjectAdapterMementoSupport)
                 .build();
         
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
index 33c1eb9..276fb4b 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
@@ -38,10 +38,10 @@ import org.apache.wicket.validation.IValidator;
 import org.apache.wicket.validation.ValidationError;
 
 import org.apache.isis.commons.internal.base._Casts;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.runtime.system.session.IsisSession;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -65,7 +65,8 @@ import lombok.val;
  * </p>
  */
 public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> 
-extends ScalarPanelAbstract2 implements TextFieldValueModel.ScalarModelProvider {
+extends ScalarPanelAbstract2 
+implements TextFieldValueModel.ScalarModelProvider {
 
     private static final long serialVersionUID = 1L;
 
@@ -222,7 +223,7 @@ extends ScalarPanelAbstract2 implements TextFieldValueModel.ScalarModelProvider
             @Override
             public void validate(final IValidatable<T> validatable) {
                 final T proposedValue = validatable.getValue();
-                final ManagedObject proposedAdapter = adapterProvider().adapterFor(proposedValue);
+                final ManagedObject proposedAdapter = objectManager().adapt(proposedValue);
                 final String reasonIfAny = scalarModel.validate(proposedAdapter);
                 if (reasonIfAny != null) {
                     final ValidationError error = new ValidationError();
@@ -231,8 +232,9 @@ extends ScalarPanelAbstract2 implements TextFieldValueModel.ScalarModelProvider
                 }
             }
             
-            private ObjectAdapterProvider adapterProvider() {
-                return IsisSession.current().get().getObjectAdapterProvider();
+            private ObjectManager objectManager() {
+                return IsisSession.current().get().getMetaModelContext()
+                        .getObjectManager();
             }
             
         });
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java
index 99dc6e6..fa6c8fa 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java
@@ -84,7 +84,7 @@ class AuditerServiceTest {
     }
 
     @Test
-    void auditerServiceShouldBeAwareOfInventoryChanges() {
+    void auditerService_shouldBeAwareOfInventoryChanges() {
 
         // given
         val books = repository.allInstances(Book.class);
@@ -111,7 +111,7 @@ class AuditerServiceTest {
     }
 
     @Test
-    void auditerServiceShouldBeAwareOfInventoryChanges_whenUsingAsyncExecution() 
+    void auditerService_shouldBeAwareOfInventoryChanges_whenUsingAsyncExecution() 
             throws InterruptedException, ExecutionException, TimeoutException {
 
         // given
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
index 3671755..91052be 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
@@ -76,7 +76,7 @@ class SpringServiceProvisioningTest {
                 .map(Class::getName)
                 .collect(Collectors.toCollection(TreeSet::new));
 
-        val singletonListing = _Resources.loadAsStringUtf8(this.getClass(), "builtin-singleton.list");
+        val singletonListing = _Resources.loadAsStringUtf8(this.getClass(), "builtin-domain-services.list");
         val expectedSingletons = _Strings.splitThenStreamTrimmed(singletonListing, "\n")
                 .filter(entry->!entry.startsWith("#"))
                 .collect(Collectors.toCollection(TreeSet::new));
diff --git a/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-domain-services.list b/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-domain-services.list
new file mode 100644
index 0000000..55f5939
--- /dev/null
+++ b/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-domain-services.list
@@ -0,0 +1,27 @@
+org.apache.isis.applib.conmap.ContentMappingServiceForCommandDto
+org.apache.isis.applib.conmap.ContentMappingServiceForCommandDto$CopyOverFromCommand
+org.apache.isis.applib.conmap.ContentMappingServiceForCommandsDto
+org.apache.isis.applib.mixins.dto.DtoMappingHelper
+org.apache.isis.applib.services.confview.ConfigurationMenu
+org.apache.isis.applib.services.layout.LayoutServiceMenu
+org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+org.apache.isis.applib.services.queryresultscache.QueryResultsCacheInternal
+org.apache.isis.applib.services.scratchpad.Scratchpad
+org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+org.apache.isis.applib.services.tablecol.TableColumnOrderService$Default
+org.apache.isis.applib.services.urlencoding.UrlEncodingServiceWithCompression
+org.apache.isis.extensions.fixtures.fixturespec.FixtureScriptsDefault
+org.apache.isis.jdo.metrics.MetricsServiceDefault
+org.apache.isis.metamodel.services.registry.ServiceRegistryDefault
+org.apache.isis.metamodel.services.user.UserServiceDefault$SudoServiceSpi
+org.apache.isis.runtime.services.command.CommandDtoServiceInternalDefault
+org.apache.isis.runtime.services.confmenu.ConfigurationViewServiceDefault
+org.apache.isis.runtime.services.email.EmailServiceDefault
+org.apache.isis.runtime.services.hsqldb.HsqlDbManagerMenu
+org.apache.isis.runtime.services.i18n.po.TranslationServicePoMenu
+org.apache.isis.runtime.services.ixn.InteractionDtoServiceInternalDefault
+org.apache.isis.runtime.services.publish.PublishingServiceInternalDefault
+org.apache.isis.runtime.services.sudo.SudoServiceDefault
+org.apache.isis.runtime.services.userprof.UserProfileServiceDefault
+org.apache.isis.runtime.services.userreg.EmailNotificationServiceDefault
+org.apache.isis.testdomain.jdo.InventoryResource
\ No newline at end of file