You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/09/28 13:58:48 UTC

[isis] 06/07: ISIS-1976: introduces ManagedObject to replace OA within most of metamodel

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 daaf777dc802963d4cc98ba71d16a507673cfa07
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Sep 28 14:45:21 2018 +0200

    ISIS-1976: introduces ManagedObject to replace OA within
    most of metamodel
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
 .../components/AuthorizationManagerAllowAll.java   |  6 +-
 .../isis/core/metamodel/adapter/ObjectAdapter.java | 83 +++++++++++-----------
 .../core/metamodel/facets/DomainEventHelper.java   | 11 +--
 .../hidden/HiddenFacetForActionAnnotation.java     |  4 +-
 .../invocation/ActionDomainEventFacetAbstract.java | 10 +--
 .../HiddenFacetForActionLayoutAnnotation.java      |  4 +-
 .../actions/layout/HiddenFacetForActionXml.java    |  4 +-
 .../validate/ActionParameterValidationFacet.java   |  4 +-
 .../actions/validate/ActionValidationFacet.java    |  4 +-
 .../ActionParameterValidationFacetViaMethod.java   |  3 +-
 .../method/ActionValidationFacetViaMethod.java     |  3 +-
 .../CollectionAccessorFacetViaAccessor.java        |  4 +-
 .../hidden/HiddenFacetForCollectionAnnotation.java |  4 +-
 ...abledFacetOnCollectionDerivedFromImmutable.java |  4 +-
 .../HiddenFacetForCollectionLayoutAnnotation.java  |  4 +-
 .../layout/HiddenFacetForCollectionXml.java        |  4 +-
 .../validate/CollectionValidateAddToFacet.java     |  4 +-
 .../CollectionValidateAddToFacetViaMethod.java     |  3 +-
 .../CollectionValidateRemoveFromFacet.java         |  4 +-
 ...CollectionValidateRemoveFromFacetViaMethod.java |  3 +-
 .../metamodel/facets/fallback/TitleFacetNone.java  |  4 +-
 .../facets/members/cssclass/CssClassFacet.java     |  4 +-
 .../members/cssclass/CssClassFacetAbstract.java    |  4 +-
 .../facets/members/disabled/DisabledFacet.java     |  6 +-
 .../members/disabled/DisabledFacetAbstract.java    |  4 +-
 .../DisabledFacetAbstractAlwaysEverywhere.java     |  4 +-
 .../disabled/DisabledFacetAbstractImpl.java        |  4 +-
 .../method/DisableForContextFacetViaMethod.java    |  3 +-
 .../facets/members/hidden/HiddenFacetAbstract.java |  4 +-
 .../HiddenFacetAbstractAlwaysEverywhere.java       |  4 +-
 .../members/hidden/HiddenFacetAbstractImpl.java    |  4 +-
 .../HiddenFacetFromLayoutPropertiesAbstract.java   |  4 +-
 .../method/HideForContextFacetViaMethod.java       |  3 +-
 .../facets/object/callbacks/CallbackFacet.java     |  6 +-
 .../callbacks/CreatedCallbackFacetViaMethod.java   |  4 +-
 .../callbacks/LoadedCallbackFacetViaMethod.java    |  4 +-
 .../callbacks/LoadingCallbackFacetViaMethod.java   |  4 +-
 .../callbacks/PersistedCallbackFacetViaMethod.java |  4 +-
 .../PersistingCallbackFacetViaMethod.java          |  4 +-
 .../callbacks/RemovedCallbackFacetViaMethod.java   |  4 +-
 .../callbacks/RemovingCallbackFacetViaMethod.java  |  4 +-
 .../callbacks/UpdatedCallbackFacetViaMethod.java   |  4 +-
 .../callbacks/UpdatingCallbackFacetViaMethod.java  |  4 +-
 .../choices/ChoicesFacetFromBoundedAbstract.java   |  7 +-
 .../cssclass/method/CssClassFacetMethod.java       |  4 +-
 .../disabled/DisabledObjectFacetAbstract.java      |  6 +-
 .../method/DisabledObjectFacetViaMethod.java       |  3 +-
 .../ImmutableFacetForDomainObjectAnnotation.java   |  4 +-
 .../editing/ImmutableFacetFromConfiguration.java   |  4 +-
 ...ObjectLayoutAnnotationUsingCssClassUiEvent.java |  6 +-
 ...mainObjectLayoutAnnotationUsingIconUiEvent.java |  6 +-
 ...ainObjectLayoutAnnotationUsingTitleUiEvent.java |  6 +-
 ...conFacetDerivedFromDomainServiceAnnotation.java |  4 +-
 .../object/hidden/HiddenObjectFacetAbstract.java   |  6 +-
 .../hidden/method/HiddenObjectFacetViaMethod.java  |  5 +-
 .../metamodel/facets/object/icon/IconFacet.java    |  4 +-
 .../facets/object/icon/method/IconFacetMethod.java |  4 +-
 .../object/immutable/ImmutableFacetAbstract.java   |  6 +-
 .../impl/ObjectValidPropertiesFacetImpl.java       |  5 +-
 ...etOnCollectionDerivedFromRecreatableObject.java |  4 +-
 ...acetOnPropertyDerivedFromRecreatableObject.java |  4 +-
 .../metamodel/facets/object/title/TitleFacet.java  |  6 +-
 .../facets/object/title/TitleFacetAbstract.java    |  3 +-
 .../annotation/TitleFacetViaTitleAnnotation.java   |  7 +-
 .../title/methods/TitleFacetViaTitleMethod.java    |  3 +-
 .../title/methods/TitleFacetViaToStringMethod.java |  4 +-
 .../object/title/parser/TitleFacetUsingParser.java |  8 +--
 ...cationFromMustSatisfyAnnotationOnTypeFacet.java |  4 +-
 .../validateobject/ValidateObjectFacet.java        |  4 +-
 .../ValidateObjectFacetAbstract.java               |  4 +-
 .../method/ValidateObjectFacetMethod.java          |  3 +-
 .../objectvalue/mandatory/MandatoryFacet.java      |  6 +-
 .../mandatory/MandatoryFacetAbstract.java          |  3 +-
 .../facets/objectvalue/maxlen/MaxLengthFacet.java  |  4 +-
 .../objectvalue/maxlen/MaxLengthFacetAbstract.java |  5 +-
 .../MustSatisfySpecificationFacetAbstract.java     |  4 +-
 .../objectvalue/regex/RegExFacetAbstract.java      |  4 +-
 .../PropertyOrCollectionAccessorFacet.java         |  4 +-
 .../accessor/PropertyAccessorFacetViaAccessor.java |  4 +-
 ...isabledFacetOnPropertyDerivedFromImmutable.java |  4 +-
 .../hidden/HiddenFacetForPropertyAnnotation.java   |  4 +-
 .../modify/PropertyDomainEventFacetAbstract.java   |  4 +-
 .../HiddenFacetForPropertyLayoutAnnotation.java    |  4 +-
 .../propertylayout/HiddenFacetForPropertyXml.java  |  4 +-
 .../validating/PropertyValidateFacet.java          |  4 +-
 .../validating/PropertyValidateFacetAbstract.java  |  4 +-
 .../validating/PropertyValidateFacetNone.java      |  4 +-
 .../dflt/PropertyValidateFacetDefault.java         |  4 +-
 .../method/PropertyValidateFacetViaMethod.java     |  3 +-
 .../core/metamodel/interactions/AccessContext.java |  4 +-
 .../interactions/ActionUsabilityContext.java       |  4 +-
 .../interactions/ActionVisibilityContext.java      |  4 +-
 .../interactions/CollectionUsabilityContext.java   |  4 +-
 .../interactions/CollectionVisibilityContext.java  |  4 +-
 .../metamodel/interactions/InteractionContext.java | 19 ++---
 .../metamodel/interactions/ObjectTitleContext.java |  4 +-
 .../interactions/ObjectValidityContext.java        |  6 +-
 .../interactions/ObjectVisibilityContext.java      |  3 +-
 .../interactions/PropertyModifyContext.java        | 10 +--
 .../interactions/PropertyUsabilityContext.java     |  4 +-
 .../interactions/PropertyVisibilityContext.java    |  4 +-
 .../metamodel/interactions/ProposedHolder.java     |  4 +-
 .../metamodel/interactions/UsabilityContext.java   |  4 +-
 .../metamodel/interactions/ValidityContext.java    |  4 +-
 .../metamodel/interactions/VisibilityContext.java  |  4 +-
 .../apache/isis/core/metamodel/spec/Instance.java  | 42 -----------
 .../spec/{Instance.java => ManagedObject.java}     | 50 ++++++++-----
 .../core/metamodel/spec/ObjectSpecification.java   | 17 ++---
 .../metamodel/spec/feature/ObjectAssociation.java  |  1 -
 .../core/metamodel/spec/feature/ObjectMember.java  |  7 +-
 .../spec/feature/OneToOneAssociation.java          |  9 ++-
 .../specimpl/ObjectActionContributee.java          |  5 +-
 .../specloader/specimpl/ObjectActionDefault.java   |  5 +-
 .../specloader/specimpl/ObjectActionMixedIn.java   |  5 +-
 .../specloader/specimpl/ObjectMemberAbstract.java  | 15 ++--
 .../specimpl/ObjectSpecificationAbstract.java      | 23 +++---
 .../specimpl/OneToManyAssociationContributee.java  |  5 +-
 .../specimpl/OneToManyAssociationDefault.java      |  5 +-
 .../specimpl/OneToManyAssociationMixedIn.java      |  5 +-
 .../specimpl/OneToOneAssociationContributee.java   |  5 +-
 .../specimpl/OneToOneAssociationDefault.java       | 34 ++++++---
 .../specimpl/OneToOneAssociationMixedIn.java       |  5 +-
 .../specimpl/dflt/ObjectSpecificationDefault.java  |  4 +-
 .../ObjectSpecificationOnStandaloneList.java       | 12 ++--
 .../authorization/AuthorizationManager.java        |  6 +-
 .../standard/AuthorizationManagerStandard.java     |  6 +-
 .../CollectionAnnotationFacetFactoryTest.java      | 12 ++--
 .../PropertyAnnotationFacetFactoryTest.java        |  4 +-
 .../ApplicationFeatureRepositoryDefaultTest.java   | 26 +++----
 .../specimpl/ObjectAssociationAbstractTest.java    | 12 ++--
 ...ObjectAssociationAbstractTest_alwaysHidden.java |  8 +--
 .../testspec/ObjectSpecificationStub.java          | 24 +++----
 .../system/persistence/PersistenceSession4.java    |  4 +-
 .../runtime/system/ObjectMemberAbstractTest.java   | 29 ++++----
 ...FactoryDefaultTest_wrappedObject_transient.java |  7 +-
 .../system/persistence/PersistenceSession5.java    |  4 +-
 .../runtime/system/ObjectMemberAbstractTest.java   | 26 +++----
 .../runtime/persistence/adapter/PojoAdapter.java   |  5 ++
 .../adaptermanager/ObjectAdapterContext.java       |  4 +-
 ...ObjectAdapterContext_LifecycleEventSupport.java |  3 +-
 .../imagecache/ImageResourceCacheClassPath.java    |  4 +-
 .../wicket/model/models/ImageResourceCache.java    |  4 +-
 142 files changed, 515 insertions(+), 484 deletions(-)

diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthorizationManagerAllowAll.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthorizationManagerAllowAll.java
index cde743f..4dcf900 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthorizationManagerAllowAll.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/AuthorizationManagerAllowAll.java
@@ -21,8 +21,8 @@ package org.apache.isis.core.integtestsupport.components;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.runtime.authorization.AuthorizationManager;
 
 public class AuthorizationManagerAllowAll implements AuthorizationManager {
@@ -36,12 +36,12 @@ public class AuthorizationManagerAllowAll implements AuthorizationManager {
     }
 
     @Override
-    public boolean isUsable(final AuthenticationSession session, final ObjectAdapter target, final Identifier identifier) {
+    public boolean isUsable(final AuthenticationSession session, final ManagedObject target, final Identifier identifier) {
         return true;
     }
 
     @Override
-    public boolean isVisible(final AuthenticationSession session, final ObjectAdapter target, final Identifier identifier) {
+    public boolean isVisible(final AuthenticationSession session, final ManagedObject target, final Identifier identifier) {
         return true;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
index 20feb29..e28052e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
@@ -46,6 +46,7 @@ import org.apache.isis.core.metamodel.interactions.ObjectVisibilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
 import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.Specification;
 
@@ -54,21 +55,21 @@ import org.apache.isis.core.metamodel.spec.Specification;
  * domain objects and those objects are represented within the NOF through these
  * adapter, and not directly.
  */
-public interface ObjectAdapter extends Instance {
-
-    /**
-     * Refines {@link Instance#getSpecification()}.
-     */
-    @Override
-    ObjectSpecification getSpecification();
-
-    /**
-     * Returns the adapted domain object, the POJO, that this adapter represents
-     * with the framework.
-     */
-    @Override
-    Object getObject();
+public interface ObjectAdapter extends ManagedObject {
 
+//    /**
+//     * Refines {@link Instance#getSpecification()}.
+//     */
+//    @Override
+//    ObjectSpecification getSpecification();
+//
+//    /**
+//     * Returns the adapted domain object, the POJO, that this adapter represents
+//     * with the framework.
+//     */
+//    @Override
+//    Object getObject();
+    
     /**
      * Returns the title to display this object with, usually obtained from
      * the wrapped {@link #getObject() domain object}.
@@ -195,36 +196,36 @@ public interface ObjectAdapter extends Instance {
 
         private Util() {}
 
-        public static Object unwrap(final Instance adapter) {
+        public static Object unwrap(final ManagedObject adapter) {
             return adapter != null ? adapter.getObject() : null;
         }
 
-        public static Object[] unwrap(final Instance[] adapters) {
+        public static Object[] unwrap(final ManagedObject[] adapters) {
             if (adapters == null) {
                 return null;
             }
             final Object[] unwrappedObjects = new Object[adapters.length];
             int i = 0;
-            for (final Instance adapter : adapters) {
+            for (final ManagedObject adapter : adapters) {
                 unwrappedObjects[i++] = unwrap(adapter);
             }
             return unwrappedObjects;
         }
 
-        public static List<Object> unwrap(final List<? extends Instance> adapters) {
+        public static List<Object> unwrap(final List<? extends ManagedObject> adapters) {
             List<Object> objects = _Lists.newArrayList();
-            for (Instance adapter : adapters) {
+            for (ManagedObject adapter : adapters) {
                 objects.add(unwrap(adapter));
             }
             return objects;
         }
 
         @SuppressWarnings("unchecked")
-        public static <T> List<T> unwrapT(final List<? extends Instance> adapters) {
+        public static <T> List<T> unwrapT(final List<? extends ManagedObject> adapters) {
             return (List<T>) unwrap(adapters);
         }
 
-        public static String unwrapAsString(final ObjectAdapter adapter) {
+        public static String unwrapAsString(final ManagedObject adapter) {
             final Object obj = unwrap(adapter);
             if (obj == null) {
                 return null;
@@ -239,11 +240,11 @@ public interface ObjectAdapter extends Instance {
             return adapter != null ? adapter.titleString(null) : "";
         }
 
-        public static boolean exists(final ObjectAdapter adapter) {
+        public static boolean exists(final ManagedObject adapter) {
             return adapter != null && adapter.getObject() != null;
         }
 
-        public static boolean wrappedEqual(final ObjectAdapter adapter1, final ObjectAdapter adapter2) {
+        public static boolean wrappedEqual(final ManagedObject adapter1, final ManagedObject adapter2) {
             final boolean defined1 = exists(adapter1);
             final boolean defined2 = exists(adapter2);
             if (defined1 && !defined2) {
@@ -268,9 +269,9 @@ public interface ObjectAdapter extends Instance {
             if (obj1.equals(obj2)) {
                 return true;
             }
-            if (obj1 instanceof ObjectAdapter && obj2 instanceof ObjectAdapter) {
-                final ObjectAdapter adapterObj1 = (ObjectAdapter) obj1;
-                final ObjectAdapter adapterObj2 = (ObjectAdapter) obj2;
+            if (obj1 instanceof ManagedObject && obj2 instanceof ManagedObject) {
+                final ManagedObject adapterObj1 = (ManagedObject) obj1;
+                final ManagedObject adapterObj2 = (ManagedObject) obj2;
                 return nullSafeEquals(adapterObj1.getObject(), adapterObj2.getObject());
             }
             return false;
@@ -357,33 +358,33 @@ public interface ObjectAdapter extends Instance {
         private InvokeUtils() {
         }
 
-        public static void invokeAll(final Collection<Method> methods, final Instance adapter) {
+        public static void invokeAll(final Collection<Method> methods, final ManagedObject adapter) {
             MethodUtil.invoke(methods, Util.unwrap(adapter));
         }
 
-        public static Object invoke(final Method method, final Instance adapter) {
+        public static Object invoke(final Method method, final ManagedObject adapter) {
             return MethodExtensions.invoke(method, Util.unwrap(adapter));
         }
 
-        public static Object invoke(final Method method, final Instance adapter, final Object arg0) {
+        public static Object invoke(final Method method, final ManagedObject adapter, final Object arg0) {
             return MethodExtensions.invoke(method, Util.unwrap(adapter), new Object[] {arg0});
         }
 
-        public static Object invoke(final Method method, final Instance adapter, final Instance arg0Adapter) {
+        public static Object invoke(final Method method, final ManagedObject adapter, final ManagedObject arg0Adapter) {
             return invoke(method, adapter, Util.unwrap(arg0Adapter));
         }
 
-        public static Object invoke(final Method method, final Instance adapter, final Instance[] argumentAdapters) {
+        public static Object invoke(final Method method, final ManagedObject adapter, final ManagedObject[] argumentAdapters) {
             return MethodExtensions.invoke(method, Util.unwrap(adapter), Util.unwrap(argumentAdapters));
         }
 
-        public static Object invokeC(final Method method, final Instance adapter, 
-                final Stream<Tuple2<Integer, ? extends Instance>> paramsAndIndexes) {
+        public static Object invokeC(final Method method, final ManagedObject adapter, 
+                final Stream<Tuple2<Integer, ? extends ManagedObject>> paramsAndIndexes) {
             return invoke(method, adapter, asArray(paramsAndIndexes, method.getParameterTypes().length));
         }
 
-        private static Instance[] asArray(final Stream<Tuple2<Integer, ? extends Instance>> paramsAndIndexes, int length) {
-            final Instance[] args = new Instance[length];
+        private static ManagedObject[] asArray(final Stream<Tuple2<Integer, ? extends ManagedObject>> paramsAndIndexes, int length) {
+            final ManagedObject[] args = new ManagedObject[length];
             paramsAndIndexes.forEach(entry->{
                 final Integer paramNum = entry.get_1();
                 if(paramNum < length) {
@@ -405,23 +406,23 @@ public interface ObjectAdapter extends Instance {
          */
         public static Object invokeAutofit(
                 final Method method, 
-                final Instance target, 
-                List<? extends Instance> argumentsIfAvailable/*, 
+                final ManagedObject target, 
+                List<? extends ManagedObject> argumentsIfAvailable/*, 
                 final SpecificationLoader specLoader*/) {
             
-            final List<Instance> args = _Lists.newArrayList();
+            final List<ManagedObject> args = _Lists.newArrayList();
             if(argumentsIfAvailable != null) {
                 args.addAll(argumentsIfAvailable);
             }
 
             adjust(method, args/*, specLoader*/);
 
-            final Instance[] argArray = args.toArray(new Instance[]{});
+            final ManagedObject[] argArray = args.toArray(new ManagedObject[]{});
             return invoke(method, target, argArray);
         }
 
         private static void adjust(
-                final Method method, final List<Instance> args /*, final SpecificationLoader specLoader*/) {
+                final Method method, final List<ManagedObject> args /*, final SpecificationLoader specLoader*/) {
             
             final Class<?>[] parameterTypes = method.getParameterTypes();
             ListExtensions.adjust(args, parameterTypes.length);
@@ -431,7 +432,7 @@ public interface ObjectAdapter extends Instance {
                 if(args.get(i) == null && cls.isPrimitive()) {
                     final Object object = ClassExtensions.toDefault(cls);
                     
-                    final Instance adapter = Instance.of((ObjectSpecification)null, object);
+                    final ManagedObject adapter = ManagedObject.of((ObjectSpecification)null, object);
                     args.set(i, adapter);
                 }
             }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
index 667ac22..32ae65f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
@@ -37,6 +37,7 @@ import org.apache.isis.applib.services.eventbus.EventBusService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 
@@ -57,9 +58,9 @@ public class DomainEventHelper {
             final ActionDomainEvent<?> existingEvent,
             final ObjectAction objectAction,
             final IdentifiedHolder identified,
-            final ObjectAdapter targetAdapter,
-            final ObjectAdapter mixedInAdapter,
-            final ObjectAdapter[] argumentAdapters,
+            final ManagedObject targetAdapter,
+            final ManagedObject mixedInAdapter,
+            final ManagedObject[] argumentAdapters,
             final Command command,
             final ObjectAdapter resultAdapter) {
 
@@ -176,7 +177,7 @@ public class DomainEventHelper {
             final Class eventType,
             final PropertyDomainEvent<?, ?> existingEvent,
             final IdentifiedHolder identified,
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Object oldValue,
             final Object newValue) {
 
@@ -266,7 +267,7 @@ public class DomainEventHelper {
             final Class eventType,
             final CollectionDomainEvent<?, ?> existingEvent,
             final IdentifiedHolder identified,
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final CollectionDomainEvent.Of of,
             final Object reference) {
         try {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
index f83cd3a..5319aa3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
@@ -23,10 +23,10 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenFacetForActionAnnotation extends HiddenFacetAbstract {
 
@@ -47,7 +47,7 @@ public class HiddenFacetForActionAnnotation extends HiddenFacetAbstract {
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
index b0a1b48..5fcb378 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
@@ -29,7 +29,6 @@ import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._Tuples.Tuple2;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
@@ -42,6 +41,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
@@ -119,13 +119,13 @@ extends SingleClassValueFacetAbstract implements ActionDomainEventFacet {
         return ((ActionInteractionContext) ic).getObjectAction();
     }
 
-    private static ObjectAdapter[] argumentAdaptersFrom(final InteractionContext<? extends InteractionEvent> ic) {
-        final Tuple2<Integer, ObjectAdapter> contributee = ic.getContributeeWithParamIndex();
+    private static ManagedObject[] argumentAdaptersFrom(final InteractionContext<? extends InteractionEvent> ic) {
+        final Tuple2<Integer, ManagedObject> contributee = ic.getContributeeWithParamIndex();
         
         if(contributee!=null) {
             int paramIndex = contributee.get_1(); 
-            ObjectAdapter adapter = contributee.get_2();
-            return new ObjectAdapter[]{paramIndex==0 ? adapter : null};
+            ManagedObject adapter = contributee.get_2();
+            return new ManagedObject[]{paramIndex==0 ? adapter : null};
         }
         
         return null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java
index a5d28d7..183c915 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java
@@ -23,10 +23,10 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenFacetForActionLayoutAnnotation extends HiddenFacetAbstract {
 
@@ -47,7 +47,7 @@ public class HiddenFacetForActionLayoutAnnotation extends HiddenFacetAbstract {
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionXml.java
index 91477a8..3fe19e2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionXml.java
@@ -21,10 +21,10 @@ package org.apache.isis.core.metamodel.facets.actions.layout;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.ActionLayoutData;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenFacetForActionXml extends HiddenFacetAbstract {
 
@@ -41,7 +41,7 @@ public class HiddenFacetForActionXml extends HiddenFacetAbstract {
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionParameterValidationFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionParameterValidationFacet.java
index b443376..017a29c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionParameterValidationFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionParameterValidationFacet.java
@@ -19,9 +19,9 @@
 
 package org.apache.isis.core.metamodel.facets.actions.validate;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * The mechanism by which a single parameter of the action can be validated
@@ -41,5 +41,5 @@ public interface ActionParameterValidationFacet extends Facet, ValidatingInterac
     /**
      * Reason why the validation has failed, or <tt>null</tt> if okay.
      */
-    public String invalidReason(ObjectAdapter target, ObjectAdapter arguments);
+    public String invalidReason(ManagedObject target, ManagedObject arguments);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionValidationFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionValidationFacet.java
index 5db3ded..460f653 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionValidationFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionValidationFacet.java
@@ -19,10 +19,10 @@
 
 package org.apache.isis.core.metamodel.facets.actions.validate;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * The mechanism by which the set of parameters of the action can be validated
@@ -43,5 +43,5 @@ public interface ActionValidationFacet extends Facet, ValidatingInteractionAdvis
     /**
      * Reason why the validation has failed, or <tt>null</tt> if okay.
      */
-    public String invalidReason(ObjectAdapter target, ObjectAdapter[] arguments);
+    public String invalidReason(ManagedObject target, ManagedObject[] arguments);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionParameterValidationFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionParameterValidationFacetViaMethod.java
index 9d08187..a0c96d6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionParameterValidationFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionParameterValidationFacetViaMethod.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.actions.validate.ActionParameterValidationFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class ActionParameterValidationFacetViaMethod extends ActionParameterValidationFacetAbstract implements ImperativeFacet {
 
@@ -58,7 +59,7 @@ public class ActionParameterValidationFacetViaMethod extends ActionParameterVali
     }
 
     @Override
-    public String invalidReason(final ObjectAdapter owningAdapter, final ObjectAdapter proposedArgumentAdapter) {
+    public String invalidReason(final ManagedObject owningAdapter, final ManagedObject proposedArgumentAdapter) {
         final Object returnValue = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter, proposedArgumentAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethod.java
index 5414c43..5f1e835 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethod.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.actions.validate.ActionValidationFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class ActionValidationFacetViaMethod extends ActionValidationFacetAbstract implements ImperativeFacet {
 
@@ -58,7 +59,7 @@ public class ActionValidationFacetViaMethod extends ActionValidationFacetAbstrac
     }
 
     @Override
-    public String invalidReason(final ObjectAdapter owningAdapter, final ObjectAdapter[] proposedArgumentAdapters) {
+    public String invalidReason(final ManagedObject owningAdapter, final ManagedObject[] proposedArgumentAdapters) {
         final Object returnValue = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter, proposedArgumentAdapters);
         if(returnValue instanceof String) {
             return (String) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index 2118712..8d08253 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
@@ -73,7 +73,7 @@ implements ImperativeFacet {
 
     @Override
     public Object getProperty(
-            final Instance owningAdapter,
+            final ManagedObject owningAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         final Object collectionOrArray = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
         if(collectionOrArray == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
index 0f57725..2cb8894 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
@@ -23,10 +23,10 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenFacetForCollectionAnnotation extends HiddenFacetAbstract {
 
@@ -47,7 +47,7 @@ public class HiddenFacetForCollectionAnnotation extends HiddenFacetAbstract {
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/disabled/fromimmutable/DisabledFacetOnCollectionDerivedFromImmutable.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/disabled/fromimmutable/DisabledFacetOnCollectionDerivedFromImmutable.java
index d94e5f9..36b0c55 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/disabled/fromimmutable/DisabledFacetOnCollectionDerivedFromImmutable.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/disabled/fromimmutable/DisabledFacetOnCollectionDerivedFromImmutable.java
@@ -20,10 +20,10 @@
 package org.apache.isis.core.metamodel.facets.collections.disabled.fromimmutable;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class DisabledFacetOnCollectionDerivedFromImmutable extends DisabledFacetAbstract {
 
@@ -32,7 +32,7 @@ public class DisabledFacetOnCollectionDerivedFromImmutable extends DisabledFacet
     }
 
     @Override
-    public String disabledReason(final ObjectAdapter target) {
+    public String disabledReason(final ManagedObject target) {
         return "Immutable";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java
index 713712b..e5b4d49 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java
@@ -24,10 +24,10 @@ import java.util.Objects;
 
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenFacetForCollectionLayoutAnnotation extends HiddenFacetAbstract {
 
@@ -46,7 +46,7 @@ public class HiddenFacetForCollectionLayoutAnnotation extends HiddenFacetAbstrac
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
index 6bb31c1..2cd0001 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
@@ -21,10 +21,10 @@ package org.apache.isis.core.metamodel.facets.collections.layout;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.CollectionLayoutData;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenFacetForCollectionXml extends HiddenFacetAbstract {
 
@@ -41,7 +41,7 @@ public class HiddenFacetForCollectionXml extends HiddenFacetAbstract {
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacet.java
index 8e3db5d..b6a97f0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacet.java
@@ -19,9 +19,9 @@
 
 package org.apache.isis.core.metamodel.facets.collections.validate;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Validate that an object can be added to a collection.
@@ -36,5 +36,5 @@ public interface CollectionValidateAddToFacet extends Facet, ValidatingInteracti
     /**
      * Reason the object cannot be added, or <tt>null</tt> if okay.
      */
-    public String invalidReason(ObjectAdapter target, ObjectAdapter proposedArgument);
+    public String invalidReason(ManagedObject target, ManagedObject proposedArgument);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetViaMethod.java
index 455cab6..c97f2c3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetViaMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class CollectionValidateAddToFacetViaMethod extends CollectionValidateAddToFacetAbstract implements ImperativeFacet {
 
@@ -57,7 +58,7 @@ public class CollectionValidateAddToFacetViaMethod extends CollectionValidateAdd
     }
 
     @Override
-    public String invalidReason(final ObjectAdapter owningAdapter, final ObjectAdapter proposedAdapter) {
+    public String invalidReason(final ManagedObject owningAdapter, final ManagedObject proposedAdapter) {
         final Object returnValue = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter, proposedAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacet.java
index 271f47f..e097440 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacet.java
@@ -19,9 +19,9 @@
 
 package org.apache.isis.core.metamodel.facets.collections.validate;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Validate that an object can be removed to a collection.
@@ -35,5 +35,5 @@ public interface CollectionValidateRemoveFromFacet extends Facet, ValidatingInte
     /**
      * Reason the object cannot be removed, or <tt>null</tt> if okay.
      */
-    public String invalidReason(ObjectAdapter inObject, ObjectAdapter value);
+    public String invalidReason(ManagedObject inObject, ManagedObject value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetViaMethod.java
index c763e71..e8570c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetViaMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class CollectionValidateRemoveFromFacetViaMethod extends CollectionValidateRemoveFromFacetAbstract implements ImperativeFacet {
 
@@ -57,7 +58,7 @@ public class CollectionValidateRemoveFromFacetViaMethod extends CollectionValida
     }
 
     @Override
-    public String invalidReason(final ObjectAdapter owningAdapter, final ObjectAdapter proposedAdapter) {
+    public String invalidReason(final ManagedObject owningAdapter, final ManagedObject proposedAdapter) {
         final Object returnValue = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter, proposedAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/TitleFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/TitleFacetNone.java
index 6ce4dbe..08de3b7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/TitleFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/TitleFacetNone.java
@@ -19,9 +19,9 @@
 
 package org.apache.isis.core.metamodel.facets.fallback;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class TitleFacetNone extends TitleFacetAbstract {
 
@@ -30,7 +30,7 @@ public class TitleFacetNone extends TitleFacetAbstract {
     }
 
     @Override
-    public String title(final ObjectAdapter object) {
+    public String title(final ManagedObject object) {
         return null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassFacet.java
index 8766c81..5a987d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassFacet.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.facets.members.cssclass;
 
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * The css class of a class, a property, collection, or an action.
@@ -32,6 +32,6 @@ public interface CssClassFacet extends Facet {
      *
      * @param objectAdapter - to evaluate.  May be <tt>null</tt> in exceptional circumstances (specifically: the {@link org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson#asJson(org.apache.isis.core.metamodel.spec.ObjectSpecification)} which generates <tt>xxx.layout.json</tt> for a spec without recourse to any given object).
      */
-    public String cssClass(final Instance objectAdapter);
+    public String cssClass(final ManagedObject objectAdapter);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassFacetAbstract.java
index a823c52..0b0272e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/CssClassFacetAbstract.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.members.cssclass;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class CssClassFacetAbstract extends FacetAbstract implements CssClassFacet {
 
@@ -38,7 +38,7 @@ public abstract class CssClassFacetAbstract extends FacetAbstract implements Css
     }
 
     @Override
-    public String cssClass(final Instance objectAdapter) {
+    public String cssClass(final ManagedObject objectAdapter) {
         return value;
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
index d780ae4..095f1b1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
@@ -19,11 +19,11 @@
 
 package org.apache.isis.core.metamodel.facets.members.disabled;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.WhereValueFacet;
 import org.apache.isis.core.metamodel.interactions.DisablingInteractionAdvisor;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Disable a property, collection or action.
@@ -38,10 +38,10 @@ public interface DisabledFacet extends WhereValueFacet, DisablingInteractionAdvi
      * The reason why the (feature of the) target object is currently disabled,
      * or <tt>null</tt> if enabled.
      */
-    public String disabledReason(ObjectAdapter target);
+    public String disabledReason(ManagedObject target);
 
     /**
-     * Indicates that the implementation is overridding the usual semantics, in
+     * Indicates that the implementation is overriding the usual semantics, in
      * other words that the {@link FacetHolder} to which this {@link Facet} is
      * attached is <i>not</i> mandatory.
      */
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
index 44a9f1a..af11e2e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
@@ -21,12 +21,12 @@ package org.apache.isis.core.metamodel.facets.members.disabled;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.WhereValueFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.ActionUsabilityContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToManyAssociationContributee;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationContributee;
 
@@ -73,7 +73,7 @@ public abstract class DisabledFacetAbstract extends WhereValueFacetAbstract impl
             // otherwise ends up vetoing the invocation of the contributing action
             return null;
         }
-        final ObjectAdapter target = ic.getTarget();
+        final ManagedObject target = ic.getTarget();
         final String disabledReason = disabledReason(target);
         if (disabledReason != null) {
             return disabledReason;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java
index 15d13f9..f293f3e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java
@@ -20,8 +20,8 @@
 package org.apache.isis.core.metamodel.facets.members.disabled;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class DisabledFacetAbstractAlwaysEverywhere extends DisabledFacetAbstract {
 
@@ -33,7 +33,7 @@ public abstract class DisabledFacetAbstractAlwaysEverywhere extends DisabledFace
      * Always returns <i>Always disabled</i>.
      */
     @Override
-    public String disabledReason(final ObjectAdapter target) {
+    public String disabledReason(final ManagedObject target) {
         return "Always disabled";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
index ab48c28..a561969 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
@@ -21,8 +21,8 @@ package org.apache.isis.core.metamodel.facets.members.disabled;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class DisabledFacetAbstractImpl extends DisabledFacetAbstract {
 
@@ -57,7 +57,7 @@ public abstract class DisabledFacetAbstractImpl extends DisabledFacetAbstract {
     }
 
     @Override
-    public String disabledReason(final ObjectAdapter targetAdapter) {
+    public String disabledReason(final ManagedObject targetAdapter) {
         return disabledReasonElse("Always disabled");
 
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethod.java
index 24db424..d486782 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethod.java
@@ -31,6 +31,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class DisableForContextFacetViaMethod extends DisableForContextFacetAbstract implements ImperativeFacet {
 
@@ -67,7 +68,7 @@ public class DisableForContextFacetViaMethod extends DisableForContextFacetAbstr
      */
     @Override
     public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
-        final ObjectAdapter target = ic.getTarget();
+        final ManagedObject target = ic.getTarget();
         if (target == null) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
index 2e0492e..1623d8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
@@ -26,12 +26,12 @@ import java.util.stream.Stream;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.WhereValueFacetAbstract;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * This implements {@link org.apache.isis.core.metamodel.facetapi.MultiTypedFacet} so that each concrete implementation
@@ -75,7 +75,7 @@ public abstract class HiddenFacetAbstract extends WhereValueFacetAbstract implem
      * The reason why the (feature of the) target object is currently hidden, or
      * <tt>null</tt> if visible.
      */
-    protected abstract String hiddenReason(ObjectAdapter target, Where whereContext);
+    protected abstract String hiddenReason(ManagedObject target, Where whereContext);
 
     @Override
     public Stream<Class<? extends Facet>> facetTypes() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java
index 055a4dd..9c73805 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java
@@ -20,9 +20,9 @@
 package org.apache.isis.core.metamodel.facets.members.hidden;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class HiddenFacetAbstractAlwaysEverywhere extends HiddenFacetAbstract {
 
@@ -43,7 +43,7 @@ public abstract class HiddenFacetAbstractAlwaysEverywhere extends HiddenFacetAbs
      * Always returns <i>Always hidden</i>.
      */
     @Override
-    public String hiddenReason(final ObjectAdapter target, Where where) {
+    public String hiddenReason(final ManagedObject target, Where where) {
         return "Always hidden";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java
index 10143f9..f499c78 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java
@@ -20,9 +20,9 @@
 package org.apache.isis.core.metamodel.facets.members.hidden;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class HiddenFacetAbstractImpl extends HiddenFacetAbstract {
 
@@ -41,7 +41,7 @@ public abstract class HiddenFacetAbstractImpl extends HiddenFacetAbstract {
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetFromLayoutPropertiesAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetFromLayoutPropertiesAbstract.java
index ebf04c4..c1b14a6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetFromLayoutPropertiesAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetFromLayoutPropertiesAbstract.java
@@ -23,8 +23,8 @@ import java.util.Properties;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class HiddenFacetFromLayoutPropertiesAbstract extends HiddenFacetAbstract {
 
@@ -44,7 +44,7 @@ public abstract class HiddenFacetFromLayoutPropertiesAbstract extends HiddenFace
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethod.java
index 2d4dfe9..eb31b5b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethod.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HideForContextFacetViaMethod extends HideForContextFacetAbstract implements ImperativeFacet {
 
@@ -55,7 +56,7 @@ public class HideForContextFacetViaMethod extends HideForContextFacetAbstract im
 
     @Override
     public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
-        final ObjectAdapter target = ic.getTarget();
+        final ManagedObject target = ic.getTarget();
         if (target == null) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacet.java
index c859390..411a980 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacet.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.callbacks;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.ImperativeFacetMulti;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * A {@link Facet} that represents some type of lifecycle callback on the object
@@ -30,14 +30,14 @@ import org.apache.isis.core.metamodel.spec.Instance;
  */
 public interface CallbackFacet extends Facet, ImperativeFacetMulti {
 
-    public void invoke(Instance object);
+    public void invoke(ManagedObject object);
 
     public static final class Util {
 
         private Util() {
         }
 
-        public static void callCallback(final Instance object, final Class<? extends Facet> cls) {
+        public static void callCallback(final ManagedObject object, final Class<? extends Facet> cls) {
             final CallbackFacet facet = (CallbackFacet) object.getSpecification().getFacet(cls);
             if (facet != null) {
                 try {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetViaMethod.java
index b3f9312..a4dc1f5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetViaMethod.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class CreatedCallbackFacetViaMethod extends CreatedCallbackFacetAbstract implements ImperativeFacet {
 
@@ -54,7 +54,7 @@ public class CreatedCallbackFacetViaMethod extends CreatedCallbackFacetAbstract
     }
 
     @Override
-    public void invoke(final Instance adapter) {
+    public void invoke(final ManagedObject adapter) {
         ObjectAdapter.InvokeUtils.invokeAll(methods, adapter);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetViaMethod.java
index c941d7e..21338d3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetViaMethod.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class LoadedCallbackFacetViaMethod extends LoadedCallbackFacetAbstract implements ImperativeFacet {
 
@@ -54,7 +54,7 @@ public class LoadedCallbackFacetViaMethod extends LoadedCallbackFacetAbstract im
     }
 
     @Override
-    public void invoke(final Instance adapter) {
+    public void invoke(final ManagedObject adapter) {
         ObjectAdapter.InvokeUtils.invokeAll(methods, adapter);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadingCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadingCallbackFacetViaMethod.java
index e34ccf9..f740784 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadingCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadingCallbackFacetViaMethod.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * @deprecated - THIS CAN NEVER BE CALLED (BY JDO OBJECTSTORE AT LEAST)
@@ -58,7 +58,7 @@ public class LoadingCallbackFacetViaMethod extends LoadingCallbackFacetAbstract
     }
 
     @Override
-    public void invoke(final Instance adapter) {
+    public void invoke(final ManagedObject adapter) {
         ObjectAdapter.InvokeUtils.invokeAll(methods, adapter);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetViaMethod.java
index 19faec3..8469b1d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetViaMethod.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class PersistedCallbackFacetViaMethod extends PersistedCallbackFacetAbstract implements ImperativeFacet {
 
@@ -54,7 +54,7 @@ public class PersistedCallbackFacetViaMethod extends PersistedCallbackFacetAbstr
     }
 
     @Override
-    public void invoke(final Instance adapter) {
+    public void invoke(final ManagedObject adapter) {
         ObjectAdapter.InvokeUtils.invokeAll(methods, adapter);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetViaMethod.java
index 801c917..ad1e428 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetViaMethod.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class PersistingCallbackFacetViaMethod extends PersistingCallbackFacetAbstract implements ImperativeFacet {
 
@@ -54,7 +54,7 @@ public class PersistingCallbackFacetViaMethod extends PersistingCallbackFacetAbs
     }
 
     @Override
-    public void invoke(final Instance adapter) {
+    public void invoke(final ManagedObject adapter) {
         ObjectAdapter.InvokeUtils.invokeAll(methods, adapter);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovedCallbackFacetViaMethod.java
index 5de6333..228c61e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovedCallbackFacetViaMethod.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * @deprecated - cannot touch a pojo once deleted
@@ -58,7 +58,7 @@ public class RemovedCallbackFacetViaMethod extends RemovedCallbackFacetAbstract
     }
 
     @Override
-    public void invoke(final Instance adapter) {
+    public void invoke(final ManagedObject adapter) {
         ObjectAdapter.InvokeUtils.invokeAll(methods, adapter);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetViaMethod.java
index e8d54b4..5616979 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetViaMethod.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class RemovingCallbackFacetViaMethod extends RemovingCallbackFacetAbstract implements ImperativeFacet {
 
@@ -54,7 +54,7 @@ public class RemovingCallbackFacetViaMethod extends RemovingCallbackFacetAbstrac
     }
 
     @Override
-    public void invoke(final Instance adapter) {
+    public void invoke(final ManagedObject adapter) {
         ObjectAdapter.InvokeUtils.invokeAll(methods, adapter);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetViaMethod.java
index e6b63f0..a4e370e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetViaMethod.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class UpdatedCallbackFacetViaMethod extends UpdatedCallbackFacetAbstract implements ImperativeFacet {
 
@@ -54,7 +54,7 @@ public class UpdatedCallbackFacetViaMethod extends UpdatedCallbackFacetAbstract
     }
 
     @Override
-    public void invoke(final Instance adapter) {
+    public void invoke(final ManagedObject adapter) {
         ObjectAdapter.InvokeUtils.invokeAll(methods, adapter);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetViaMethod.java
index 30f4a76..5de5ea7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetViaMethod.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.commons.lang.Wormhole;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class UpdatingCallbackFacetViaMethod extends UpdatingCallbackFacetAbstract implements ImperativeFacet {
 
@@ -54,7 +54,7 @@ public class UpdatingCallbackFacetViaMethod extends UpdatingCallbackFacetAbstrac
     }
 
     @Override
-    public void invoke(final Instance adapter) {
+    public void invoke(final ManagedObject adapter) {
         Wormhole.invoke(()->ObjectAdapter.InvokeUtils.invokeAll(methods, adapter));
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
index 9fe99a0..9811847 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
@@ -42,6 +42,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 /**
@@ -88,7 +89,7 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
         if (!(context instanceof ObjectValidityContext)) {
             return null;
         }
-        final ObjectAdapter target = context.getTarget();
+        final ManagedObject target = context.getTarget();
         if(target == null) {
             return null;
         }
@@ -109,14 +110,14 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
 
     @Override
     public String disables(final UsabilityContext<? extends UsabilityEvent> context) {
-        final ObjectAdapter target = context.getTarget();
+        final ManagedObject target = context.getTarget();
         return disabledReason(target);
     }
 
     /**
      * Optional hook method for subclasses to override.
      */
-    public String disabledReason(final ObjectAdapter inObject) {
+    public String disabledReason(final ManagedObject inObject) {
         return "Bounded";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/method/CssClassFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/method/CssClassFacetMethod.java
index bb2047c..0b3f3db 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/method/CssClassFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/method/CssClassFacetMethod.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class CssClassFacetMethod extends FacetAbstract implements CssClassFacet {
 
@@ -43,7 +43,7 @@ public class CssClassFacetMethod extends FacetAbstract implements CssClassFacet
     }
 
     @Override
-    public String cssClass(final Instance owningAdapter) {
+    public String cssClass(final ManagedObject owningAdapter) {
         if(owningAdapter == null) {
             return "";
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/DisabledObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/DisabledObjectFacetAbstract.java
index 383e3e7..559b0b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/DisabledObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/DisabledObjectFacetAbstract.java
@@ -21,11 +21,11 @@ package org.apache.isis.core.metamodel.facets.object.disabled;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class DisabledObjectFacetAbstract extends FacetAbstract implements DisabledObjectFacet {
 
@@ -42,11 +42,11 @@ public abstract class DisabledObjectFacetAbstract extends FacetAbstract implemen
         if (!(ic instanceof UsabilityContext)) {
             return null;
         }
-        final ObjectAdapter toDisable = ic.getTarget();
+        final ManagedObject toDisable = ic.getTarget();
         final Identifier identifier = ic.getIdentifier();
         return toDisable != null ? disabledReason(toDisable, identifier) : null;
     }
 
-    protected abstract String disabledReason(ObjectAdapter toDisable, Identifier identifier);
+    protected abstract String disabledReason(ManagedObject toDisable, Identifier identifier);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethod.java
index 6e5f8c5..9abcebe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethod.java
@@ -32,6 +32,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.object.disabled.DisabledObjectFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class DisabledObjectFacetViaMethod extends DisabledObjectFacetAbstract implements ImperativeFacet {
 
@@ -61,7 +62,7 @@ public class DisabledObjectFacetViaMethod extends DisabledObjectFacetAbstract im
     }
 
     @Override
-    public String disabledReason(final ObjectAdapter owningAdapter, final Identifier identifier) {
+    public String disabledReason(final ManagedObject owningAdapter, final Identifier identifier) {
         final Type type = identifier.getType();
         final Object returnValue = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter, type);
         if(returnValue instanceof String) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
index c329556..c5bd46b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
@@ -25,12 +25,12 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class ImmutableFacetForDomainObjectAnnotation extends ImmutableFacetAbstract {
 
@@ -78,7 +78,7 @@ public class ImmutableFacetForDomainObjectAnnotation extends ImmutableFacetAbstr
     }
 
     @Override
-    public String disabledReason(final ObjectAdapter targetAdapter) {
+    public String disabledReason(final ManagedObject targetAdapter) {
         return !_Strings.isNullOrEmpty(reason)
                 ? reason
                         : super.disabledReason(targetAdapter);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetFromConfiguration.java
index c589b5d..3ecd978 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetFromConfiguration.java
@@ -20,11 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.domainobject.editing;
 
 import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class ImmutableFacetFromConfiguration extends ImmutableFacetAbstract {
 
@@ -36,7 +36,7 @@ public class ImmutableFacetFromConfiguration extends ImmutableFacetAbstract {
     }
 
     @Override
-    public String disabledReason(final ObjectAdapter targetAdapter) {
+    public String disabledReason(final ManagedObject targetAdapter) {
         return !_Strings.isNullOrEmpty(reason)
                 ? reason
                         : super.disabledReason(targetAdapter);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
index ea9d521..a9de856 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstract;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.util.EventUtil;
 
 public class CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent extends FacetAbstract implements
@@ -77,7 +77,7 @@ CssClassFacet {
     }
 
     @Override
-    public String cssClass(final Instance owningAdapter) {
+    public String cssClass(final ManagedObject owningAdapter) {
 
         final CssClassUiEvent<Object> cssClassUiEvent = newCssClassUiEvent(owningAdapter);
 
@@ -97,7 +97,7 @@ CssClassFacet {
         return cssClass;
     }
 
-    private CssClassUiEvent<Object> newCssClassUiEvent(final Instance owningAdapter) {
+    private CssClassUiEvent<Object> newCssClassUiEvent(final ManagedObject owningAdapter) {
         final Object domainObject = owningAdapter.getObject();
         return newCssClassUiEventForPojo(domainObject);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
index 8859cae..4443184 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacetAbstract;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.util.EventUtil;
 
 public class IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent extends IconFacetAbstract {
@@ -77,7 +77,7 @@ public class IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent extends Ic
     }
 
     @Override
-    public String iconName(final Instance owningAdapter) {
+    public String iconName(final ManagedObject owningAdapter) {
 
         final IconUiEvent<Object> iconUiEvent = newIconUiEvent(owningAdapter);
 
@@ -97,7 +97,7 @@ public class IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent extends Ic
         return iconName; // could be null
     }
 
-    private IconUiEvent<Object> newIconUiEvent(final Instance owningAdapter) {
+    private IconUiEvent<Object> newIconUiEvent(final ManagedObject owningAdapter) {
         final Object domainObject = owningAdapter.getObject();
         return newIconUiEventForPojo(domainObject);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
index 26c659f..bcc2902 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
@@ -31,12 +31,12 @@ import org.apache.isis.applib.services.eventbus.EventBusService;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacetAbstract;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.util.EventUtil;
 
@@ -89,7 +89,7 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
     }
 
     @Override
-    public String title(final ObjectAdapter owningAdapter) {
+    public String title(final ManagedObject owningAdapter) {
 
         final TitleUiEvent<Object> titleUiEvent = newTitleUiEvent(owningAdapter);
 
@@ -112,7 +112,7 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
         return title;
     }
 
-    private TitleUiEvent<Object> newTitleUiEvent(final ObjectAdapter owningAdapter) {
+    private TitleUiEvent<Object> newTitleUiEvent(final ManagedObject owningAdapter) {
         final Object domainObject = owningAdapter.getObject();
         return newTitleUiEvent(domainObject);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/IconFacetDerivedFromDomainServiceAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/IconFacetDerivedFromDomainServiceAnnotation.java
index d3bd1cb..5d1df90 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/IconFacetDerivedFromDomainServiceAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/IconFacetDerivedFromDomainServiceAnnotation.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.object.domainservice.annotation;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacetAbstract;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 
 public class IconFacetDerivedFromDomainServiceAnnotation extends IconFacetAbstract {
@@ -34,7 +34,7 @@ public class IconFacetDerivedFromDomainServiceAnnotation extends IconFacetAbstra
     }
 
     @Override
-    public String iconName(Instance object) {
+    public String iconName(ManagedObject object) {
         return repositoryFor.getName();
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java
index b6bcf41..4144d9d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java
@@ -20,11 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.hidden;
 
 import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class HiddenObjectFacetAbstract extends FacetAbstract implements HiddenObjectFacet {
 
@@ -41,10 +41,10 @@ public abstract class HiddenObjectFacetAbstract extends FacetAbstract implements
         if (!(ic instanceof VisibilityContext)) {
             return null;
         }
-        final ObjectAdapter toValidate = ic.getTarget();
+        final ManagedObject toValidate = ic.getTarget();
         return toValidate != null ? hiddenReason(toValidate) : null;
     }
 
-    protected abstract String hiddenReason(ObjectAdapter toHide);
+    protected abstract String hiddenReason(ManagedObject toHide);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java
index ec0a008..bcc48b1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java
@@ -27,6 +27,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.object.hidden.HiddenObjectFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenObjectFacetViaMethod extends HiddenObjectFacetAbstract {
     private final Method method;
@@ -38,12 +39,12 @@ public class HiddenObjectFacetViaMethod extends HiddenObjectFacetAbstract {
 
     @Override
     public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
-        final ObjectAdapter toValidate = ic.getTarget();
+        final ManagedObject toValidate = ic.getTarget();
         return toValidate != null ? hiddenReason(toValidate) : null;
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter target) {
+    public String hiddenReason(final ManagedObject target) {
         if (target == null) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/IconFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/IconFacet.java
index a9c2ccf..c33ef34 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/IconFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/IconFacet.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.facets.object.icon;
 
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /*
  * Icon for an object a class (for example, by placing an appropriately named image
@@ -40,5 +40,5 @@ import org.apache.isis.core.metamodel.spec.Instance;
  */
 public interface IconFacet extends Facet {
 
-    public String iconName(final Instance object);
+    public String iconName(final ManagedObject object);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/method/IconFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/method/IconFacetMethod.java
index 7e19d2b..c98542f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/method/IconFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/method/IconFacetMethod.java
@@ -24,7 +24,7 @@ import java.lang.reflect.Method;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacetAbstract;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class IconFacetMethod extends IconFacetAbstract {
 
@@ -36,7 +36,7 @@ public class IconFacetMethod extends IconFacetAbstract {
     }
 
     @Override
-    public String iconName(final Instance owningAdapter) {
+    public String iconName(final ManagedObject owningAdapter) {
         try {
             return (String) ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
         } catch (final RuntimeException ex) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java
index c1a54e3..9a32406 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java
@@ -20,11 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.immutable;
 
 import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class ImmutableFacetAbstract extends FacetAbstract implements ImmutableFacet {
 
@@ -41,7 +41,7 @@ public abstract class ImmutableFacetAbstract extends FacetAbstract implements Im
      */
     @Override
     public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
-        final ObjectAdapter target = ic.getTarget();
+        final ManagedObject target = ic.getTarget();
         switch (ic.getInteractionType()) {
         case PROPERTY_MODIFY:
         case COLLECTION_ADD_TO:
@@ -53,7 +53,7 @@ public abstract class ImmutableFacetAbstract extends FacetAbstract implements Im
     }
 
     public String disabledReason(
-            final ObjectAdapter targetAdapter) {
+            final ManagedObject targetAdapter) {
         return "Always immmutable";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectvalidprops/impl/ObjectValidPropertiesFacetImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectvalidprops/impl/ObjectValidPropertiesFacetImpl.java
index a14521f..15fa823 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectvalidprops/impl/ObjectValidPropertiesFacetImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectvalidprops/impl/ObjectValidPropertiesFacetImpl.java
@@ -24,6 +24,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -45,7 +46,7 @@ public class ObjectValidPropertiesFacetImpl extends ObjectValidPropertiesFacetAb
     public String invalidReason(
             final ObjectValidityContext context) {
         final StringBuilder buf = new StringBuilder();
-        final ObjectAdapter adapter = context.getTarget();
+        final ManagedObject adapter = context.getTarget();
         
         adapter.getSpecification().streamAssociations(Contributed.EXCLUDED)
         .filter(ObjectAssociation.Predicates.PROPERTIES)
@@ -53,7 +54,7 @@ public class ObjectValidPropertiesFacetImpl extends ObjectValidPropertiesFacetAb
         .filter(property->property.isUsable(adapter, context.getInitiatedBy(), where).isVetoed())  // ignore disabled properties
         .forEach(property->{
             final OneToOneAssociation otoa = (OneToOneAssociation) property;
-            final ObjectAdapter value = otoa.get(adapter, context.getInitiatedBy());
+            final ManagedObject value = otoa.get2(adapter, context.getInitiatedBy());
             if (otoa.isAssociationValid(adapter, value, context.getInitiatedBy()).isVetoed()) {
                 if (buf.length() > 0) {
                     buf.append(", ");
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObject.java
index 1409812..62b4181 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObject.java
@@ -20,10 +20,10 @@
 package org.apache.isis.core.metamodel.facets.object.recreatable;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class DisabledFacetOnCollectionDerivedFromRecreatableObject extends DisabledFacetAbstract {
 
@@ -36,7 +36,7 @@ public class DisabledFacetOnCollectionDerivedFromRecreatableObject extends Disab
     }
 
     @Override
-    public String disabledReason(final ObjectAdapter target) {
+    public String disabledReason(final ManagedObject target) {
         final ViewModelFacet facet = target.getSpecification().getFacet(ViewModelFacet.class);
         final Object targetObject = target.getObject();
         final boolean cloneable = facet.isCloneable(targetObject);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnPropertyDerivedFromRecreatableObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnPropertyDerivedFromRecreatableObject.java
index 49a67dd..41b9a94 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnPropertyDerivedFromRecreatableObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnPropertyDerivedFromRecreatableObject.java
@@ -20,11 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.recreatable;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class DisabledFacetOnPropertyDerivedFromRecreatableObject extends DisabledFacetAbstract {
 
@@ -37,7 +37,7 @@ public class DisabledFacetOnPropertyDerivedFromRecreatableObject extends Disable
     }
 
     @Override
-    public String disabledReason(final ObjectAdapter target) {
+    public String disabledReason(final ManagedObject target) {
         final ViewModelFacet facet = target.getSpecification().getFacet(ViewModelFacet.class);
         final boolean cloneable = facet.isCloneable(target.getObject());
         if (!cloneable) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacet.java
index add0773..bc9c99b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacet.java
@@ -19,10 +19,10 @@
 
 package org.apache.isis.core.metamodel.facets.object.title;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
 import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Mechanism for obtaining the title of an instance of a class, used to label
@@ -40,7 +40,7 @@ public interface TitleFacet extends Facet {
     /**
      * Provide a title for the target object.
      */
-    String title(final ObjectAdapter targetAdapter);
+    String title(final ManagedObject targetAdapter);
 
     /**
      * Provide a title for the target object, in the context of the context object.
@@ -50,6 +50,6 @@ public interface TitleFacet extends Facet {
      * context object would be the parent.  Thus, the title might be shortened so that it does not
      * needlessly incorporate the title of the parent (context) object.
      */
-    String title(final ObjectAdapter contextAdapter, final ObjectAdapter targetAdapter);
+    String title(final ManagedObject contextAdapter, final ManagedObject targetAdapter);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacetAbstract.java
index 6c9721c..618dcc9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacetAbstract.java
@@ -23,6 +23,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class TitleFacetAbstract extends FacetAbstract implements TitleFacet {
 
@@ -38,7 +39,7 @@ public abstract class TitleFacetAbstract extends FacetAbstract implements TitleF
      * Default implementation that simply delegates to {@link TitleFacet#title(ObjectAdapter)}.
      */
     @Override
-    public String title(ObjectAdapter contextAdapter, ObjectAdapter targetAdapter) {
+    public String title(ManagedObject contextAdapter, ManagedObject targetAdapter) {
         return title(targetAdapter);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
index 04e22b8..8e96f69 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
@@ -33,6 +33,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
 
@@ -86,11 +87,11 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
     }
 
     @Override
-    public String title(final ObjectAdapter targetAdapter) {
+    public String title(final ManagedObject targetAdapter) {
         return title(null, targetAdapter);
     }
 
-    private String titleOf(final ObjectAdapter adapter) {
+    private String titleOf(final ManagedObject adapter) {
         if (adapter == null) {
             return null;
         }
@@ -106,7 +107,7 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
     }
 
     @Override
-    public String title(ObjectAdapter contextAdapter, ObjectAdapter targetAdapter) {
+    public String title(ManagedObject contextAdapter, ManagedObject targetAdapter) {
         final StringBuilder stringBuilder = new StringBuilder();
 
         try {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java
index d3731a0..e1e8336 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java
@@ -32,6 +32,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class TitleFacetViaTitleMethod extends TitleFacetAbstract implements ImperativeFacet {
 
@@ -63,7 +64,7 @@ public class TitleFacetViaTitleMethod extends TitleFacetAbstract implements Impe
     }
 
     @Override
-    public String title(final ObjectAdapter owningAdapter) {
+    public String title(final ManagedObject owningAdapter) {
         try {
             final Object returnValue = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
             if(returnValue instanceof String) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaToStringMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaToStringMethod.java
index bfbee8e..d055d41 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaToStringMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaToStringMethod.java
@@ -23,10 +23,10 @@ import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class TitleFacetViaToStringMethod extends TitleFacetAbstract implements ImperativeFacet {
 
@@ -52,7 +52,7 @@ public class TitleFacetViaToStringMethod extends TitleFacetAbstract implements I
     }
 
     @Override
-    public String title(final ObjectAdapter object) {
+    public String title(final ManagedObject object) {
         return object.getObject().toString();
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java
index 710643c..a928dd8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java
@@ -20,11 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.title.parser;
 
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class TitleFacetUsingParser extends FacetAbstract implements TitleFacet {
 
@@ -44,7 +44,7 @@ public class TitleFacetUsingParser extends FacetAbstract implements TitleFacet {
     }
 
     @Override
-    public String title(final ObjectAdapter adapter) {
+    public String title(final ManagedObject adapter) {
         if (adapter == null) {
             return null;
         }
@@ -57,14 +57,14 @@ public class TitleFacetUsingParser extends FacetAbstract implements TitleFacet {
     }
 
     @Override
-    public String title(ObjectAdapter contextAdapter, ObjectAdapter targetAdapter) {
+    public String title(ManagedObject contextAdapter, ManagedObject targetAdapter) {
         return title(targetAdapter);
     }
 
     /**
      * not API
      */
-    public String title(final ObjectAdapter adapter, final String usingMask) {
+    public String title(final ManagedObject adapter, final String usingMask) {
         if (adapter == null) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet.java
index aef0251..db70eaa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.applib.spec.Specification;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -34,6 +33,7 @@ import org.apache.isis.core.metamodel.interactions.ProposedHolder;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * @deprecated
@@ -69,7 +69,7 @@ public class MustSatisfySpecificationFromMustSatisfyAnnotationOnTypeFacet extend
             return null;
         }
         final ProposedHolder proposedHolder = (ProposedHolder) validityContext;
-        final ObjectAdapter targetNO = proposedHolder.getProposed();
+        final ManagedObject targetNO = proposedHolder.getProposed();
         final Object targetObject = targetNO.getObject();
         return specificationEvaluator.evaluation()
                 .evaluate(specifications, targetObject)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacet.java
index 5ea93be..43d2f7b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacet.java
@@ -19,11 +19,11 @@
 
 package org.apache.isis.core.metamodel.facets.object.validating.validateobject;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Mechanism for determining whether this object is in a valid state, for
@@ -50,6 +50,6 @@ public interface ValidateObjectFacet extends Facet, ValidatingInteractionAdvisor
      * <p>
      * . If the object is actually valid, should return <tt>null</tt>.
      */
-    public String invalidReason(ObjectAdapter adapter);
+    public String invalidReason(ManagedObject adapter);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java
index d00ec1a..0702d73 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java
@@ -20,12 +20,12 @@
 package org.apache.isis.core.metamodel.facets.object.validating.validateobject;
 
 import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class ValidateObjectFacetAbstract extends FacetAbstract implements ValidateObjectFacet {
 
@@ -42,7 +42,7 @@ public abstract class ValidateObjectFacetAbstract extends FacetAbstract implemen
         if (!(vc instanceof ObjectValidityContext)) {
             return null;
         }
-        final ObjectAdapter toValidate = vc.getTarget();
+        final ManagedObject toValidate = vc.getTarget();
         return toValidate != null ? invalidReason(toValidate) : null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java
index af692a1..754d89d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.object.validating.validateobject.ValidateObjectFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class ValidateObjectFacetMethod extends ValidateObjectFacetAbstract implements ImperativeFacet {
 
@@ -54,7 +55,7 @@ public class ValidateObjectFacetMethod extends ValidateObjectFacetAbstract imple
     }
 
     @Override
-    public String invalidReason(final ObjectAdapter owningAdapter) {
+    public String invalidReason(final ManagedObject owningAdapter) {
         final Object returnValue = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacet.java
index f07b8f7..b5e0232 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacet.java
@@ -19,11 +19,11 @@
 
 package org.apache.isis.core.metamodel.facets.objectvalue.mandatory;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.MarkerFacet;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Whether a property or a parameter is mandatory (not optional).
@@ -47,10 +47,10 @@ public interface MandatoryFacet extends MarkerFacet, ValidatingInteractionAdviso
      * If the value has been provided, <i>or</i> if the property or parameter is
      * not required, then will return <tt>false</tt>.
      */
-    boolean isRequiredButNull(ObjectAdapter adapter);
+    boolean isRequiredButNull(ManagedObject adapter);
 
     /**
-     * Indicates that the implementation is overridding the usual semantics, in
+     * Indicates that the implementation is overriding the usual semantics, in
      * other words that the {@link FacetHolder} to which this {@link Facet} is
      * attached is <i>not</i> mandatory.
      */
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
index 8d41c63..4a19fb5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.interactions.ActionArgValidityContext;
 import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
 import org.apache.isis.core.metamodel.interactions.ProposedHolder;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class MandatoryFacetAbstract extends MarkerFacetAbstract implements MandatoryFacet {
 
@@ -56,7 +57,7 @@ public abstract class MandatoryFacetAbstract extends MarkerFacetAbstract impleme
      * If not specified or, if a string, then zero length.
      */
     @Override
-    public final boolean isRequiredButNull(final ObjectAdapter adapter) {
+    public final boolean isRequiredButNull(final ManagedObject adapter) {
         if(!isInvertedSemantics()) {
             final Object object = ObjectAdapter.Util.unwrap(adapter);
             if (object == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacet.java
index b567b79..4a88fe2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacet.java
@@ -19,9 +19,9 @@
 
 package org.apache.isis.core.metamodel.facets.objectvalue.maxlen;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Whether the (string) property or a parameter's length must not exceed a
@@ -36,6 +36,6 @@ public interface MaxLengthFacet extends SingleIntValueFacet, ValidatingInteracti
     /**
      * Whether the provided string exceeds the maximum length.
      */
-    public boolean exceeds(ObjectAdapter adapter);
+    public boolean exceeds(ManagedObject adapter);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java
index 78f8276..2708ed3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java
@@ -26,6 +26,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleIntValueFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.ProposedHolder;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class MaxLengthFacetAbstract extends SingleIntValueFacetAbstract implements MaxLengthFacet {
 
@@ -42,7 +43,7 @@ public abstract class MaxLengthFacetAbstract extends SingleIntValueFacetAbstract
      * .
      */
     @Override
-    public boolean exceeds(final ObjectAdapter adapter) {
+    public boolean exceeds(final ManagedObject adapter) {
         final String str = ObjectAdapter.Util.unwrapAsString(adapter);
         if (str == null) {
             return false;
@@ -57,7 +58,7 @@ public abstract class MaxLengthFacetAbstract extends SingleIntValueFacetAbstract
             return null;
         }
         final ProposedHolder proposedHolder = (ProposedHolder) context;
-        final ObjectAdapter proposedArgument = proposedHolder.getProposed();
+        final ManagedObject proposedArgument = proposedHolder.getProposed();
         if (!exceeds(proposedArgument)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
index 3d62f79..68a3871 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
@@ -25,7 +25,6 @@ import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.applib.spec.Specification;
 import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -33,6 +32,7 @@ import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.interactions.ProposedHolder;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class MustSatisfySpecificationFacetAbstract extends FacetAbstract implements MustSatisfySpecificationFacet {
 
@@ -78,7 +78,7 @@ public abstract class MustSatisfySpecificationFacetAbstract extends FacetAbstrac
             return null;
         }
         final ProposedHolder proposedHolder = (ProposedHolder) validityContext;
-        final ObjectAdapter proposedAdapter = proposedHolder.getProposed();
+        final ManagedObject proposedAdapter = proposedHolder.getProposed();
         if(proposedAdapter == null) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java
index be39570..d9397e3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java
@@ -22,12 +22,12 @@ package org.apache.isis.core.metamodel.facets.objectvalue.regex;
 import javax.validation.constraints.Pattern;
 
 import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.MultipleValueFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.ProposedHolder;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class RegExFacetAbstract extends MultipleValueFacetAbstract implements RegExFacet {
 
@@ -89,7 +89,7 @@ public abstract class RegExFacetAbstract extends MultipleValueFacetAbstract impl
             return null;
         }
         final ProposedHolder proposedHolder = (ProposedHolder) context;
-        final ObjectAdapter proposedArgument = proposedHolder.getProposed();
+        final ManagedObject proposedArgument = proposedHolder.getProposed();
         if (proposedArgument == null) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
index b5ca4b5..a462cdc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.propcoll.accessor;
 
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 /**
@@ -46,7 +46,7 @@ public interface PropertyOrCollectionAccessorFacet extends Facet {
      * @param interactionInitiatedBy
      */
     public Object getProperty(
-            final Instance inObject,
+            final ManagedObject inObject,
             final InteractionInitiatedBy interactionInitiatedBy);
 
     ObjectSpecification getOnType();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index 7dc79fc..9fae5f1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
@@ -72,7 +72,7 @@ implements ImperativeFacet {
 
     @Override
     public Object getProperty(
-            final Instance owningAdapter,
+            final ManagedObject owningAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         final Object referencedObject = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutable.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutable.java
index 3d97c2d..b718197 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutable.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutable.java
@@ -20,9 +20,9 @@
 package org.apache.isis.core.metamodel.facets.properties.disabled.fromimmutable;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class DisabledFacetOnPropertyDerivedFromImmutable extends DisabledFacetAbstract {
 
@@ -31,7 +31,7 @@ public class DisabledFacetOnPropertyDerivedFromImmutable extends DisabledFacetAb
     }
 
     @Override
-    public String disabledReason(final ObjectAdapter target) {
+    public String disabledReason(final ManagedObject target) {
         return "Immutable";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
index 46169f9..eec1347 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
@@ -23,10 +23,10 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenFacetForPropertyAnnotation extends HiddenFacetAbstract {
 
@@ -47,7 +47,7 @@ public class HiddenFacetForPropertyAnnotation extends HiddenFacetAbstract {
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
index 2a49f6d..0b513e4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
@@ -26,7 +26,6 @@ import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.facets.DomainEventHelper;
@@ -37,6 +36,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class PropertyDomainEventFacetAbstract
@@ -124,7 +124,7 @@ extends SingleClassValueFacetAbstract implements PropertyDomainEventFacet {
 
     private static Object proposedFrom(ValidityContext<? extends ValidityEvent> ic) {
         final ProposedHolder ph = (ProposedHolder) ic;
-        final ObjectAdapter proposedAdapter = ph.getProposed();
+        final ManagedObject proposedAdapter = ph.getProposed();
         return proposedAdapter != null? proposedAdapter.getObject(): null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java
index ccc77a6..b73dedc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java
@@ -23,10 +23,10 @@ import java.util.List;
 
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenFacetForPropertyLayoutAnnotation extends HiddenFacetAbstract {
 
@@ -47,7 +47,7 @@ public class HiddenFacetForPropertyLayoutAnnotation extends HiddenFacetAbstract
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
index d114869..bafcfea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
@@ -21,10 +21,10 @@ package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class HiddenFacetForPropertyXml extends HiddenFacetAbstract {
 
@@ -41,7 +41,7 @@ public class HiddenFacetForPropertyXml extends HiddenFacetAbstract {
     }
 
     @Override
-    public String hiddenReason(final ObjectAdapter targetAdapter, final Where whereContext) {
+    public String hiddenReason(final ManagedObject targetAdapter, final Where whereContext) {
         if(!where().includes(whereContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacet.java
index 4a54482..a1212dd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacet.java
@@ -19,11 +19,11 @@
 
 package org.apache.isis.core.metamodel.facets.properties.validating;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * The mechanism by which the proposed value of a property can be validated,
@@ -46,5 +46,5 @@ public interface PropertyValidateFacet extends Facet, ValidatingInteractionAdvis
      * <p>
      * Should return <tt>null</tt> if the value is in fact valid.
      */
-    public String invalidReason(ObjectAdapter targetObject, ObjectAdapter proposedValue);
+    public String invalidReason(ManagedObject targetObject, ManagedObject proposedValue);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetAbstract.java
index dcab725..d3920af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetAbstract.java
@@ -20,13 +20,13 @@
 package org.apache.isis.core.metamodel.facets.properties.validating;
 
 import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
 import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public abstract class PropertyValidateFacetAbstract extends FacetAbstract implements PropertyValidateFacet {
 
@@ -44,7 +44,7 @@ public abstract class PropertyValidateFacetAbstract extends FacetAbstract implem
             return null;
         }
         final PropertyModifyContext propertyModifyContext = (PropertyModifyContext) context;
-        ObjectAdapter proposed = propertyModifyContext.getProposed();
+        ManagedObject proposed = propertyModifyContext.getProposed();
         if(proposed == null) {
             // skip validation if null value and optional property.
             MandatoryFacet mandatoryFacet = getFacetHolder().getFacet(MandatoryFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetNone.java
index fcc3be3..5c75909 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetNone.java
@@ -19,8 +19,8 @@
 
 package org.apache.isis.core.metamodel.facets.properties.validating;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class PropertyValidateFacetNone extends PropertyValidateFacetAbstract {
 
@@ -35,7 +35,7 @@ public class PropertyValidateFacetNone extends PropertyValidateFacetAbstract {
      * Subclasses should override as required.
      */
     @Override
-    public String invalidReason(final ObjectAdapter inObject, final ObjectAdapter value) {
+    public String invalidReason(final ManagedObject inObject, final ManagedObject value) {
         return null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/dflt/PropertyValidateFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/dflt/PropertyValidateFacetDefault.java
index 3faa33f..6d495bb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/dflt/PropertyValidateFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/dflt/PropertyValidateFacetDefault.java
@@ -20,11 +20,11 @@
 package org.apache.isis.core.metamodel.facets.properties.validating.dflt;
 
 import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.properties.validating.PropertyValidateFacet;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Non checking property validation facet that provides default behaviour for
@@ -42,7 +42,7 @@ public class PropertyValidateFacetDefault extends FacetAbstract implements Prope
     }
 
     @Override
-    public String invalidReason(final ObjectAdapter target, final ObjectAdapter proposedValue) {
+    public String invalidReason(final ManagedObject target, final ManagedObject proposedValue) {
         return null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethod.java
index d983654..40891c5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethod.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.properties.validating.PropertyValidateFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 public class PropertyValidateFacetViaMethod extends PropertyValidateFacetAbstract implements ImperativeFacet {
 
@@ -58,7 +59,7 @@ public class PropertyValidateFacetViaMethod extends PropertyValidateFacetAbstrac
     }
 
     @Override
-    public String invalidReason(final ObjectAdapter owningAdapter, final ObjectAdapter proposedAdapter) {
+    public String invalidReason(final ManagedObject owningAdapter, final ManagedObject proposedAdapter) {
         final Object returnValue = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter, proposedAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/AccessContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/AccessContext.java
index f5d43fb..ec3cb1f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/AccessContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/AccessContext.java
@@ -21,9 +21,9 @@ package org.apache.isis.core.metamodel.interactions;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.AccessEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to {@link AccessEvent}
@@ -34,7 +34,7 @@ public abstract class AccessContext<T extends AccessEvent> extends InteractionCo
     public AccessContext(
             final InteractionContextType interactionType,
             final Identifier identifier,
-            final ObjectAdapter target,
+            final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy) {
         super(interactionType, interactionInitiatedBy, identifier, target);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java
index 8646637..81c2cf2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java
@@ -24,9 +24,9 @@ import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.ActionUsabilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
 /**
@@ -38,7 +38,7 @@ public class ActionUsabilityContext extends UsabilityContext<ActionUsabilityEven
     private final ObjectAction objectAction;
 
     public ActionUsabilityContext(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final ObjectAction objectAction,
             final Identifier id,
             final InteractionInitiatedBy interactionInitiatedBy,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java
index cfe6e43..59b4aa1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java
@@ -24,9 +24,9 @@ import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.ActionVisibilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
 /**
@@ -38,7 +38,7 @@ public class ActionVisibilityContext extends VisibilityContext<ActionVisibilityE
     private final ObjectAction objectAction;
 
     public ActionVisibilityContext(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final ObjectAction objectAction,
             final Identifier identifier,
             final InteractionInitiatedBy interactionInitiatedBy,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionUsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionUsabilityContext.java
index d5765b1..3991509 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionUsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionUsabilityContext.java
@@ -22,9 +22,9 @@ package org.apache.isis.core.metamodel.interactions;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.CollectionUsabilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 public class CollectionUsabilityContext extends UsabilityContext<CollectionUsabilityEvent> {
 
     public CollectionUsabilityContext(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Identifier identifier,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java
index dd27385..33d2084 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java
@@ -24,9 +24,9 @@ import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.CollectionVisibilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 public class CollectionVisibilityContext extends VisibilityContext<CollectionVisibilityEvent> {
 
     public CollectionVisibilityContext(
-            final ObjectAdapter target,
+            final ManagedObject target,
             final Identifier identifierAdapter,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
index 5445ecf..c92c0a2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Represents an interaction between the framework and (a {@link Facet} of) the
@@ -61,18 +62,18 @@ public abstract class InteractionContext<T extends InteractionEvent> {
     private final InteractionContextType interactionType;
     private final Identifier identifier;
     private final InteractionInitiatedBy interactionInitiatedBy;
-    private final ObjectAdapter target;
+    private final ManagedObject target;
 
     private int contributeeParam = -1; // no contributee
-    private ObjectAdapter contributee = null;
+    private ManagedObject contributee = null;
 
-    private ObjectAdapter mixedInAdapter = null; // for mixin members only, obviously
+    private ManagedObject mixedInAdapter = null; // for mixin members only, obviously
 
     public InteractionContext(
             final InteractionContextType interactionType,
             final InteractionInitiatedBy invocationMethod,
             final Identifier identifier,
-            final ObjectAdapter target) {
+            final ManagedObject target) {
         this.interactionType = interactionType;
         this.interactionInitiatedBy = invocationMethod;
         this.identifier = identifier;
@@ -128,18 +129,18 @@ public abstract class InteractionContext<T extends InteractionEvent> {
     /**
      * The target object that this interaction is with.
      */
-    public ObjectAdapter getTarget() {
+    public ManagedObject getTarget() {
         return target;
     }
 
     // //////////////////////////////////////
 
-    public void putContributee(int contributeeParam, ObjectAdapter contributee) {
+    public void putContributee(int contributeeParam, ManagedObject contributee) {
         this.contributeeParam = contributeeParam;
         this.contributee = contributee;
     }
 
-    public @Nullable _Tuples.Tuple2<Integer, ObjectAdapter> getContributeeWithParamIndex() {
+    public @Nullable _Tuples.Tuple2<Integer, ManagedObject> getContributeeWithParamIndex() {
         if(contributee==null) {
             return null;
         }
@@ -148,11 +149,11 @@ public abstract class InteractionContext<T extends InteractionEvent> {
 
     // //////////////////////////////////////
 
-    public void setMixedIn(final ObjectAdapter mixedInAdapter) {
+    public void setMixedIn(final ManagedObject mixedInAdapter) {
         this.mixedInAdapter = mixedInAdapter;
     }
 
-    public ObjectAdapter getMixedIn() {
+    public ManagedObject getMixedIn() {
         return mixedInAdapter;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java
index 128cbbf..f917e54 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java
@@ -23,9 +23,9 @@ import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ObjectTitleEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -36,7 +36,7 @@ public class ObjectTitleContext extends AccessContext<ObjectTitleEvent> {
     private final String title;
 
     public ObjectTitleContext(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Identifier identifier,
             final String title,
             final InteractionInitiatedBy interactionInitiatedBy) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
index d9361a8..75aed21 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
@@ -23,9 +23,9 @@ import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ObjectValidityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 public class ObjectValidityContext extends ValidityContext<ObjectValidityEvent> implements ProposedHolder {
 
     public ObjectValidityContext(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Identifier identifier,
             final InteractionInitiatedBy interactionInitiatedBy) {
         super(InteractionContextType.OBJECT_VALIDATE, targetAdapter, identifier, interactionInitiatedBy);
@@ -46,7 +46,7 @@ public class ObjectValidityContext extends ValidityContext<ObjectValidityEvent>
     }
 
     @Override
-    public ObjectAdapter getProposed() {
+    public ManagedObject getProposed() {
         return getTarget();
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java
index 95188d0..e3a73da 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.services.wrapper.events.ObjectVisibilityEvent;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link org.apache.isis.core.metamodel.interactions.InteractionContext} for overview; analogous to
@@ -48,7 +49,7 @@ public class ObjectVisibilityContext extends VisibilityContext<ObjectVisibilityE
     }
 
     @Override
-    public ObjectAdapter getProposed() {
+    public ManagedObject getProposed() {
         return getTarget();
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
index bf15663..a49ed82 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
@@ -23,9 +23,9 @@ import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.PropertyModifyEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -33,12 +33,12 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
  */
 public class PropertyModifyContext extends ValidityContext<PropertyModifyEvent> implements ProposedHolder {
 
-    private final ObjectAdapter proposed;
+    private final ManagedObject proposed;
 
     public PropertyModifyContext(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Identifier id,
-            final ObjectAdapter proposed,
+            final ManagedObject proposed,
             final InteractionInitiatedBy interactionInitiatedBy) {
         super(InteractionContextType.PROPERTY_MODIFY, targetAdapter, id, interactionInitiatedBy);
 
@@ -49,7 +49,7 @@ public class PropertyModifyContext extends ValidityContext<PropertyModifyEvent>
      * The (proposed) new value for a property.
      */
     @Override
-    public ObjectAdapter getProposed() {
+    public ManagedObject getProposed() {
         return proposed;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java
index 045c075..d719b8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java
@@ -24,9 +24,9 @@ import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.PropertyUsabilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 public class PropertyUsabilityContext extends UsabilityContext<PropertyUsabilityEvent> {
 
     public PropertyUsabilityContext(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Identifier identifier,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java
index dc797e8..1536400 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java
@@ -24,9 +24,9 @@ import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.PropertyVisibilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 public class PropertyVisibilityContext extends VisibilityContext<PropertyVisibilityEvent> {
 
     public PropertyVisibilityContext(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Identifier identifier,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ProposedHolder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ProposedHolder.java
index 5ee2e5e..a4972b0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ProposedHolder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ProposedHolder.java
@@ -19,8 +19,8 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Implemented by some of the {@link InteractionContext} subclasses, making it
@@ -34,5 +34,5 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
  */
 public interface ProposedHolder {
 
-    ObjectAdapter getProposed();
+    ManagedObject getProposed();
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/UsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/UsabilityContext.java
index 119694a..a6506c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/UsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/UsabilityContext.java
@@ -22,9 +22,9 @@ package org.apache.isis.core.metamodel.interactions;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -36,7 +36,7 @@ public abstract class UsabilityContext<T extends UsabilityEvent> extends Interac
 
     public UsabilityContext(
             final InteractionContextType interactionType,
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Identifier identifier,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java
index 195635b..bd65853 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java
@@ -21,9 +21,9 @@ package org.apache.isis.core.metamodel.interactions;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -33,7 +33,7 @@ public abstract class ValidityContext<T extends ValidityEvent> extends Interacti
 
     public ValidityContext(
             final InteractionContextType interactionType,
-            final ObjectAdapter target,
+            final ManagedObject target,
             final Identifier identifier,
             final InteractionInitiatedBy invocationMethod) {
         super(interactionType, invocationMethod, identifier, target);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java
index 7e58b2f..e9f368d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java
@@ -22,9 +22,9 @@ package org.apache.isis.core.metamodel.interactions;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * See {@link InteractionContext} for overview; analogous to
@@ -36,7 +36,7 @@ public abstract class VisibilityContext<T extends VisibilityEvent> extends Inter
 
     public VisibilityContext(
             final InteractionContextType interactionType,
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Identifier identifier,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Instance.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Instance.java
index ea387ee..0ee73c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Instance.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Instance.java
@@ -19,11 +19,6 @@
 
 package org.apache.isis.core.metamodel.spec;
 
-import static org.apache.isis.commons.internal.base._With.requires;
-
-import java.util.function.Supplier;
-
-import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 
 /**
@@ -41,41 +36,4 @@ public interface Instance {
      */
     Specification getSpecification();
 
-    /**
-     * FIXME[ISIS-1976] introduced to experiment with slim OAs
-     * Returns the adapted domain object, the POJO, that this adapter represents
-     * with the framework.
-     */
-    Object getObject();
-    
-    // -- FACTORIES
-    
-    public static Instance of(Specification specification, Object pojo) {
-        return new Instance() {
-            @Override
-            public Specification getSpecification() {
-                return specification;
-            }
-            @Override
-            public Object getObject() {
-                return pojo;
-            }
-        };
-    }
-    
-    public static Instance of(Supplier<Specification> specificationSupplier, Object pojo) {
-        requires(specificationSupplier, "specificationSupplier");
-        return new Instance() {
-            private final _Lazy<Specification> specification = _Lazy.of(specificationSupplier);
-            @Override
-            public Specification getSpecification() {
-                return specification.get();
-            }
-            @Override
-            public Object getObject() {
-                return pojo;
-            }
-        };
-    }
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Instance.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
similarity index 57%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Instance.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index ea387ee..de8b767 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Instance.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -34,48 +34,66 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
  * intention is for associations, actions and action parameters to also inherit
  * from this interface.
  */
-public interface Instance {
+public interface ManagedObject extends Instance {
 
     /**
-     * Returns the specification that details the structure of this instance.
+     * Returns the specification that details the structure (meta-model) of this object.<br>
+     * Note: Refines {@link Instance#getSpecification()}.
      */
-    Specification getSpecification();
+    @Override
+    ObjectSpecification getSpecification();
 
     /**
-     * FIXME[ISIS-1976] introduced to experiment with slim OAs
-     * Returns the adapted domain object, the POJO, that this adapter represents
-     * with the framework.
+     * Returns the adapted domain object, the 'plain old java' object this managed object 
+     * represents with the framework.
      */
-    Object getObject();
+    Object getPojo();
+    
+    // -- GLUE CODE
+    
+    default Object getObject() {
+        return getPojo();
+    }
     
     // -- FACTORIES
     
-    public static Instance of(Specification specification, Object pojo) {
-        return new Instance() {
+    public static ManagedObject of(ObjectSpecification specification, Object pojo) {
+        return new ManagedObject() {
             @Override
-            public Specification getSpecification() {
+            public ObjectSpecification getSpecification() {
                 return specification;
             }
             @Override
-            public Object getObject() {
+            public Object getPojo() {
                 return pojo;
             }
         };
     }
     
-    public static Instance of(Supplier<Specification> specificationSupplier, Object pojo) {
+    public static ManagedObject of(Supplier<ObjectSpecification> specificationSupplier, Object pojo) {
         requires(specificationSupplier, "specificationSupplier");
-        return new Instance() {
-            private final _Lazy<Specification> specification = _Lazy.of(specificationSupplier);
+        return new ManagedObject() {
+            private final _Lazy<ObjectSpecification> specification = _Lazy.of(specificationSupplier);
             @Override
-            public Specification getSpecification() {
+            public ObjectSpecification getSpecification() {
                 return specification.get();
             }
             @Override
-            public Object getObject() {
+            public Object getPojo() {
                 return pojo;
             }
         };
     }
 
+    default String titleString(Object object) {
+        //FIXME
+        return "TODO: ManagedObject.titleString(Object)";
+    }
+
+    default String titleString() {
+        //FIXME
+        return "TODO: ManagedObject.titleString()";
+    }
+    
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index 4d78c23..9a99c37 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -165,7 +165,7 @@ ObjectAssociationContainer, Hierarchical,  DefaultProvider {
      * <p>
      * @see TitleFacet#title(ObjectAdapter, ObjectAdapter)
      */
-    String getTitle(ObjectAdapter contextAdapterIfAny, ObjectAdapter targetAdapter);
+    String getTitle(ManagedObject contextAdapterIfAny, ManagedObject targetAdapter);
 
     /**
      * Returns the name of an icon to use for the specified object.
@@ -174,7 +174,7 @@ ObjectAssociationContainer, Hierarchical,  DefaultProvider {
      * Corresponds to the {@link IconFacet#iconName(Instance)) icon name}
      * returned by the {@link IconFacet}; is not necessarily immutable.
      */
-    String getIconName(Instance object);
+    String getIconName(ManagedObject object);
 
     /**
      * Returns this object's navigable parent, if any.
@@ -193,7 +193,7 @@ ObjectAssociationContainer, Hierarchical,  DefaultProvider {
      *
      * @param objectAdapter - to evaluate (may be <tt>null</tt> if called by deprecated {@link #getCssClass}).
      */
-    String getCssClass(Instance objectAdapter);
+    String getCssClass(ManagedObject objectAdapter);
 
     boolean isAbstract();
 
@@ -205,7 +205,8 @@ ObjectAssociationContainer, Hierarchical,  DefaultProvider {
      * Create an {@link InteractionContext} representing an attempt to read the
      * object's title.
      */
-    ObjectTitleContext createTitleInteractionContext(AuthenticationSession session, InteractionInitiatedBy invocationMethod, ObjectAdapter targetObjectAdapter);
+    ObjectTitleContext createTitleInteractionContext(
+            AuthenticationSession session, InteractionInitiatedBy invocationMethod, ManagedObject targetObjectAdapter);
 
     // //////////////////////////////////////////////////////////////
     // ValidityContext, Validity
@@ -213,7 +214,7 @@ ObjectAssociationContainer, Hierarchical,  DefaultProvider {
 
     // internal API
     ObjectValidityContext createValidityInteractionContext(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final InteractionInitiatedBy interactionInitiatedBy);
 
     /**
@@ -221,7 +222,7 @@ ObjectAssociationContainer, Hierarchical,  DefaultProvider {
      * so can be persisted); represented as a {@link Consent}.
      */
     Consent isValid(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final InteractionInitiatedBy interactionInitiatedBy);
 
     /**
@@ -229,7 +230,7 @@ ObjectAssociationContainer, Hierarchical,  DefaultProvider {
      * so can be persisted); represented as a {@link InteractionResult}.
      */
     InteractionResult isValidResult(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final InteractionInitiatedBy interactionInitiatedBy);
 
     // //////////////////////////////////////////////////////////////
@@ -335,7 +336,7 @@ ObjectAssociationContainer, Hierarchical,  DefaultProvider {
 
     boolean isViewModel();
     boolean isMixin();
-    boolean isViewModelCloneable(Instance targetAdapter);
+    boolean isViewModelCloneable(ManagedObject targetAdapter);
     boolean isWizard();
 
     boolean isPersistenceCapable();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
index f02d344..0bb68c1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
@@ -39,7 +39,6 @@ import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberOrderComparator;
-import org.apache.isis.core.metamodel.spec.Instance;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.util.DeweyOrderComparator;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
index 185aa71..2950604 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
@@ -26,15 +26,16 @@ import java.util.function.Predicate;
 import java.util.stream.Stream;
 
 import javax.annotation.Nullable;
+import javax.annotation.meta.When;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberOrderFacetComparator;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Provides reflective access to an action or a field on a domain object.
@@ -76,7 +77,7 @@ public interface ObjectMember extends ObjectFeature {
      * @param where
      */
     Consent isVisible(
-            final ObjectAdapter target,
+            final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where);
 
@@ -93,7 +94,7 @@ public interface ObjectMember extends ObjectFeature {
      * @param where
      */
     Consent isUsable(
-            final ObjectAdapter target,
+            final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
index d95af35..bee5db5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/OneToOneAssociation.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.spec.feature;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Provides reflective access to a field on a domain object that is used to
@@ -45,9 +46,13 @@ public interface OneToOneAssociation extends ObjectAssociation, OneToOneFeature,
      * the specified object, represented as a {@link Consent}.
      */
     Consent isAssociationValid(
-            final ObjectAdapter targetAdapter,
-            final ObjectAdapter proposedAdapter,
+            final ManagedObject targetAdapter,
+            final ManagedObject proposedAdapter,
             final InteractionInitiatedBy interactionInitiatedBy);
 
 
+    //FIXME[ISIS-1976] only temporary for refactoring - remove
+    ManagedObject get2(ManagedObject adapter, InteractionInitiatedBy initiatedBy);
+
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
index 624bc4a..2184547 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
@@ -38,6 +38,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
@@ -148,7 +149,7 @@ public class ObjectActionContributee extends ObjectActionDefault implements Cont
 
     @Override
     public Consent isVisible(
-            final ObjectAdapter contributee,
+            final ManagedObject contributee,
             final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         final VisibilityContext<?> ic = serviceAction.createVisibleInteractionContext(getServiceAdapter(),
@@ -159,7 +160,7 @@ public class ObjectActionContributee extends ObjectActionDefault implements Cont
 
     @Override
     public Consent isUsable(
-            final ObjectAdapter contributee,
+            final ManagedObject contributee,
             final InteractionInitiatedBy interactionInitiatedBy, final Where where) {
         final UsabilityContext<?> ic = serviceAction.createUsableInteractionContext(getServiceAdapter(),
                 interactionInitiatedBy, where);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index 1d8f59f..170b870 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -61,6 +61,7 @@ import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
@@ -264,14 +265,14 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
 
     @Override
     public VisibilityContext<?> createVisibleInteractionContext(
-            final ObjectAdapter targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new ActionVisibilityContext(targetObjectAdapter, this, getIdentifier(), interactionInitiatedBy, where);
     }
 
     @Override
     public UsabilityContext<?> createUsableInteractionContext(
-            final ObjectAdapter targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new ActionUsabilityContext(targetObjectAdapter, this, getIdentifier(), interactionInitiatedBy, where);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
index 9c90040..5b83add 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
@@ -38,6 +38,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
@@ -155,7 +156,7 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
 
     @Override
     public Consent isVisible(
-            final ObjectAdapter mixedInAdapter,
+            final ManagedObject mixedInAdapter,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
 
@@ -168,7 +169,7 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
 
     @Override
     public Consent isUsable(
-            final ObjectAdapter mixedInAdapter,
+            final ManagedObject mixedInAdapter,
             final InteractionInitiatedBy interactionInitiatedBy, final Where where) {
 
         final ObjectAdapter mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index 722d5a0..3d93238 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -55,6 +55,7 @@ import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
@@ -225,7 +226,7 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
      * {@link AccessContext} accesses) have no corresponding vetoing methods.
      */
     protected abstract VisibilityContext<?> createVisibleInteractionContext(
-            final ObjectAdapter targetObjectAdapter,
+            final ManagedObject targetObjectAdapter,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where);
 
@@ -247,14 +248,14 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
      */
     @Override
     public Consent isVisible(
-            final ObjectAdapter target,
+            final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
         return isVisibleResult(target, interactionInitiatedBy, where).createConsent();
     }
 
     private InteractionResult isVisibleResult(
-            final ObjectAdapter target,
+            final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
         final VisibilityContext<?> ic = createVisibleInteractionContext(target, interactionInitiatedBy, where);
@@ -274,7 +275,7 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
      * {@link AccessContext} accesses) have no corresponding vetoing methods.
      */
     protected abstract UsabilityContext<?> createUsableInteractionContext(
-            final ObjectAdapter target,
+            final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where);
 
@@ -284,14 +285,14 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
      */
     @Override
     public Consent isUsable(
-            final ObjectAdapter target,
+            final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
         return isUsableResult(target, interactionInitiatedBy, where).createConsent();
     }
 
     private InteractionResult isUsableResult(
-            final ObjectAdapter target,
+            final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
         final UsabilityContext<?> ic = createUsableInteractionContext(target, interactionInitiatedBy, where);
@@ -328,7 +329,7 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
      */
     protected ObjectAdapter mixinAdapterFor(
             final Class<?> mixinType,
-            final ObjectAdapter mixedInAdapter) {
+            final ManagedObject mixedInAdapter) {
         final ObjectSpecification objectSpecification = getSpecificationLoader().loadSpecification(mixinType);
         final MixinFacet mixinFacet = objectSpecification.getFacet(MixinFacet.class);
         final Object mixinPojo = mixinFacet.instantiate(mixedInAdapter.getObject());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 7bc49f7..ba8c158 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -44,7 +44,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.exceptions.UnknownTypeException;
 import org.apache.isis.core.commons.lang.ClassExtensions;
 import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
@@ -79,7 +78,7 @@ import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.layout.DeweyOrderSet;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
@@ -349,8 +348,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     @Override
     public String getTitle(
-            ObjectAdapter contextAdapterIfAny,
-            ObjectAdapter targetAdapter) {
+            ManagedObject contextAdapterIfAny,
+            ManagedObject targetAdapter) {
         if (titleFacet != null) {
             final String titleString = titleFacet.title(contextAdapterIfAny, targetAdapter);
             if (!_Strings.isEmpty(titleString)) {
@@ -362,7 +361,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
 
     @Override
-    public String getIconName(final Instance reference) {
+    public String getIconName(final ManagedObject reference) {
         return iconFacet == null ? null : iconFacet.iconName(reference);
     }
 
@@ -374,7 +373,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
     }
 
     @Override
-    public String getCssClass(final Instance reference) {
+    public String getCssClass(final ManagedObject reference) {
         return cssClassFacet == null ? null : cssClassFacet.cssClass(reference);
     }
 
@@ -533,7 +532,11 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     // -- createTitleInteractionContext
     @Override
-    public ObjectTitleContext createTitleInteractionContext(final AuthenticationSession session, final InteractionInitiatedBy interactionMethod, final ObjectAdapter targetObjectAdapter) {
+    public ObjectTitleContext createTitleInteractionContext(
+            final AuthenticationSession session, 
+            final InteractionInitiatedBy interactionMethod, 
+            final ManagedObject targetObjectAdapter) {
+        
         return new ObjectTitleContext(targetObjectAdapter, getIdentifier(), targetObjectAdapter.titleString(null),
                 interactionMethod);
     }
@@ -1092,13 +1095,13 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     // -- validity
     @Override
-    public Consent isValid(final ObjectAdapter targetAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
+    public Consent isValid(final ManagedObject targetAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
         return isValidResult(targetAdapter, interactionInitiatedBy).createConsent();
     }
 
     @Override
     public InteractionResult isValidResult(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         final ObjectValidityContext validityContext =
                 createValidityInteractionContext(
@@ -1112,7 +1115,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
      */
     @Override
     public ObjectValidityContext createValidityInteractionContext(
-            final ObjectAdapter targetAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
+            final ManagedObject targetAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
         return new ObjectValidityContext(targetAdapter, getIdentifier(), interactionInitiatedBy);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index 2c288f5..c7c3539 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -36,6 +36,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -139,7 +140,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationDefault
 
     @Override
     public Consent isVisible(
-            final ObjectAdapter contributee,
+            final ManagedObject contributee,
             final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         final VisibilityContext<?> ic = ((ObjectMemberAbstract)serviceAction).createVisibleInteractionContext(
@@ -150,7 +151,7 @@ public class OneToManyAssociationContributee extends OneToManyAssociationDefault
 
     @Override
     public Consent isUsable(
-            final ObjectAdapter contributee,
+            final ManagedObject contributee,
             final InteractionInitiatedBy interactionInitiatedBy, final Where where) {
         final ObjectMemberAbstract serviceAction = (ObjectMemberAbstract) this.serviceAction;
         final UsabilityContext<?> ic = serviceAction.createUsableInteractionContext(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index 4d2d05f..90691bb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -45,6 +45,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 
@@ -75,7 +76,7 @@ public class OneToManyAssociationDefault extends ObjectAssociationAbstract imple
 
     @Override
     public VisibilityContext<?> createVisibleInteractionContext(
-            final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new CollectionVisibilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
     }
@@ -83,7 +84,7 @@ public class OneToManyAssociationDefault extends ObjectAssociationAbstract imple
 
     @Override
     public UsabilityContext<?> createUsableInteractionContext(
-            final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new CollectionUsabilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index 37a0adf..b543ffe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -39,6 +39,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
@@ -171,7 +172,7 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
 
     @Override
     public Consent isVisible(
-            final ObjectAdapter mixedInAdapter,
+            final ManagedObject mixedInAdapter,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
 
@@ -184,7 +185,7 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
 
     @Override
     public Consent isUsable(
-            final ObjectAdapter mixedInAdapter,
+            final ManagedObject mixedInAdapter,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
index 2d7d598..6397183 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
@@ -35,6 +35,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
@@ -121,7 +122,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationDefault i
 
     @Override
     public Consent isVisible(
-            final ObjectAdapter contributee,
+            final ManagedObject contributee,
             final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         final VisibilityContext<?> ic = ((ObjectMemberAbstract)serviceAction).createVisibleInteractionContext(
@@ -132,7 +133,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationDefault i
 
     @Override
     public Consent isUsable(
-            final ObjectAdapter contributee,
+            final ManagedObject contributee,
             final InteractionInitiatedBy interactionInitiatedBy, final Where where) {
         final UsabilityContext<?> ic = ((ObjectMemberAbstract)serviceAction).createUsableInteractionContext(
                 getServiceAdapter(), interactionInitiatedBy, where);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index 277a70e..522cab6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -53,7 +53,7 @@ import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.schema.cmd.v1.CommandDto;
@@ -79,7 +79,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
 
     @Override
     public VisibilityContext<?> createVisibleInteractionContext(
-            final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyVisibilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
     }
@@ -87,7 +87,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
 
     @Override
     public UsabilityContext<?> createUsableInteractionContext(
-            final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyUsabilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
     }
@@ -96,8 +96,8 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
 
     // -- Validity
     private ValidityContext<?> createValidateInteractionContext(
-            final ObjectAdapter ownerAdapter,
-            final ObjectAdapter proposedToReferenceAdapter,
+            final ManagedObject ownerAdapter,
+            final ManagedObject proposedToReferenceAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         return new PropertyModifyContext(ownerAdapter, getIdentifier(), proposedToReferenceAdapter,
                 interactionInitiatedBy);
@@ -105,15 +105,15 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
 
     @Override
     public Consent isAssociationValid(
-            final ObjectAdapter ownerAdapter,
-            final ObjectAdapter proposedAdapter,
+            final ManagedObject ownerAdapter,
+            final ManagedObject proposedAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         return isAssociationValidResult(ownerAdapter, proposedAdapter, interactionInitiatedBy).createConsent();
     }
 
     private InteractionResult isAssociationValidResult(
-            final ObjectAdapter ownerAdapter,
-            final ObjectAdapter proposedToReferenceAdapter,
+            final ManagedObject ownerAdapter,
+            final ManagedObject proposedToReferenceAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         final ValidityContext<?> validityContext =
                 createValidateInteractionContext(
@@ -152,6 +152,21 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
         return getObjectAdapterProvider().adapterFor(referencedPojo);
     }
     
+
+    @Override
+    public ManagedObject get2(ManagedObject ownerAdapter, InteractionInitiatedBy interactionInitiatedBy) {
+        
+        final PropertyOrCollectionAccessorFacet facet = getFacet(PropertyOrCollectionAccessorFacet.class);
+        final Object referencedPojo =
+                facet.getProperty(ownerAdapter, interactionInitiatedBy);
+
+        if (referencedPojo == null) {
+            return null;
+        }
+        
+        return getObjectAdapterProvider().adapterFor(referencedPojo);
+    }
+    
     @Override
     public boolean isEmpty(final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
         return get(ownerAdapter, interactionInitiatedBy) == null;
@@ -360,4 +375,5 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
 
 
 
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
index bc069f8..d7aabf5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
@@ -37,6 +37,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault implements MixedInMember {
@@ -155,7 +156,7 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
 
     @Override
     public Consent isVisible(
-            final ObjectAdapter mixedInAdapter,
+            final ManagedObject mixedInAdapter,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
 
@@ -168,7 +169,7 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
 
     @Override
     public Consent isUsable(
-            final ObjectAdapter mixedInAdapter,
+            final ManagedObject mixedInAdapter,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 75ff5a5..234bc30 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -50,7 +50,7 @@ import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.object.wizard.WizardFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -254,7 +254,7 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
     }
 
     @Override
-    public boolean isViewModelCloneable(Instance targetAdapter) {
+    public boolean isViewModelCloneable(ManagedObject targetAdapter) {
         final ViewModelFacet facet = getFacet(ViewModelFacet.class);
         if(facet == null) {
             return false;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
index 262813f..0e59555 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
@@ -21,14 +21,13 @@ package org.apache.isis.core.metamodel.specloader.specimpl.standalonelist;
 
 import java.util.List;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultToObject;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetOnStandaloneList;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -94,7 +93,7 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
     }
 
     @Override
-    public boolean isViewModelCloneable(Instance targetAdapter) {
+    public boolean isViewModelCloneable(ManagedObject targetAdapter) {
         return false;
     }
 
@@ -118,12 +117,12 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
     // -- Title and Icon
     
     @Override
-    public String getTitle(ObjectAdapter contextAdapterIfAny, ObjectAdapter targetAdapter) {
+    public String getTitle(ManagedObject contextAdapterIfAny, ManagedObject targetAdapter) {
         return ((FreeStandingList) targetAdapter.getObject()).titleString();
     }
 
     @Override
-    public String getIconName(final Instance object) {
+    public String getIconName(final ManagedObject object) {
         return ICON_NAME;
     }
 
@@ -153,7 +152,4 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
     }
 
 
-
-
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
index 832ad03..9b7848b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/AuthorizationManager.java
@@ -23,9 +23,9 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.ApplicationScopedComponent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 
 /**
  * Authorises the user in the current session view and use members of an object.
@@ -48,7 +48,7 @@ public interface AuthorizationManager extends ApplicationScopedComponent {
      * display of the action will be suppress if this returns false.
      */
     @Programmatic
-    boolean isVisible(AuthenticationSession session, ObjectAdapter target, Identifier identifier);
+    boolean isVisible(AuthenticationSession session, ManagedObject target, Identifier identifier);
 
     /**
      * Returns true when the use represented by the specified session is
@@ -57,5 +57,5 @@ public interface AuthorizationManager extends ApplicationScopedComponent {
      * false.
      */
     @Programmatic
-    boolean isUsable(AuthenticationSession session, ObjectAdapter target, Identifier identifier);
+    boolean isUsable(AuthenticationSession session, ManagedObject target, Identifier identifier);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
index 3659882..b873213 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/authorization/standard/AuthorizationManagerStandard.java
@@ -25,9 +25,9 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.sudo.SudoService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.core.runtime.authorization.AuthorizationManagerAbstract;
 
@@ -93,7 +93,7 @@ public class AuthorizationManagerStandard extends AuthorizationManagerAbstract {
     // /////////////////////////////////////////////////////////
 
     @Override
-    public boolean isUsable(final AuthenticationSession session, final ObjectAdapter target, final Identifier identifier) {
+    public boolean isUsable(final AuthenticationSession session, final ManagedObject target, final Identifier identifier) {
         if (isPerspectiveMember(identifier)) {
             return true;
         }
@@ -112,7 +112,7 @@ public class AuthorizationManagerStandard extends AuthorizationManagerAbstract {
     }
 
     @Override
-    public boolean isVisible(final AuthenticationSession session, final ObjectAdapter target, final Identifier identifier) {
+    public boolean isVisible(final AuthenticationSession session, final ManagedObject target, final Identifier identifier) {
         if (isPerspectiveMember(identifier)) {
             return true;
         }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
index 02eb3c6..ea5a615 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
@@ -16,6 +16,10 @@
  * under the License. */
 package org.apache.isis.core.metamodel.facets.collections.collection;
 
+import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 import java.lang.reflect.Method;
 import java.util.List;
 
@@ -56,13 +60,9 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemove
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacetAbstract;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
-import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
 
     CollectionAnnotationFacetFactory facetFactory;
@@ -115,7 +115,7 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
             ) {
                 @Override
                 public Object getProperty(
-                        final Instance inObject,
+                        final ManagedObject inObject,
                         final InteractionInitiatedBy interactionInitiatedBy) {
                     return null;
                 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index 04b4b58..a1af02e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -73,7 +73,7 @@ import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyCle
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetAbstract;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetAbstract;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 
@@ -125,7 +125,7 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
             ) {
                 @Override
                 public Object getProperty(
-                        final Instance inObject,
+                        final ManagedObject inObject,
                         final InteractionInitiatedBy interactionInitiatedBy) {
                     return null;
                 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
index 80527d6..7eaf479 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
@@ -27,17 +27,28 @@ import static org.hamcrest.Matchers.containsInAnyOrder;
 
 import java.util.List;
 
+import org.hamcrest.Matchers;
+import org.jmock.Expectations;
+import org.jmock.Sequence;
+import org.jmock.auto.Mock;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacetAbstract;
 import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
 import org.apache.isis.core.metamodel.facets.properties.typicallen.annotation.TypicalLengthFacetOnPropertyAnnotation;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -46,17 +57,6 @@ import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.hamcrest.Matchers;
-import org.jmock.Expectations;
-import org.jmock.Sequence;
-import org.jmock.auto.Mock;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.isis.commons.internal.collections._Lists;
 
 public class ApplicationFeatureRepositoryDefaultTest {
 
@@ -126,7 +126,7 @@ public class ApplicationFeatureRepositoryDefaultTest {
                 allowing(mockSpec).getFacet(HiddenFacet.class);
                 will(returnValue(new HiddenFacetAbstract(Where.EVERYWHERE, mockSpec) {
                     @Override
-                    protected String hiddenReason(final ObjectAdapter target, final Where whereContext) {
+                    protected String hiddenReason(final ManagedObject target, final Where whereContext) {
                         return null;
                     }
                 }));
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
index 0e9faed..3c435a3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
@@ -19,6 +19,9 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.Before;
@@ -38,15 +41,12 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 public class ObjectAssociationAbstractTest {
 
     @Rule
@@ -119,14 +119,14 @@ public class ObjectAssociationAbstractTest {
 
             @Override
             public UsabilityContext<?> createUsableInteractionContext(
-                    final ObjectAdapter target, final InteractionInitiatedBy interactionInitiatedBy,
+                    final ManagedObject target, final InteractionInitiatedBy interactionInitiatedBy,
                     Where where) {
                 return null;
             }
 
             @Override
             public VisibilityContext<?> createVisibleInteractionContext(
-                    final ObjectAdapter targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+                    final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
                     Where where) {
                 return null;
             }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index 01a801b..10ea142 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -121,14 +121,14 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
 
             @Override
             public UsabilityContext<?> createUsableInteractionContext(
-                    final ObjectAdapter target, final InteractionInitiatedBy interactionInitiatedBy,
+                    final ManagedObject target, final InteractionInitiatedBy interactionInitiatedBy,
                     final Where where) {
                 return null;
             }
 
             @Override
             public VisibilityContext<?> createVisibleInteractionContext(
-                    final ObjectAdapter targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+                    final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
                     final Where where) {
                 return null;
             }
@@ -223,7 +223,7 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
             final boolean noop) {
         HiddenFacet facet = new HiddenFacetAbstract(HiddenFacet.class, where, holder) {
             @Override
-            protected String hiddenReason(final ObjectAdapter target, final Where whereContext) {
+            protected String hiddenReason(final ManagedObject target, final Where whereContext) {
                 return null;
             }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index aa25a45..aa7f40d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -28,7 +28,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
@@ -41,7 +40,7 @@ import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.configinternal.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -146,7 +145,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
     }
 
     @Override
-    public String getIconName(final Instance reference) {
+    public String getIconName(final ManagedObject reference) {
         return null;
     }
 
@@ -156,7 +155,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
 	}
     
     @Override
-    public String getCssClass(final Instance reference) {
+    public String getCssClass(final ManagedObject reference) {
         return null;
     }
 
@@ -212,8 +211,8 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
 
     @Override
     public String getTitle(
-            final ObjectAdapter contextAdapterIfAny,
-            final ObjectAdapter targetAdapter) {
+            final ManagedObject contextAdapterIfAny,
+            final ManagedObject targetAdapter) {
         return title;
     }
 
@@ -273,7 +272,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
     }
 
     @Override
-    public Consent isValid(final ObjectAdapter targetAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
+    public Consent isValid(final ManagedObject targetAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
         return null;
     }
 
@@ -309,19 +308,18 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
 
     @Override
     public ObjectValidityContext createValidityInteractionContext(
-            final ObjectAdapter targetAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
+            ManagedObject targetAdapter, InteractionInitiatedBy interactionInitiatedBy) {
         return null;
     }
 
     @Override
-    public ObjectTitleContext createTitleInteractionContext(final AuthenticationSession session, final InteractionInitiatedBy invocationMethod, final ObjectAdapter targetObjectAdapter) {
+    public ObjectTitleContext createTitleInteractionContext(
+            AuthenticationSession session, InteractionInitiatedBy invocationMethod, ManagedObject targetObjectAdapter) {
         return null;
     }
 
     @Override
-    public InteractionResult isValidResult(
-            final ObjectAdapter targetAdapter,
-            final InteractionInitiatedBy interactionInitiatedBy) {
+    public InteractionResult isValidResult(ManagedObject targetAdapter, InteractionInitiatedBy interactionInitiatedBy) {
         return null;
     }
 
@@ -350,7 +348,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
     }
 
     @Override
-    public boolean isViewModelCloneable(final Instance targetAdapter) {
+    public boolean isViewModelCloneable(final ManagedObject targetAdapter) {
         return false;
     }
 
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java
index c3a7443..86c78f2 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java
@@ -73,7 +73,7 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEv
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
 import org.apache.isis.core.runtime.persistence.NotPersistableException;
@@ -779,7 +779,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
     @Override
     public void invokeIsisPersistingCallback(final Persistable pojo) {
         if (isTransient(pojo)) {
-            final Instance adapter = Instance.of(
+            final ManagedObject adapter = ManagedObject.of(
                     ()->getSpecificationLoader().loadSpecification(pojo.getClass()),
                     pojo);
 
diff --git a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index 2466ce8..beb6411 100644
--- a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -51,6 +51,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -73,9 +74,9 @@ public class ObjectMemberAbstractTest {
 
     @Rule
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-    
+
     private ObjectMemberAbstractImpl testMember;
-    
+
     private ObjectAdapter persistentAdapter;
     private ObjectAdapter transientAdapter;
 
@@ -110,15 +111,15 @@ public class ObjectMemberAbstractTest {
             will(returnValue(mockAuthenticationSession));
         }});
         persistentAdapter = PojoAdapterBuilder.create()
-                                .with(mockSpecificationLoader)
-                                .withOid("CUS|1")
-                                .withPojo(mockPersistable)
-                                .build();
+                .with(mockSpecificationLoader)
+                .withOid("CUS|1")
+                .withPojo(mockPersistable)
+                .build();
         transientAdapter = PojoAdapterBuilder.create()
-                                .with(mockSpecificationLoader)
-                                .with(Persistence.TRANSIENT)
-                                .withPojo(mockPersistable)
-                                .build();
+                .with(mockSpecificationLoader)
+                .with(Persistence.TRANSIENT)
+                .withPojo(mockPersistable)
+                .build();
 
         testMember = new ObjectMemberAbstractImpl("id", stubServicesInjector);
 
@@ -164,7 +165,7 @@ public class ObjectMemberAbstractTest {
         testMember.addFacet(new HideForContextFacetNone(testMember));
         testMember.addFacet(new HiddenFacetAbstract(Where.ANYWHERE, testMember) {
             @Override
-            public String hiddenReason(final ObjectAdapter target, final Where whereContext) {
+            public String hiddenReason(final ManagedObject target, final Where whereContext) {
                 return null;
             }
         });
@@ -250,7 +251,7 @@ class ObjectMemberAbstractImpl extends ObjectMemberAbstract {
      * @deprecated - unused ?
      */
     @Deprecated
-    public Consent isUsable(final ObjectAdapter target) {
+    public Consent isUsable(final ManagedObject target) {
         return null;
     }
 
@@ -261,14 +262,14 @@ class ObjectMemberAbstractImpl extends ObjectMemberAbstract {
 
     @Override
     public UsabilityContext<?> createUsableInteractionContext(
-            final ObjectAdapter target, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject target, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyUsabilityContext(target, getIdentifier(), interactionInitiatedBy, where);
     }
 
     @Override
     public VisibilityContext<?> createVisibleInteractionContext(
-            final ObjectAdapter targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyVisibilityContext(targetObjectAdapter, getIdentifier(), interactionInitiatedBy,
                 where);
diff --git a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index 040e878..88eb751 100644
--- a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -19,11 +19,13 @@
 
 package org.apache.isis.core.wrapper;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-import java.util.function.Predicate;
 
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
@@ -66,9 +68,6 @@ import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.progmodel.wrapper.dom.employees.Employee;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 /**
  * Contract test.
  */
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java
index db45177..e24afea 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java
@@ -73,7 +73,7 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEv
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
 import org.apache.isis.core.metamodel.spec.FreeStandingList;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.runtime.persistence.FixturesInstalledFlag;
 import org.apache.isis.core.runtime.persistence.NotPersistableException;
@@ -778,7 +778,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
     @Override
     public void invokeIsisPersistingCallback(final Persistable pojo) {
         if (isTransient(pojo)) {
-            final Instance adapter = Instance.of(
+            final ManagedObject adapter = ManagedObject.of(
                     ()->getSpecificationLoader().loadSpecification(pojo.getClass()),
                     pojo);
             
diff --git a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index 2466ce8..11fa9c0 100644
--- a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -19,7 +19,14 @@
 
 package org.apache.isis.core.runtime.system;
 
-import org.apache.isis.commons.internal.collections._Lists;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.isEmptyString;
+import static org.hamcrest.Matchers.not;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
 
 import org.datanucleus.enhancement.Persistable;
 import org.jmock.Expectations;
@@ -29,6 +36,7 @@ import org.junit.Rule;
 import org.junit.Test;
 
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
@@ -51,6 +59,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -60,15 +69,6 @@ import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdap
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.isEmptyString;
-import static org.hamcrest.Matchers.not;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
 public class ObjectMemberAbstractTest {
 
     @Rule
@@ -164,7 +164,7 @@ public class ObjectMemberAbstractTest {
         testMember.addFacet(new HideForContextFacetNone(testMember));
         testMember.addFacet(new HiddenFacetAbstract(Where.ANYWHERE, testMember) {
             @Override
-            public String hiddenReason(final ObjectAdapter target, final Where whereContext) {
+            public String hiddenReason(final ManagedObject target, final Where whereContext) {
                 return null;
             }
         });
@@ -261,14 +261,14 @@ class ObjectMemberAbstractImpl extends ObjectMemberAbstract {
 
     @Override
     public UsabilityContext<?> createUsableInteractionContext(
-            final ObjectAdapter target, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject target, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyUsabilityContext(target, getIdentifier(), interactionInitiatedBy, where);
     }
 
     @Override
     public VisibilityContext<?> createVisibleInteractionContext(
-            final ObjectAdapter targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+            final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyVisibilityContext(targetObjectAdapter, getIdentifier(), interactionInitiatedBy,
                 where);
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index 3c3cf9c..393df3b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -56,6 +56,11 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
 
     private final Object pojo;
     private final Oid oid;
+    
+    @Override
+    public Object getPojo() {
+        return pojo;
+    }
 
     /**
      * only for standalone or parented collections.
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
index b360f00..9563ffc 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.object.callbacks.LifecycleEventFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -245,7 +245,7 @@ final public class ObjectAdapterContext {
     // -- LIFECYCLE EVENT SUPPORT
 
     public void postLifecycleEventIfRequired(
-            final Instance adapter,
+            final ManagedObject adapter,
             final Class<? extends LifecycleEventFacet> lifecycleEventFacetClass) {
         lifecycleEventMixin.postLifecycleEventIfRequired(adapter, lifecycleEventFacetClass);
     }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java
index 28aac86..0ac50f6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java
@@ -27,6 +27,7 @@ import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.metamodel.facets.object.callbacks.LifecycleEventFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 
@@ -60,7 +61,7 @@ class ObjectAdapterContext_LifecycleEventSupport {
     
     @SuppressWarnings({ "unchecked", "rawtypes" })
     void postLifecycleEventIfRequired(
-            final Instance adapter,
+            final ManagedObject adapter,
             final Class<? extends LifecycleEventFacet> lifecycleEventFacetClass) {
         final LifecycleEventFacet facet = adapter.getSpecification().getFacet(lifecycleEventFacetClass);
         if(facet != null) {
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
index 7a69b10..58dbdf3 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
@@ -30,7 +30,7 @@ import com.google.inject.Singleton;
 import org.apache.wicket.request.resource.PackageResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
 
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.Specification;
 import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
@@ -61,7 +61,7 @@ public class ImageResourceCacheClassPath implements ImageResourceCache {
     }
 
     @Override
-    public ResourceReference resourceReferenceFor(final Instance adapter) {
+    public ResourceReference resourceReferenceFor(final ManagedObject adapter) {
         final Specification spec = adapter.getSpecification();
         if(spec!=null && spec instanceof ObjectSpecification) {
             final ObjectSpecification objSpec = (ObjectSpecification) spec;
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ImageResourceCache.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ImageResourceCache.java
index cb61049..fd1ad5f 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ImageResourceCache.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ImageResourceCache.java
@@ -23,7 +23,7 @@ import java.io.Serializable;
 
 import org.apache.wicket.request.resource.ResourceReference;
 
-import org.apache.isis.core.metamodel.spec.Instance;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 /**
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
  */
 public interface ImageResourceCache extends Serializable {
 
-    ResourceReference resourceReferenceFor(Instance adapter);
+    ResourceReference resourceReferenceFor(ManagedObject adapter);
 
     ResourceReference resourceReferenceForSpec(ObjectSpecification objectSpecification);