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 2021/04/07 21:59:44 UTC

[isis] 03/10: ISIS-2523: prepare removal of @MemberOrder

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

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

commit 7f02dc9d4613ac8127e8be60eb9b9dabe0236d03
Author: ahuber@apache.org <ah...@luna>
AuthorDate: Wed Apr 7 16:40:08 2021 +0200

    ISIS-2523: prepare removal of @MemberOrder
---
 .../modules/ROOT/pages/2021/2.0.0-M6/mignotes.adoc | 25 +++++++++
 .../org/apache/isis/applib/annotation/Action.java  |  1 +
 .../isis/applib/annotation/ActionLayout.java       |  8 +++
 .../isis/applib/annotation/CollectionLayout.java   |  8 +++
 .../apache/isis/applib/annotation/MemberOrder.java |  1 +
 .../isis/applib/annotation/PropertyLayout.java     | 18 +++++++
 .../isis/applib/layout/component/FieldSet.java     |  1 -
 .../isis/applib/mixins/dto/Dto_downloadXml.java    |  7 +--
 .../isis/applib/mixins/dto/Dto_downloadXsd.java    |  6 +--
 .../mixins/layout/Object_downloadLayoutXml.java    |  8 +--
 .../metamodel/Object_downloadMetamodelXml.java     |  8 +--
 .../mixins/metamodel/Object_objectIdentifier.java  |  5 +-
 .../applib/mixins/metamodel/Object_objectType.java |  4 +-
 .../mixins/metamodel/Object_rebuildMetamodel.java  |  8 +--
 .../applib/mixins/rest/Object_openRestApi.java     |  8 +--
 .../applib/mixins/system/DomainChangeRecord.java   | 37 +++++++-------
 .../services/confview/ConfigurationMenu.java       |  6 +--
 .../isis/applib/services/grid/GridService.java     |  1 -
 .../applib/services/layout/LayoutServiceMenu.java  | 11 ++--
 .../apache/isis/applib/services/layout/Style.java  |  1 -
 .../services/metamodel/MetaModelServiceMenu.java   | 13 ++---
 .../isis/applib/services/user/RoleMemento.java     |  6 +--
 .../isis/applib/services/user/UserMemento.java     |  7 +--
 .../metamodel/inspect/Object_inspectMetamodel.java |  9 ++--
 .../services/grid/GridSystemServiceAbstract.java   |  1 -
 .../MemberOrderAnnotationFacetFactoryTest.java     | 10 ++--
 .../i18n/po/TranslationServicePoMenu.java          | 21 +++-----
 .../wrapper/dom/employees/Employee.java            |  8 +--
 .../security/authentication/logout/LogoutMenu.java |  6 +--
 .../HasAsciiDocDescription_description.java        | 11 ++--
 .../HasAsciiDocDescription_sources.java            | 12 ++---
 .../associateWith/ActionAssociateWithVm.java       | 11 ++--
 .../child/ActionAssociateWithChildVm.java          |  4 +-
 .../ActionCommandPublishingJdo.java                | 17 +++----
 .../Action/domainEvent/ActionDomainEventVm.java    |  7 ++-
 .../ActionDomainEventVm_controlUpdateText.java     |  7 ++-
 .../ActionExecutionPublishingJdo.java              | 13 +++--
 .../actions/Action/hidden/ActionHiddenVm.java      |  9 ++--
 .../Action/restrictTo/ActionRestrictToVm.java      | 15 +++---
 .../Action/semantics/ActionSemanticsVm.java        | 27 +++++-----
 .../Action/typeOf/child/ActionTypeOfChildVm.java   | 16 ++----
 .../position/ActionLayoutPositionVm.java           |  9 ++--
 .../promptStyle/ActionLayoutPromptStyleVm.java     | 22 ++++----
 .../child/CollectionDomainEventChildVm.java        |  7 ++-
 .../CollectionDomainEventVm_controlChildren.java   |  7 ++-
 .../DomainObjectEntityChangePublishingJdo.java     |  6 +--
 ...omainObjectEntityChangePublishingVm_create.java |  7 ++-
 ...omainObjectEntityChangePublishingVm_delete.java | 10 ++--
 ...inObjectEntityChangePublishingVm_updateAll.java | 11 ++--
 .../other/mixins/CountHolder_explanation.java      |  6 +--
 .../PropertyCommandPublishingJdo.java              | 26 ++++------
 .../domainEvent/PropertyDomainEventVm.java         |  9 ++--
 .../PropertyDomainEventVm_controlText.java         |  7 ++-
 .../Property/editing/PropertyEditingVm.java        | 20 +++-----
 .../PropertyExecutionPublishingJdo.java            | 21 +++-----
 .../Property/fileAccept/PropertyFileAcceptVm.java  | 24 ++++-----
 .../Property/hidden/PropertyHiddenVm.java          | 31 +++++-------
 ...tyHiddenVm_mixinPropertyWithMetaAnnotation.java |  5 +-
 ..._mixinPropertyWithMetaAnnotationOverridden.java |  5 +-
 .../hidden/child/PropertyHiddenChildVm.java        | 51 ++++++++-----------
 .../child/PropertyHiddenChildVm_mixinProperty.java |  5 +-
 .../Property/maxLength/PropertyMaxLengthVm.java    | 19 +++----
 .../mustSatisfy/PropertyMustSatisfyVm.java         | 19 +++----
 .../optionality/PropertyOptionalityVm.java         | 24 ++++-----
 .../Property/projecting/PropertyProjectingVm.java  |  9 ++--
 .../child/PropertyProjectingChildVm.java           |  9 ++--
 .../projecting/jdo/PropertyProjectingChildJdo.java |  7 ++-
 .../regexPattern/PropertyRegexPatternVm.java       | 19 +++----
 .../Property/snapshot/PropertySnapshotVm.java      | 31 +++++-------
 .../cssClass/PropertyLayoutCssClassVm.java         | 24 ++++-----
 .../PropertyLayoutCssClassVm_mixinProperty.java    |  5 +-
 ...CssClassVm_mixinPropertyWithMetaAnnotation.java |  5 +-
 ..._mixinPropertyWithMetaAnnotationOverridden.java |  5 +-
 .../describedAs/PropertyLayoutDescribedAsVm.java   | 22 +++-----
 .../PropertyLayoutDescribedAsVm_mixinProperty.java |  5 +-
 ...cribedAsVm_mixinPropertyWithMetaAnnotation.java |  5 +-
 ..._mixinPropertyWithMetaAnnotationOverridden.java |  5 +-
 .../hidden/PropertyLayoutHiddenVm.java             | 36 +++++--------
 ...utHiddenVm_mixinPropertyWithMetaAnnotation.java |  5 +-
 ..._mixinPropertyWithMetaAnnotationOverridden.java |  5 +-
 .../hidden/child/PropertyLayoutHiddenChildVm.java  | 55 ++++++++------------
 .../PropertyLayoutHiddenChildVm_mixinProperty.java |  5 +-
 .../PropertyLayoutLabelPositionVm.java             | 59 +++++++++-------------
 ...ropertyLayoutLabelPositionVm_mixinProperty.java |  5 +-
 ...PositionVm_mixinPropertyWithMetaAnnotation.java |  5 +-
 ..._mixinPropertyWithMetaAnnotationOverridden.java |  5 +-
 .../multiLine/PropertyLayoutMultiLineVm.java       | 29 ++++-------
 .../PropertyLayoutMultiLineVm_mixinProperty.java   |  5 +-
 ...ultiLineVm_mixinPropertyWithMetaAnnotation.java |  5 +-
 ..._mixinPropertyWithMetaAnnotationOverridden.java |  5 +-
 .../named/PropertyLayoutNamedVm.java               | 34 +++++--------
 .../named/PropertyLayoutNamedVm_mixinProperty.java |  5 +-
 ...outNamedVm_mixinPropertyWithMetaAnnotation.java |  5 +-
 ..._mixinPropertyWithMetaAnnotationOverridden.java |  5 +-
 .../PropertyLayout/navigable/FileNodeVm.java       | 16 ++----
 .../renderDay/PropertyLayoutRenderDayVm.java       | 34 +++++--------
 ...RenderDayVm_mixinEndDateWithMetaAnnotation.java |  5 +-
 ...m_mixinEndDateWithMetaAnnotationOverridden.java |  5 +-
 ...RenderDayVm_mixinEndDateWithPropertyLayout.java |  5 +-
 .../repainting/PropertyLayoutRepaintingVm.java     | 29 ++++-------
 .../PropertyLayoutRepaintingVm_mixinProperty.java  |  5 +-
 ...paintingVm_mixinPropertyWithMetaAnnotation.java |  5 +-
 ..._mixinPropertyWithMetaAnnotationOverridden.java |  5 +-
 .../PropertyLayoutTypicalLengthVm.java             | 24 ++++-----
 ...ropertyLayoutTypicalLengthVm_mixinProperty.java |  5 +-
 ...alLengthVm_mixinPropertyWithMetaAnnotation.java |  5 +-
 ..._mixinPropertyWithMetaAnnotationOverridden.java |  5 +-
 .../core/wrapperFactory/WrapperFactoryJdo.java     | 11 ++--
 .../xmlSnapshotService/XmlSnapshotParentVm.java    | 13 +++--
 .../child/XmlSnapshotChildVm.java                  |  7 +--
 .../xmlSnapshotService/peer/XmlSnapshotPeerVm.java |  9 ++--
 .../peer/child/XmlSnapshotPeerChildVm.java         |  7 +--
 .../secman/apptenancy/entities/TenantedJdo.java    |  8 +--
 .../types/isis/blobs/holder/IsisBlobHolder2.java   | 21 +++-----
 .../blobs/holder/IsisBlobHolder_mixinProperty.java |  4 +-
 .../dom/types/isis/blobs/jdo/IsisBlobJdo.java      | 15 +++---
 .../dom/types/isis/blobs/vm/IsisBlobVm.java        | 16 +++---
 .../types/isis/clobs/holder/IsisClobHolder2.java   | 21 +++-----
 .../clobs/holder/IsisClobHolder_mixinProperty.java |  4 +-
 .../dom/types/isis/clobs/jdo/IsisClobJdo.java      | 15 +++---
 .../dom/types/isis/clobs/vm/IsisClobVm.java        | 15 +++---
 .../holder/IsisLocalResourcePathHolder2.java       | 21 +++-----
 .../IsisLocalResourcePathHolder_mixinProperty.java |  4 +-
 .../jdo/IsisLocalResourcePathJdo.java              | 16 +++---
 .../vm/IsisLocalResourcePathVm.java                | 15 +++---
 .../isis/markups/holder/IsisMarkupHolder2.java     | 21 +++-----
 .../holder/IsisMarkupHolder_mixinProperty.java     |  4 +-
 .../dom/types/isis/markups/jdo/IsisMarkupJdo.java  | 17 +++----
 .../dom/types/isis/markups/vm/IsisMarkupVm.java    | 17 +++----
 .../isis/passwords/holder/IsisPasswordHolder2.java | 21 +++-----
 .../holder/IsisPasswordHolder_mixinProperty.java   |  4 +-
 .../types/isis/passwords/jdo/IsisPasswordJdo.java  | 15 +++---
 .../types/isis/passwords/vm/IsisPasswordVm.java    | 15 +++---
 .../asciidocs/holder/IsisAsciiDocHolder2.java      | 25 +++++----
 .../holder/IsisAsciiDocHolder_mixinProperty.java   |  4 +-
 .../isisext/asciidocs/jdo/IsisAsciiDocJdo.java     | 17 +++----
 .../types/isisext/asciidocs/vm/IsisAsciiDocVm.java | 16 +++---
 .../markdowns/holder/IsisMarkdownHolder2.java      | 21 +++-----
 .../holder/IsisMarkdownHolder_mixinProperty.java   |  4 +-
 .../isisext/markdowns/jdo/IsisMarkdownJdo.java     | 17 +++----
 .../types/isisext/markdowns/vm/IsisMarkdownVm.java | 17 +++----
 .../javaawt/images/holder/JavaAwtImageHolder2.java | 21 +++-----
 .../holder/JavaAwtImageHolder_mixinProperty.java   |  4 +-
 .../types/javaawt/images/jdo/JavaAwtImageJdo.java  | 17 +++----
 .../types/javaawt/images/vm/JavaAwtImageVm.java    | 16 +++---
 .../booleans/holder/WrapperBooleanHolder2.java     | 21 +++-----
 .../holder/WrapperBooleanHolder_mixinProperty.java |  4 +-
 .../javalang/booleans/jdo/WrapperBooleanJdo.java   | 15 +++---
 .../javalang/booleans/vm/WrapperBooleanVm.java     | 15 +++---
 .../javalang/bytes/holder/WrapperByteHolder2.java  | 21 +++-----
 .../holder/WrapperByteHolder_mixinProperty.java    |  4 +-
 .../types/javalang/bytes/jdo/WrapperByteJdo.java   | 15 +++---
 .../dom/types/javalang/bytes/vm/WrapperByteVm.java | 15 +++---
 .../characters/holder/WrapperCharacterHolder2.java | 21 +++-----
 .../WrapperCharacterHolder_mixinProperty.java      |  4 +-
 .../characters/jdo/WrapperCharacterJdo.java        | 15 +++---
 .../javalang/characters/vm/WrapperCharacterVm.java | 15 +++---
 .../doubles/holder/WrapperDoubleHolder2.java       | 21 +++-----
 .../holder/WrapperDoubleHolder_mixinProperty.java  |  4 +-
 .../javalang/doubles/jdo/WrapperDoubleJdo.java     | 15 +++---
 .../types/javalang/doubles/vm/WrapperDoubleVm.java | 15 +++---
 .../floats/holder/WrapperFloatHolder2.java         | 21 +++-----
 .../holder/WrapperFloatHolder_mixinProperty.java   |  4 +-
 .../types/javalang/floats/jdo/WrapperFloatJdo.java | 15 +++---
 .../types/javalang/floats/vm/WrapperFloatVm.java   | 15 +++---
 .../integers/holder/WrapperIntegerHolder2.java     | 21 +++-----
 .../holder/WrapperIntegerHolder_mixinProperty.java |  4 +-
 .../javalang/integers/jdo/WrapperIntegerJdo.java   | 15 +++---
 .../javalang/integers/vm/WrapperIntegerVm.java     | 15 +++---
 .../javalang/longs/holder/WrapperLongHolder2.java  | 21 +++-----
 .../holder/WrapperLongHolder_mixinProperty.java    |  4 +-
 .../types/javalang/longs/jdo/WrapperLongJdo.java   | 15 +++---
 .../dom/types/javalang/longs/vm/WrapperLongVm.java | 15 +++---
 .../shorts/holder/WrapperShortHolder2.java         | 21 +++-----
 .../holder/WrapperShortHolder_mixinProperty.java   |  4 +-
 .../types/javalang/shorts/jdo/WrapperShortJdo.java | 15 +++---
 .../types/javalang/shorts/vm/WrapperShortVm.java   | 15 +++---
 .../strings/holder/JavaLangStringHolder2.java      | 21 +++-----
 .../holder/JavaLangStringHolder_mixinProperty.java |  5 +-
 .../javalang/strings/jdo/JavaLangStringJdo.java    | 15 +++---
 .../javalang/strings/vm/JavaLangStringVm.java      | 15 +++---
 .../holder/JavaMathBigDecimalHolder2.java          | 21 +++-----
 .../JavaMathBigDecimalHolder_mixinProperty.java    |  4 +-
 .../bigdecimals/jdo/JavaMathBigDecimalJdo.java     | 15 +++---
 .../bigdecimals/vm/JavaMathBigDecimalVm.java       | 15 +++---
 .../holder/JavaMathBigIntegerHolder2.java          | 21 +++-----
 .../JavaMathBigIntegerHolder_mixinProperty.java    |  4 +-
 .../bigintegers/jdo/JavaMathBigIntegerJdo.java     | 15 +++---
 .../bigintegers/vm/JavaMathBigIntegerVm.java       | 15 +++---
 .../javanet/urls/holder/JavaNetUrlHolder2.java     | 21 +++-----
 .../holder/JavaNetUrlHolder_mixinProperty.java     |  4 +-
 .../dom/types/javanet/urls/jdo/JavaNetUrlJdo.java  | 15 +++---
 .../dom/types/javanet/urls/vm/JavaNetUrlVm.java    | 15 +++---
 .../javasqldate/holder/JavaSqlDateHolder2.java     | 21 +++-----
 .../javasqldate/holder/JavaSqlDateHolder3.java     | 16 +++---
 .../holder/JavaSqlDateHolder_mixinProperty.java    |  4 +-
 .../javasql/javasqldate/jdo/JavaSqlDateJdo.java    | 15 +++---
 .../javasql/javasqldate/vm/JavaSqlDateVm.java      | 15 +++---
 .../holder/JavaSqlTimestampHolder2.java            | 21 +++-----
 .../holder/JavaSqlTimestampHolder3.java            | 16 +++---
 .../JavaSqlTimestampHolder_mixinProperty.java      |  4 +-
 .../javasqltimestamp/jdo/JavaSqlTimestampJdo.java  | 15 +++---
 .../javasqltimestamp/vm/JavaSqlTimestampVm.java    | 15 +++---
 .../holder/JavaTimeLocalDateHolder2.java           | 21 +++-----
 .../holder/JavaTimeLocalDateHolder3.java           | 16 +++---
 .../JavaTimeLocalDateHolder_mixinProperty.java     |  4 +-
 .../jdo/JavaTimeLocalDateJdo.java                  | 15 +++---
 .../javatimelocaldate/vm/JavaTimeLocalDateVm.java  | 15 +++---
 .../holder/JavaTimeLocalDateTimeHolder2.java       | 21 +++-----
 .../holder/JavaTimeLocalDateTimeHolder3.java       | 16 +++---
 .../JavaTimeLocalDateTimeHolder_mixinProperty.java |  4 +-
 .../jdo/JavaTimeLocalDateTimeJdo.java              | 15 +++---
 .../vm/JavaTimeLocalDateTimeVm.java                | 15 +++---
 .../holder/JavaTimeOffsetDateTimeHolder2.java      | 21 +++-----
 .../holder/JavaTimeOffsetDateTimeHolder3.java      | 16 +++---
 ...JavaTimeOffsetDateTimeHolder_mixinProperty.java |  4 +-
 .../jdo/JavaTimeOffsetDateTimeJdo.java             | 15 +++---
 .../vm/JavaTimeOffsetDateTimeVm.java               | 15 +++---
 .../holder/JavaTimeOffsetTimeHolder2.java          | 21 +++-----
 .../holder/JavaTimeOffsetTimeHolder3.java          | 16 +++---
 .../JavaTimeOffsetTimeHolder_mixinProperty.java    |  4 +-
 .../jdo/JavaTimeOffsetTimeJdo.java                 | 15 +++---
 .../vm/JavaTimeOffsetTimeVm.java                   | 15 +++---
 .../holder/JavaTimeZonedDateTimeHolder2.java       | 21 +++-----
 .../holder/JavaTimeZonedDateTimeHolder3.java       | 16 +++---
 .../JavaTimeZonedDateTimeHolder_mixinProperty.java |  4 +-
 .../jdo/JavaTimeZonedDateTimeJdo.java              | 15 +++---
 .../vm/JavaTimeZonedDateTimeVm.java                | 15 +++---
 .../javautildate/holder/JavaUtilDateHolder2.java   | 21 +++-----
 .../javautildate/holder/JavaUtilDateHolder3.java   | 16 +++---
 .../holder/JavaUtilDateHolder_mixinProperty.java   |  4 +-
 .../javautil/javautildate/jdo/JavaUtilDateJdo.java | 15 +++---
 .../javautil/javautildate/vm/JavaUtilDateVm.java   | 15 +++---
 .../javautil/uuids/holder/JavaUtilUuidHolder2.java | 21 +++-----
 .../holder/JavaUtilUuidHolder_mixinProperty.java   |  4 +-
 .../types/javautil/uuids/jdo/JavaUtilUuidJdo.java  | 15 +++---
 .../types/javautil/uuids/vm/JavaUtilUuidVm.java    | 15 +++---
 .../jodadatetime/holder/JodaDateTimeHolder2.java   | 21 +++-----
 .../jodadatetime/holder/JodaDateTimeHolder3.java   | 16 +++---
 .../holder/JodaDateTimeHolder_mixinProperty.java   |  4 +-
 .../jodatime/jodadatetime/jdo/JodaDateTimeJdo.java | 15 +++---
 .../jodatime/jodadatetime/vm/JodaDateTimeVm.java   | 16 +++---
 .../jodalocaldate/holder/JodaLocalDateHolder2.java | 21 +++-----
 .../jodalocaldate/holder/JodaLocalDateHolder3.java | 16 +++---
 .../holder/JodaLocalDateHolder_mixinProperty.java  |  4 +-
 .../jodalocaldate/jdo/JodaLocalDateJdo.java        | 15 +++---
 .../jodatime/jodalocaldate/vm/JodaLocalDateVm.java | 16 +++---
 .../holder/JodaLocalDateTimeHolder2.java           | 21 +++-----
 .../holder/JodaLocalDateTimeHolder3.java           | 16 +++---
 .../JodaLocalDateTimeHolder_mixinProperty.java     |  4 +-
 .../jdo/JodaLocalDateTimeJdo.java                  | 15 +++---
 .../jodalocaldatetime/vm/JodaLocalDateTimeVm.java  | 16 +++---
 .../booleans/holder/PrimitiveBooleanHolder.java    |  7 +--
 .../booleans/holder/PrimitiveBooleanHolder2.java   | 21 +++-----
 .../PrimitiveBooleanHolder_mixinProperty.java      |  4 +-
 .../booleans/jdo/PrimitiveBooleanJdo.java          | 11 ++--
 .../primitive/booleans/vm/PrimitiveBooleanVm.java  | 11 ++--
 .../bytes/holder/PrimitiveByteHolder2.java         | 21 +++-----
 .../holder/PrimitiveByteHolder_mixinProperty.java  |  4 +-
 .../primitive/bytes/jdo/PrimitiveByteJdo.java      | 11 ++--
 .../types/primitive/bytes/vm/PrimitiveByteVm.java  | 11 ++--
 .../chars/holder/PrimitiveCharHolder2.java         | 21 +++-----
 .../holder/PrimitiveCharHolder_mixinProperty.java  |  4 +-
 .../primitive/chars/jdo/PrimitiveCharJdo.java      | 11 ++--
 .../types/primitive/chars/vm/PrimitiveCharVm.java  | 11 ++--
 .../doubles/holder/PrimitiveDoubleHolder2.java     | 21 +++-----
 .../PrimitiveDoubleHolder_mixinProperty.java       |  4 +-
 .../primitive/doubles/jdo/PrimitiveDoubleJdo.java  | 11 ++--
 .../primitive/doubles/vm/PrimitiveDoubleVm.java    | 11 ++--
 .../floats/holder/PrimitiveFloatHolder2.java       | 21 +++-----
 .../holder/PrimitiveFloatHolder_mixinProperty.java |  4 +-
 .../primitive/floats/jdo/PrimitiveFloatJdo.java    | 11 ++--
 .../primitive/floats/vm/PrimitiveFloatVm.java      | 11 ++--
 .../primitive/ints/holder/PrimitiveIntHolder2.java | 21 +++-----
 .../holder/PrimitiveIntHolder_mixinProperty.java   |  4 +-
 .../types/primitive/ints/jdo/PrimitiveIntJdo.java  | 11 ++--
 .../types/primitive/ints/vm/PrimitiveIntVm.java    | 11 ++--
 .../longs/holder/PrimitiveLongHolder2.java         | 21 +++-----
 .../holder/PrimitiveLongHolder_mixinProperty.java  |  4 +-
 .../primitive/longs/jdo/PrimitiveLongJdo.java      | 11 ++--
 .../types/primitive/longs/vm/PrimitiveLongVm.java  | 11 ++--
 .../shorts/holder/PrimitiveShortHolder2.java       | 21 +++-----
 .../holder/PrimitiveShortHolder_mixinProperty.java |  4 +-
 .../primitive/shorts/jdo/PrimitiveShortJdo.java    | 11 ++--
 .../primitive/shorts/vm/PrimitiveShortVm.java      | 11 ++--
 .../impl/jdo/CommandJdo_childCommands.java         |  5 +-
 .../impl/jdo/CommandJdo_openResultObject.java      |  5 +-
 .../impl/jdo/CommandJdo_openTargetObject.java      |  5 +-
 .../commandlog/impl/jdo/CommandJdo_retry.java      |  8 +--
 .../impl/jdo/CommandJdo_siblingCommands.java       |  6 +--
 .../impl/mixins/HasInteractionId_command.java      | 10 ++--
 .../mixins/HasUsername_recentCommandsByUser.java   |  5 +-
 .../impl/mixins/Object_recentCommands.java         |  5 +-
 .../commandlog/impl/ui/CommandServiceMenu.java     | 13 ++---
 .../primary/ui/CommandReplayOnPrimaryService.java  | 10 ++--
 .../secondary/mixins/CommandJdo_exclude.java       | 10 ++--
 .../secondary/mixins/CommandJdo_replayQueue.java   |  6 +--
 .../ui/CommandReplayOnSecondaryService.java        | 10 ++--
 .../api/permission/ApplicationPermission.java      | 15 +++---
 .../dom/feature/ApplicationFeatureViewModel.java   | 28 ++++++----
 .../dom/feature/ApplicationFeatureViewModels.java  | 21 ++------
 .../model/dom/feature/ApplicationNamespace.java    |  6 +--
 .../secman/model/dom/feature/ApplicationType.java  | 16 +++---
 .../model/dom/feature/ApplicationTypeAction.java   |  6 +--
 .../dom/feature/ApplicationTypeCollection.java     | 12 ++---
 .../model/dom/feature/ApplicationTypeMember.java   |  4 +-
 .../model/dom/feature/ApplicationTypeProperty.java | 10 ++--
 .../dom/permission/ApplicationPermissionMenu.java  |  6 +--
 .../permission/ApplicationPermission_allow.java    |  2 +-
 .../permission/ApplicationPermission_changing.java |  2 +-
 .../permission/ApplicationPermission_feature.java  |  5 +-
 .../dom/permission/ApplicationPermission_veto.java |  2 +-
 .../permission/ApplicationPermission_viewing.java  |  2 +-
 .../secman/model/dom/role/ApplicationRoleMenu.java |  8 +--
 .../dom/role/ApplicationRole_addPermission.java    |  5 +-
 .../model/dom/role/ApplicationRole_delete.java     |  4 +-
 .../role/ApplicationRole_updateDescription.java    |  5 +-
 .../model/dom/role/ApplicationRole_updateName.java |  9 ++--
 .../model/dom/tenancy/ApplicationTenancyMenu.java  |  8 +--
 .../secman/model/dom/user/ApplicationUserMenu.java | 10 ++--
 .../model/dom/user/ApplicationUser_addRole.java    |  5 +-
 .../secman/model/dom/user/HasUsername_open.java    | 10 ++--
 .../secman/model/dom/user/MeService.java           |  7 +--
 .../model/dom/user/UserPermissionViewModel.java    | 17 +++----
 .../secman/jdo/dom/role/ApplicationRole.java       | 18 +++----
 .../secman/jdo/dom/tenancy/ApplicationTenancy.java |  6 +--
 .../secman/jdo/dom/user/ApplicationUser.java       | 54 ++++++++++----------
 .../secman/jpa/dom/role/ApplicationRole.java       | 19 +++----
 .../secman/jpa/dom/tenancy/ApplicationTenancy.java |  6 +--
 .../secman/jpa/dom/user/ApplicationUser.java       | 54 ++++++++++----------
 .../demomodule/dom/PdfJsDemoObjectWithBlob.java    |  4 +-
 .../mixins/Persistable_datanucleusIdLong.java      |  3 +-
 .../mixins/Persistable_datanucleusVersionLong.java |  6 +--
 .../Persistable_datanucleusVersionTimestamp.java   |  6 +--
 .../mixins/Persistable_downloadJdoMetadata.java    |  8 +--
 .../jdo/metamodel/menu/JdoMetamodelMenu.java       |  6 +--
 .../BulkUpdateManagerForDemoToDoItem.java          |  9 ++--
 .../bulkupdate/BulkUpdateMenuForDemoToDoItem.java  |  4 +-
 .../demoapp/todomodule/dom/ExcelDemoToDoItem.java  |  2 +-
 .../todomodule/dom/ExcelDemoToDoItemMenu.java      | 10 ++--
 .../subdomains/excel/testing/ExcelFixture.java     |  7 ++-
 .../subdomains/excel/testing/ExcelFixture2.java    |  7 ++-
 .../demomodule/dom/FakeDataDemoObjectWithAll.java  |  3 +-
 .../dom/FakeDataDemoObjectWithAllMenu.java         |  7 +--
 .../applib/fixturescripts/FixtureResult.java       |  4 +-
 .../applib/fixturescripts/FixtureScripts.java      | 11 ++--
 .../h2console/ui/services/H2ManagerMenu.java       |  6 +--
 .../hsqldbmgr/dom/services/HsqlDbManagerMenu.java  |  6 +--
 .../service/swagger/SwaggerServiceMenu.java        | 16 +++---
 .../wicket/viewer/mixins/Object_clearHints.java    |  5 +-
 350 files changed, 1806 insertions(+), 2527 deletions(-)

diff --git a/antora/components/relnotes/modules/ROOT/pages/2021/2.0.0-M6/mignotes.adoc b/antora/components/relnotes/modules/ROOT/pages/2021/2.0.0-M6/mignotes.adoc
index b7a1445..272eee6 100644
--- a/antora/components/relnotes/modules/ROOT/pages/2021/2.0.0-M6/mignotes.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/2021/2.0.0-M6/mignotes.adoc
@@ -6,3 +6,28 @@
 
 (This page will be added to as development progresses).
 
+== Changes to the Programming Model
+
+=== Removed (Programming Model)
+
+[cols="2a,3a", options="header"]
+
+|===
+
+| was
+| now what?
+
+| `@Action(associateWithSequence=...)` removed
+| use `@ActionLayout(sequence=...)` instead
+
+| `@MemberOrder(name=...)` removed
+| instead on a _Property_ use `@PropertyLayout(group=...)` 
+or on an _Action_ use `@Action(associateWith=...)`; 
+there is no counterpart for _Collection_ 
+
+| `@MemberOrder(sequence=...)` removed
+| use `@ActionLayout/@PropertyLayout/@CollectionLayout(sequence=...)` instead
+
+
+|===
+
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/Action.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
index c7b8eb6..f524664 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
@@ -95,6 +95,7 @@ public @interface Action {
      *
      * @see Action#associateWith()
      */
+    @Deprecated //TODO update java-doc in other layout annotations  
     String associateWithSequence()
             default "1";
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
index fd80770..344a37a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
@@ -175,5 +175,13 @@ public @interface ActionLayout {
      */
     Redirect redirectPolicy()
             default Redirect.AS_CONFIGURED;
+    
+    /**
+     * The order of this member relative to other members in the same (layout) group, 
+     * given in <i>Dewey-decimal</i> notation.
+     *
+     */
+    String sequence()
+            default "";
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
index dad2b5c..6defd25 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
@@ -142,6 +142,14 @@ public @interface CollectionLayout {
             default -1;
 
     /**
+     * The order of this member relative to other members in the same (layout) group, 
+     * given in <i>Dewey-decimal</i> notation.
+     *
+     */
+    String sequence()
+            default "";
+    
+    /**
      * Indicates that the elements in a ({@link java.util.SortedSet}) collection should be sorted according to a different order than the
      * natural sort order, as defined by the specified{@link java.util.Comparator}.
      *
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/MemberOrder.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/MemberOrder.java
index f91941f..40e07b7 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/MemberOrder.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/MemberOrder.java
@@ -34,6 +34,7 @@ import java.lang.annotation.Target;
  * </p>
  * @since 1.x {@index}
  */
+@Deprecated
 @Inherited
 @Target({ ElementType.METHOD, ElementType.FIELD })
 @Retention(RetentionPolicy.RUNTIME)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
index bb0299a..b11d586 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
@@ -65,6 +65,15 @@ public @interface PropertyLayout {
     String describedAs()
             default "";
 
+    
+    /**
+     * Indicates the property group, as properties can be grouped together.
+     * @apiNote similarly grouping of <i>Actions</i> is made available via {@link Action#associateWith()};
+     * currently for <i>Collections</i> there is no counterpart
+     */
+    String group()
+            default "";
+    
     /**
      * Indicates where in the UI the property
      * should <i>not</i> be visible.
@@ -200,6 +209,15 @@ public @interface PropertyLayout {
      */
     Repainting repainting()
             default Repainting.NOT_SPECIFIED;
+    
+
+    /**
+     * The order of this member relative to other members in the same (layout) group, 
+     * given in <i>Dewey-decimal</i> notation.
+     *
+     */
+    String sequence()
+            default "";
 
     /**
      * The typical entry length of a field, use to determine the optimum width
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
index 5ea34cd..6ee36dc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
@@ -28,7 +28,6 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
 
 /**
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java
index 426051f..4839f94 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java
@@ -22,7 +22,6 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -51,8 +50,8 @@ import lombok.val;
         restrictTo = RestrictTo.PROTOTYPING
         )
 @ActionLayout(
-        cssClassFa = "fa-download"
-        )
+        cssClassFa = "fa-download",
+        sequence = "500.1")
 @RequiredArgsConstructor
 public class Dto_downloadXml {
 
@@ -61,8 +60,6 @@ public class Dto_downloadXml {
     public static class ActionDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.ActionDomainEvent<Dto_downloadXml> {}
 
-
-    @MemberOrder(sequence = "500.1")
     public Object act(
 
             // PARAM 0
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java
index b22d3ad..8bf77f0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java
@@ -24,7 +24,6 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -63,8 +62,8 @@ import lombok.val;
         restrictTo = RestrictTo.PROTOTYPING
         )
 @ActionLayout(
-        cssClassFa = "fa-download"
-        )
+        cssClassFa = "fa-download",
+        sequence = "500.2")
 @RequiredArgsConstructor
 public class Dto_downloadXsd {
 
@@ -78,7 +77,6 @@ public class Dto_downloadXsd {
      * common Apache Isis schemas; useful if there is only one other XSD schema
      * referenced by the DTO.
      */
-    @MemberOrder(sequence = "500.2")
     public Object act(
 
             @ParameterLayout(
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java
index 000d6fa..ebf1bb3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java
@@ -22,7 +22,6 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -44,11 +43,13 @@ import lombok.val;
 @Action(
         domainEvent = Object_downloadLayoutXml.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
-        restrictTo = RestrictTo.PROTOTYPING
+        restrictTo = RestrictTo.PROTOTYPING,
+        associateWith = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME
 )
 @ActionLayout(
         cssClassFa = "fa-download",
-        position = ActionLayout.Position.PANEL_DROPDOWN
+        position = ActionLayout.Position.PANEL_DROPDOWN,
+        sequence = "700.1"
 )
 @RequiredArgsConstructor
 public class Object_downloadLayoutXml {
@@ -58,7 +59,6 @@ public class Object_downloadLayoutXml {
 
     private final Object holder;
 
-    @MemberOrder(name = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.1")
     public Object act(
             @ParameterLayout(
                     named = DtoMixinConstants.FILENAME_PROPERTY_NAME,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
index e0a61ba..4cd7c24 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
@@ -24,7 +24,6 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -49,11 +48,13 @@ import lombok.val;
 @Action(
         domainEvent = Object_downloadMetamodelXml.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
-        restrictTo = RestrictTo.PROTOTYPING
+        restrictTo = RestrictTo.PROTOTYPING,
+        associateWith = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME
         )
 @ActionLayout(
         cssClassFa = "fa-download",
-        position = ActionLayout.Position.PANEL_DROPDOWN
+        position = ActionLayout.Position.PANEL_DROPDOWN,
+        sequence = "700.2"
         )
 @RequiredArgsConstructor
 public class Object_downloadMetamodelXml {
@@ -63,7 +64,6 @@ public class Object_downloadMetamodelXml {
     public static class ActionDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.ActionDomainEvent<Object_downloadMetamodelXml> {}
 
-    @MemberOrder(name = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.2")
     public Object act(
             @ParameterLayout(
                     named = DtoMixinConstants.FILENAME_PROPERTY_NAME,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
index 39ecc54..b82a4d7 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
@@ -20,7 +20,7 @@ package org.apache.isis.applib.mixins.metamodel;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -51,7 +51,7 @@ import lombok.val;
  * @since 1.x {@index}
  */
 @Property
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.2")
 @RequiredArgsConstructor
 public class Object_objectIdentifier {
 
@@ -63,7 +63,6 @@ public class Object_objectIdentifier {
     public static class ActionDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.ActionDomainEvent<Object_objectIdentifier> {}
 
-    @MemberOrder(name = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.2")
     public String prop() {
         val bookmark = bookmarkService.bookmarkForElseThrow(this.holder);
         val sort = mmService.sortOf(bookmark, MetaModelService.Mode.RELAXED);
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
index 6b20e64..aee0e34 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
@@ -21,7 +21,6 @@ package org.apache.isis.applib.mixins.metamodel;
 import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -49,7 +48,7 @@ import lombok.val;
  * @since 1.x {@index}
  */
 @Property
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.1")
 @RequiredArgsConstructor
 public class Object_objectType {
 
@@ -60,7 +59,6 @@ public class Object_objectType {
     public static class ActionDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.ActionDomainEvent<Object_objectType> {}
 
-    @MemberOrder(name = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.1")
     public String prop() {
         val bookmark = bookmarkService.bookmarkForElseThrow(this.holder);
         return bookmark.getObjectType();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_rebuildMetamodel.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_rebuildMetamodel.java
index 7e8fc56..293cbcc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_rebuildMetamodel.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_rebuildMetamodel.java
@@ -22,7 +22,6 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.mixins.layout.LayoutMixinConstants;
@@ -40,11 +39,13 @@ import lombok.RequiredArgsConstructor;
 @Action(
         domainEvent = Object_rebuildMetamodel.ActionDomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT,
-        restrictTo = RestrictTo.PROTOTYPING
+        restrictTo = RestrictTo.PROTOTYPING,
+        associateWith = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME
 )
 @ActionLayout(
         cssClassFa = "fa-sync",
-        position = ActionLayout.Position.PANEL
+        position = ActionLayout.Position.PANEL,
+        sequence = "800.1"
 )
 @RequiredArgsConstructor
 public class Object_rebuildMetamodel {
@@ -54,7 +55,6 @@ public class Object_rebuildMetamodel {
 
     private final Object holder;
 
-    @MemberOrder(name = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "800.1")
     public Object act() {
         metaModelService.rebuild(holder.getClass());
         return holder;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/rest/Object_openRestApi.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/rest/Object_openRestApi.java
index d8b413e..3d5dfad 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/rest/Object_openRestApi.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/rest/Object_openRestApi.java
@@ -24,7 +24,6 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.mixins.layout.LayoutMixinConstants;
@@ -43,11 +42,13 @@ import lombok.val;
 @Action(
         domainEvent = Object_openRestApi.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
-        restrictTo = RestrictTo.PROTOTYPING
+        restrictTo = RestrictTo.PROTOTYPING,
+        associateWith = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME
 )
 @ActionLayout(
         cssClassFa = "fa-external-link-alt",
-        position = ActionLayout.Position.PANEL_DROPDOWN
+        position = ActionLayout.Position.PANEL_DROPDOWN,
+        sequence = "750.1"
 )
 @RequiredArgsConstructor
 public class Object_openRestApi {
@@ -57,7 +58,6 @@ public class Object_openRestApi {
 
     private final Object holder;
 
-    @MemberOrder(name = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "750.1")
     public LocalResourcePath act() {
         val bookmark = bookmarkService.bookmarkForElseThrow(holder);
         val objType = bookmark.getObjectType();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/system/DomainChangeRecord.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/system/DomainChangeRecord.java
index 6000935..3ab7efc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/system/DomainChangeRecord.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/system/DomainChangeRecord.java
@@ -21,13 +21,12 @@ package org.apache.isis.applib.mixins.system;
 import java.sql.Timestamp;
 import java.util.UUID;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.mixins.security.HasUsername;
+import org.apache.isis.applib.services.bookmark.Bookmark;
 
 
 /**
@@ -58,8 +57,10 @@ public interface DomainChangeRecord extends HasInteractionId, HasUsername {
      * Distinguishes commands from audit entries from published events/interactions (when these are shown mixed together in a (standalone) table).
      */
     @Property
-    @PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)
-    @MemberOrder(name="Identifiers", sequence = "1")
+    @PropertyLayout(
+            hidden = Where.ALL_EXCEPT_STANDALONE_TABLES,
+            group="Identifiers", 
+            sequence = "1")
     ChangeType getType();
 
 
@@ -69,7 +70,7 @@ public interface DomainChangeRecord extends HasInteractionId, HasUsername {
      * this change occurred.
      */
     @Property
-    @MemberOrder(name="Identifiers",sequence = "50")
+    @PropertyLayout(group="Identifiers",sequence = "50")
     UUID getInteractionId();
 
 
@@ -77,7 +78,7 @@ public interface DomainChangeRecord extends HasInteractionId, HasUsername {
      * The user that caused the change.
      */
     @Property
-    @MemberOrder(name="Identifiers", sequence = "10")
+    @PropertyLayout(group="Identifiers", sequence = "10")
     String getUsername();
 
 
@@ -85,7 +86,7 @@ public interface DomainChangeRecord extends HasInteractionId, HasUsername {
      * The time that the change occurred.
      */
     @Property
-    @MemberOrder(name="Identifiers", sequence = "20")
+    @PropertyLayout(group="Identifiers", sequence = "20")
     Timestamp getTimestamp();
 
 
@@ -93,8 +94,10 @@ public interface DomainChangeRecord extends HasInteractionId, HasUsername {
      * The object type of the domain object being changed.
      */
     @Property
-    @PropertyLayout(named="Object Type")
-    @MemberOrder(name="Target", sequence = "10")
+    @PropertyLayout(
+            named="Object Type",
+            group="Target", 
+            sequence = "10")
     default String getTargetObjectType() {
         return getTarget().getObjectType();
     }
@@ -105,8 +108,10 @@ public interface DomainChangeRecord extends HasInteractionId, HasUsername {
      * The {@link Bookmark} identifying the domain object that has changed.
      */
     @Property
-    @PropertyLayout(named="Object")
-    @MemberOrder(name="Target", sequence="30")
+    @PropertyLayout(
+            named="Object",
+            group="Target", 
+            sequence="30")
     Bookmark getTarget();
 
 
@@ -118,8 +123,7 @@ public interface DomainChangeRecord extends HasInteractionId, HasUsername {
      * </p>
      */
     @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayout(named="Member", hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)
-    @MemberOrder(name="Target", sequence = "20")
+    @PropertyLayout(named="Member", hidden = Where.ALL_EXCEPT_STANDALONE_TABLES, group="Target", sequence = "20")
     String getTargetMember();
 
 
@@ -131,8 +135,7 @@ public interface DomainChangeRecord extends HasInteractionId, HasUsername {
      * </p>
      */
     @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)
-    @MemberOrder(name="Detail",sequence = "6")
+    @PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES, group="Detail",sequence = "6")
     String getPreValue();
 
 
@@ -144,8 +147,8 @@ public interface DomainChangeRecord extends HasInteractionId, HasUsername {
      * </p>
      */
     @Property(optionality = Optionality.MANDATORY)
-    @PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)
-    @MemberOrder(name="Detail",sequence = "7")
+    @PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES, group="Detail", 
+    sequence = "7")
     String getPostValue();
 
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java
index bbc7e27..30758d2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java
@@ -27,7 +27,6 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.factory.FactoryService;
 
@@ -60,9 +59,8 @@ public class ConfigurationMenu {
             semantics = SemanticsOf.SAFE
     )
     @ActionLayout(
-            cssClassFa = "fa-wrench"
-    )
-    @MemberOrder(sequence = "500.900.1")
+            cssClassFa = "fa-wrench",
+            sequence = "500.900.1")
     public ConfigurationViewmodel configuration(){
         return factoryService.viewModel(new ConfigurationViewmodel());
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java
index ab7997b..8c9d653 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java
@@ -21,7 +21,6 @@ package org.apache.isis.applib.services.grid;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.layout.grid.Grid;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
index b6b221d..eea238c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
@@ -28,7 +28,6 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -73,9 +72,8 @@ public class LayoutServiceMenu {
             )
     @ActionLayout(
             cssClassFa = "fa-download",
-            named = "Download Object Layouts (ZIP)"
-            )
-    @MemberOrder(sequence="500.400.1")
+            named = "Download Object Layouts (ZIP)",
+            sequence="500.400.1")
     // ...
     public Blob downloadLayouts(final Style style) {
 
@@ -100,9 +98,8 @@ public class LayoutServiceMenu {
             )
     @ActionLayout(
             cssClassFa = "fa-download",
-            named = "Download Menu Bars Layout (XML)"
-            )
-    @MemberOrder(sequence="500.400.2")
+            named = "Download Menu Bars Layout (XML)",
+            sequence="500.400.2")
     // ...
     public Clob downloadMenuBarsLayout(
             @ParameterLayout(named = "File name") final String fileName,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/layout/Style.java b/api/applib/src/main/java/org/apache/isis/applib/services/layout/Style.java
index 8199ab2..680597c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/layout/Style.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/layout/Style.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.applib.services.layout;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.layout.grid.Grid;
 
 /**
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java
index 271832e..c4d2252 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java
@@ -34,7 +34,6 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -85,10 +84,8 @@ public class MetaModelServiceMenu {
             )
     @ActionLayout(
             cssClassFa = "fa-download",
-            named = "Download Meta Model (CSV)"
-            )
-    @MemberOrder(sequence="500.500.2")
-    // ...
+            named = "Download Meta Model (CSV)",
+            sequence="500.500.2")
     public Clob downloadMetaModelCsv(
             @ParameterLayout(named = ".csv file name")
             final String csvFileName) {
@@ -117,10 +114,8 @@ public class MetaModelServiceMenu {
             )
     @ActionLayout(
             cssClassFa = "fa-download",
-            named = "Download Meta Model (XML)"
-            )
-    @MemberOrder(sequence="500.500.2")
-    // ...
+            named = "Download Meta Model (XML)",
+            sequence="500.500.2")
     public Clob downloadMetaModelXml(
             @ParameterLayout(named = ".xml file name")
             final String fileName,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java
index 929080c..2c98f97 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java
@@ -21,7 +21,7 @@ package org.apache.isis.applib.services.user;
 import java.io.Serializable;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
 import lombok.Getter;
 import lombok.Value;
@@ -62,11 +62,11 @@ public class RoleMemento implements Serializable {
         return name;
     }
 
-    @MemberOrder(sequence = "1.1")
+    @PropertyLayout(sequence = "1.1")
     @Getter
     String name;
 
-    @MemberOrder(sequence = "1.2")
+    @PropertyLayout(sequence = "1.2")
     @Getter
     String description;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
index 059a500..410ec7f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
@@ -26,8 +26,9 @@ import java.util.stream.Stream;
 
 import javax.annotation.Nullable;
 
+import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 
@@ -111,14 +112,14 @@ public final class UserMemento implements Serializable {
     /**
      * The user's login name.
      */
-    @MemberOrder(sequence = "1.1")
+    @PropertyLayout(sequence = "1.1")
     @Getter
     private final String name;
 
     /**
      * The roles associated with this user.
      */
-    @MemberOrder(sequence = "1.1")
+    @CollectionLayout(sequence = "1.2")
     private final List<RoleMemento> roles;
     public List<RoleMemento> getRoles() {
         return roles;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/Object_inspectMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/Object_inspectMetamodel.java
index 2efd0dc..e80e479 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/Object_inspectMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/Object_inspectMetamodel.java
@@ -24,7 +24,6 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.graph.tree.TreeNode;
@@ -42,10 +41,13 @@ import lombok.val;
 @Action(
         domainEvent = Object_inspectMetamodel.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
-        restrictTo = RestrictTo.PROTOTYPING)
+        restrictTo = RestrictTo.PROTOTYPING,
+        associateWith = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME
+        )
 @ActionLayout(
         cssClassFa = "fa-sitemap",
-        position = ActionLayout.Position.PANEL_DROPDOWN)
+        position = ActionLayout.Position.PANEL_DROPDOWN, 
+        sequence = "700.2.1")
 @RequiredArgsConstructor
 public class Object_inspectMetamodel {
 
@@ -57,7 +59,6 @@ public class Object_inspectMetamodel {
     public static class ActionDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.ActionDomainEvent<Object_inspectMetamodel> {}
 
-    @MemberOrder(name = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.2.1")
     public Object act() {
 
         val pkg = holder.getClass().getPackage().getName();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
index b394b68..133dae3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
@@ -308,7 +308,6 @@ implements GridSystemService<G> {
                                 
                 final IdentifiedHolder identifiedHolder = (IdentifiedHolder) oneToOneAssociation;
                 val translationContext = TranslationContext.forMemberOrderNameIdentifier(identifiedHolder.getIdentifier());
-                // TranslationContext translationContext = TranslationContext.ofIdentifierForMemberOrderName(oneToOneAssociation.getIdentifier());
                 final String sequence = "" + (propertySequence.incrementAndGet());
                 addOrReplaceFacet(
                         new MemberOrderFacetXml(translationContext, groupName, sequence, translationService, oneToOneAssociation));
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
index cae4b90..243a525 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ordering/memberorder/MemberOrderAnnotationFacetFactoryTest.java
@@ -28,7 +28,9 @@ import org.jmock.api.Action;
 import org.jmock.api.Invocation;
 import org.junit.Rule;
 
-import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.CollectionLayout;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.services.i18n.TranslationContext;
 import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -78,7 +80,7 @@ public class MemberOrderAnnotationFacetFactoryTest extends AbstractFacetFactoryT
 
     public void testMemberOrderAnnotationPickedUpOnProperty() {
         class Customer {
-            @MemberOrder(sequence = "1")
+            @PropertyLayout(sequence = "1")
             public String getFirstName() {
                 return null;
             }
@@ -100,7 +102,7 @@ public class MemberOrderAnnotationFacetFactoryTest extends AbstractFacetFactoryT
         class Order {
         }
         class Customer {
-            @MemberOrder(sequence = "2")
+            @CollectionLayout(sequence = "2")
             public Collection<Order> getOrders() {
                 return null;
             }
@@ -124,7 +126,7 @@ public class MemberOrderAnnotationFacetFactoryTest extends AbstractFacetFactoryT
 
     public void testMemberOrderAnnotationPickedUpOnAction() {
         class Customer {
-            @MemberOrder(sequence = "3")
+            @ActionLayout(sequence = "3")
             public void someAction() {
             }
         }
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/i18n/po/TranslationServicePoMenu.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/i18n/po/TranslationServicePoMenu.java
index 9ad519a..4ceb314 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/i18n/po/TranslationServicePoMenu.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/i18n/po/TranslationServicePoMenu.java
@@ -26,7 +26,6 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -54,9 +53,8 @@ public class TranslationServicePoMenu {
             restrictTo = RestrictTo.PROTOTYPING
             )
     @ActionLayout(
-            cssClassFa = "fa-download"
-            )
-    @MemberOrder(sequence="500.700.1")
+            cssClassFa = "fa-download",
+            sequence="500.700.1")
     public Clob downloadTranslations(
             @ParameterLayout(named = ".pot file name")
             final String potFileName) {
@@ -85,9 +83,8 @@ public class TranslationServicePoMenu {
             )
     @ActionLayout(
             named="Clear translation cache",
-            cssClassFa = "fa-trash"
-            )
-    @MemberOrder(sequence="500.700.2")
+            cssClassFa = "fa-trash",
+            sequence="500.700.2")
     public void resetTranslationCache() {
         translationService.clearCache();
     }
@@ -108,9 +105,8 @@ public class TranslationServicePoMenu {
             restrictTo = RestrictTo.PROTOTYPING
             )
     @ActionLayout(
-            cssClassFa = "fa-book"
-            )
-    @MemberOrder(sequence="500.700.2")
+            cssClassFa = "fa-book",
+            sequence="500.700.2")
     public void switchToReadingTranslations() {
         translationService.toggleMode();
     }
@@ -130,9 +126,8 @@ public class TranslationServicePoMenu {
             restrictTo = RestrictTo.PROTOTYPING
             )
     @ActionLayout(
-            cssClassFa = "fa-pencil-alt"
-            )
-    @MemberOrder(sequence="500.700.3")
+            cssClassFa = "fa-pencil-alt",
+            sequence="500.700.3")
     public void switchToWritingTranslations() {
         translationService.toggleMode();
     }
diff --git a/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/wrapper/dom/employees/Employee.java b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/wrapper/dom/employees/Employee.java
index 98d2869..224f1cb 100644
--- a/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/wrapper/dom/employees/Employee.java
+++ b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/wrapper/dom/employees/Employee.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.runtimeservices.wrapper.dom.employees;
 
-import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.core.runtimeservices.wrapper.dom.claims.Approver;
 import org.apache.isis.core.runtimeservices.wrapper.dom.claims.Claimant;
 
@@ -33,7 +33,7 @@ public class Employee implements Claimant, Approver {
     // {{ Name
     private String name;
 
-    @MemberOrder(sequence = "1")
+    @PropertyLayout(sequence = "1")
     public String getName() {
         return name;
     }
@@ -73,7 +73,7 @@ public class Employee implements Claimant, Approver {
     // {{ Password
     private String password;
 
-    @MemberOrder(sequence = "2")
+    @PropertyLayout(sequence = "2")
     public String getPassword() {
         return password;
     }
@@ -88,7 +88,7 @@ public class Employee implements Claimant, Approver {
     private Approver approver;
 
     @Override
-    @MemberOrder(sequence = "2")
+    @PropertyLayout(sequence = "2")
     public Approver getApprover() {
         return approver;
     }
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/logout/LogoutMenu.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/logout/LogoutMenu.java
index 03db925..4332052 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/logout/LogoutMenu.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/logout/LogoutMenu.java
@@ -30,7 +30,6 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.LocalResourcePath;
@@ -63,9 +62,8 @@ public class LogoutMenu {
             semantics = SemanticsOf.SAFE
             )
     @ActionLayout(
-            cssClassFa = "fa-sign-out-alt"
-            )
-    @MemberOrder(sequence = "999")
+            cssClassFa = "fa-sign-out-alt",
+            sequence = "999")
     public Object logout(){
         _NullSafe.stream(logoutHandler)
             .filter(LogoutHandler::isHandlingCurrentThread)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_description.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_description.java
index 1ba84b8..81a6d12 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_description.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_description.java
@@ -21,26 +21,23 @@ package demoapp.dom._infra.asciidocdesc;
 import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Snapshot;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Snapshot;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
-import lombok.RequiredArgsConstructor;
-
 import demoapp.dom._infra.resources.AsciiDocReaderService;
+import lombok.RequiredArgsConstructor;
 
-@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 @Property(snapshot = Snapshot.EXCLUDED)
 @RequiredArgsConstructor
 public class HasAsciiDocDescription_description {
 
     private final HasAsciiDocDescription hasAsciiDocDescription;
 
-    @PropertyLayout(labelPosition = LabelPosition.NONE, hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "description", sequence = "1")
+    @PropertyLayout(labelPosition = LabelPosition.NONE, hidden = Where.ALL_TABLES, 
+            group = "description", sequence = "1")
     public AsciiDoc prop() {
         return asciiDocReaderService.readFor(hasAsciiDocDescription, "description");
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_sources.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_sources.java
index 1f0a24b..ab363d6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_sources.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_sources.java
@@ -21,26 +21,24 @@ package demoapp.dom._infra.asciidocdesc;
 import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Snapshot;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Snapshot;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
+import demoapp.dom._infra.resources.MarkupVariableResolverService;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
-import demoapp.dom._infra.resources.MarkupVariableResolverService;
-
 @Property(snapshot = Snapshot.EXCLUDED)
-@RequiredArgsConstructor @SuppressWarnings("CdiManagedBeanInconsistencyInspection")
+@RequiredArgsConstructor 
 public class HasAsciiDocDescription_sources {
 
     private final HasAsciiDocDescription hasAsciiDocDescription;
 
-    @PropertyLayout(labelPosition = LabelPosition.NONE, hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "sources", sequence = "1")
+    @PropertyLayout(labelPosition = LabelPosition.NONE, hidden = Where.ALL_TABLES,
+            group = "sources", sequence = "1")
     public AsciiDoc prop() {
         val packageName = hasAsciiDocDescription.getClass().getPackage().getName();
         val sourceLocation = packageName.replace('.', '/');
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java
index ea8d7b3..5262628 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java
@@ -33,19 +33,18 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.val;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
-
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -72,13 +71,13 @@ public class ActionAssociateWithVm implements HasAsciiDocDescription {
 
 //tag::class-properties[]
     @Property()
-    @MemberOrder(name = "annotation", sequence = "1")
+    @PropertyLayout(group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String text;
 
     @Property()
-    @MemberOrder(name = "annotation", sequence = "2")
+    @PropertyLayout(group = "annotation", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private String otherProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.java
index 4769480..38f6647 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.java
@@ -25,7 +25,6 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
@@ -56,8 +55,7 @@ public class ActionAssociateWithChildVm implements HasAsciiDocDescription {
     }
 
     @Property()
-    @PropertyLayout()
-    @MemberOrder(name = "annotation", sequence = "1")
+    @PropertyLayout(group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String value;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingJdo.java
index 328ad2a..a9150d9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingJdo.java
@@ -25,19 +25,18 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.domain._commands.ExposePersistedCommands;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -65,22 +64,22 @@ public class ActionCommandPublishingJdo
 
 //tag::property[]
     @Property()
-    @MemberOrder(name = "annotation", sequence = "1")
+    @PropertyLayout(group = "annotation", sequence = "1")
     @Getter @Setter
     private String property;
 
     @Property()
-    @MemberOrder(name = "annotation", sequence = "2")
+    @PropertyLayout(group = "annotation", sequence = "2")
     @Getter @Setter
     private String propertyCommandDisabled;
 
     @Property()
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+    @PropertyLayout(group = "meta-annotated", sequence = "1")
     @Getter @Setter
     private String propertyMetaAnnotated;
 
     @Property()
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+    @PropertyLayout(group = "meta-annotated-overridden", sequence = "1")
     @Getter @Setter
     private String propertyMetaAnnotatedOverridden;
 //end::property[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm.java
index 132e0e9..4b4a4e2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm.java
@@ -27,18 +27,17 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -61,7 +60,7 @@ public class ActionDomainEventVm implements HasAsciiDocDescription {
     }
 
     @Property()
-    @MemberOrder(name = "annotation", sequence = "1")
+    @PropertyLayout(group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String text;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/subscribers/ActionDomainEventVm_controlUpdateText.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/subscribers/ActionDomainEventVm_controlUpdateText.java
index a488c2b..3671544 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/subscribers/ActionDomainEventVm_controlUpdateText.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/subscribers/ActionDomainEventVm_controlUpdateText.java
@@ -20,22 +20,21 @@ package demoapp.dom.domain.actions.Action.domainEvent.subscribers;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
-
-import lombok.RequiredArgsConstructor;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
 import demoapp.dom.domain.actions.Action.domainEvent.ActionDomainEventVm;
+import lombok.RequiredArgsConstructor;
 
 
 //tag::class[]
 @Property()
+@PropertyLayout(group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class ActionDomainEventVm_controlUpdateText {
 
     private final ActionDomainEventVm actionDomainEventVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public ActionDomainEventControlStrategy prop() {
         return eventActionDomainEventControlService.controlStrategy;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingJdo.java
index bc4df6b..2c178f3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingJdo.java
@@ -27,17 +27,16 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.domain._interactions.ExposeCapturedInteractions;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -64,17 +63,17 @@ public class ActionExecutionPublishingJdo
 
 //tag::property[]
     @Property()
-    @MemberOrder(name = "annotation", sequence = "1")
+    @PropertyLayout(group = "annotation", sequence = "1")
     @Getter @Setter
     private String property;
 
     @Property()
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+    @PropertyLayout(group = "meta-annotated", sequence = "1")
     @Getter @Setter
     private String propertyMetaAnnotated;
 
     @Property()
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+    @PropertyLayout(group = "meta-annotated-overridden", sequence = "1")
     @Getter @Setter
     private String propertyMetaAnnotatedOverridden;
 //end::property[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm.java
index 8f191d4..48973a1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm.java
@@ -27,18 +27,17 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -62,13 +61,13 @@ public class ActionHiddenVm implements HasAsciiDocDescription {
     }
 
     @Property()
-    @MemberOrder(name = "properties", sequence = "1")
+    @PropertyLayout(group = "properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String text;
 
     @Property()
-    @MemberOrder(name = "properties", sequence = "2")
+    @PropertyLayout(group = "properties", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private String otherText;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm.java
index 6641e60..2a42fe0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm.java
@@ -27,18 +27,17 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -65,31 +64,31 @@ public class ActionRestrictToVm implements HasAsciiDocDescription {
     }
 
     @Property()
-    @MemberOrder(name = "not-annotated", sequence = "1")
+    @PropertyLayout(group = "not-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyNoAnnotation;
 
     @Property()
-    @MemberOrder(name = "annotated", sequence = "1")
+    @PropertyLayout(group = "annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyForPrototyping;
 
     @Property()
-    @MemberOrder(name = "annotated", sequence = "2")
+    @PropertyLayout(group = "annotated", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyForNoRestrictions;
 
     @Property()
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+    @PropertyLayout(group = "meta-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyForMetaAnnotations;
 
     @Property()
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+    @PropertyLayout(group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyForMetaAnnotationsOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm.java
index e7a6e41..85379fb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm.java
@@ -18,6 +18,8 @@
  */
 package demoapp.dom.domain.actions.Action.semantics;
 
+import static org.apache.isis.applib.services.wrapper.control.SyncControl.control;
+
 import javax.inject.Inject;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -29,22 +31,19 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 
-import static org.apache.isis.applib.services.wrapper.control.SyncControl.control;
-
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -81,56 +80,56 @@ public class ActionSemanticsVm implements HasAsciiDocDescription {
     }
 
     @Property()
-    @MemberOrder(name = "not-annotated", sequence = "1")
+    @PropertyLayout(group = "not-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private int propertyNoAnnotation;
 
     @Property()
-    @MemberOrder(name = "annotated-safe", sequence = "1")
+    @PropertyLayout(group = "annotated-safe", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private int propertyForSafe;
 
     @Property()
-    @MemberOrder(name = "annotated-safe", sequence = "2")
+    @PropertyLayout(group = "annotated-safe", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private int propertyForSafeAndRequestCacheable;
 
 
     @Property()
-    @MemberOrder(name = "annotated-idempotent", sequence = "1")
+    @PropertyLayout(group = "annotated-idempotent", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private int propertyForIdempotent;
 
     @Property()
-    @MemberOrder(name = "annotated-idempotent", sequence = "2")
+    @PropertyLayout(group = "annotated-idempotent", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private int propertyForIdempotentAreYouSure;
 
     @Property()
-    @MemberOrder(name = "annotated-non-idempotent", sequence = "5")
+    @PropertyLayout(group = "annotated-non-idempotent", sequence = "5")
     @XmlElement(required = true)
     @Getter @Setter
     private int propertyForNonIdempotent;
 
     @Property()
-    @MemberOrder(name = "annotated-non-idempotent", sequence = "6")
+    @PropertyLayout(group = "annotated-non-idempotent", sequence = "6")
     @XmlElement(required = true)
     @Getter @Setter
     private int propertyForNonIdempotentAreYouSure;
 
     @Property()
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+    @PropertyLayout(group = "meta-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private int propertyForMetaAnnotations;
 
     @Property()
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+    @PropertyLayout(group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private int propertyForMetaAnnotationsOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/child/ActionTypeOfChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/child/ActionTypeOfChildVm.java
index 89b9413..cf4c9d4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/child/ActionTypeOfChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/child/ActionTypeOfChildVm.java
@@ -25,17 +25,15 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -59,29 +57,25 @@ public class ActionTypeOfChildVm implements HasAsciiDocDescription {
     }
 
     @Property()
-    @PropertyLayout()
-    @MemberOrder(name = "annotation", sequence = "1")
+    @PropertyLayout(group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String value;
 
     @Property()
-    @PropertyLayout()
-    @MemberOrder(name = "annotation", sequence = "2")
+    @PropertyLayout(group = "annotation", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String valueUpper;
 
     @Property()
-    @PropertyLayout()
-    @MemberOrder(name = "annotation", sequence = "3")
+    @PropertyLayout(group = "annotation", sequence = "3")
     @XmlElement(required = false)
     @Getter @Setter
     private String valueLower;
 
     @Property()
-    @PropertyLayout()
-    @MemberOrder(name = "annotation", sequence = "4")
+    @PropertyLayout(group = "annotation", sequence = "4")
     @XmlElement(required = false)
     @Getter @Setter
     private String valueReversed;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm.java
index 6e4f8d8..038c463 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm.java
@@ -25,16 +25,15 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -50,13 +49,13 @@ public class ActionLayoutPositionVm implements HasAsciiDocDescription {
     }
 
     @Property(optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "annotated", sequence = "1")
+    @PropertyLayout(group = "annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String readOnlyProperty1;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "layout", sequence = "1")
+    @PropertyLayout(group = "layout", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String readOnlyProperty2;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java
index b2cd7b1..dd7f994 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java
@@ -26,18 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -54,33 +52,37 @@ public class ActionLayoutPromptStyleVm implements HasAsciiDocDescription {
 
     @Title
     @Property(editing = Editing.DISABLED)
-    @MemberOrder(name = "general", sequence = "1")
+    @PropertyLayout(group = "general", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String title;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "annotated", sequence = "1")
+    @PropertyLayout(group = "annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String readOnlyProperty1;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayout(describedAs = "has associated action with promptStyle=INLINE_AS_IF_EDIT")
-    @MemberOrder(name = "annotated", sequence = "2")
+    @PropertyLayout(
+            describedAs = "has associated action with promptStyle=INLINE_AS_IF_EDIT",
+            group = "annotated",
+            sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String readOnlyProperty2;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "layout", sequence = "1")
+    @PropertyLayout(group = "layout", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String readOnlyProperty3;
 
     @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayout(describedAs = "has associated action with promptStyle=INLINE_AS_IF_EDIT")
-    @MemberOrder(name = "layout", sequence = "2")
+    @PropertyLayout(
+            describedAs = "has associated action with promptStyle=INLINE_AS_IF_EDIT",
+            group = "layout",
+            sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String readOnlyProperty4;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/child/CollectionDomainEventChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/child/CollectionDomainEventChildVm.java
index ac405c5..b9eca12 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/child/CollectionDomainEventChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/child/CollectionDomainEventChildVm.java
@@ -25,17 +25,16 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -55,7 +54,7 @@ public class CollectionDomainEventChildVm implements HasAsciiDocDescription {
 //tag::class[]
     @Title
     @Property()
-    @MemberOrder(name = "properties", sequence = "1")
+    @PropertyLayout(group = "properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String value;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/subscribers/CollectionDomainEventVm_controlChildren.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/subscribers/CollectionDomainEventVm_controlChildren.java
index 881c70b..c5a7977 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/subscribers/CollectionDomainEventVm_controlChildren.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/subscribers/CollectionDomainEventVm_controlChildren.java
@@ -20,12 +20,11 @@ package demoapp.dom.domain.collections.Collection.domainEvent.subscribers;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
-
-import lombok.RequiredArgsConstructor;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
 import demoapp.dom.domain.collections.Collection.domainEvent.CollectionDomainEventVm;
+import lombok.RequiredArgsConstructor;
 
 
 //tag::class[]
@@ -35,7 +34,7 @@ public class CollectionDomainEventVm_controlChildren {
 
     private final CollectionDomainEventVm collectionDomainEventVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
+    @PropertyLayout(group = "contributed", sequence = "1")
     public CollectionDomainEventControlStrategy prop() {
         return eventControlService.controlStrategy;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingJdo.java
index cc689fb..629006a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingJdo.java
@@ -19,8 +19,8 @@
 package demoapp.dom.domain.objects.DomainObject.entityChangePublishing;
 
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.domain._changes.ExposeCapturedChanges;
@@ -30,12 +30,12 @@ public interface DomainObjectEntityChangePublishingJdo
         extends HasAsciiDocDescription, ExposeCapturedChanges {
 
     @Property(editing = Editing.ENABLED)
-    @MemberOrder(name = "property", sequence = "1")
+    @PropertyLayout(group = "property", sequence = "1")
     String getProperty();
     void setProperty(String value);
 
     @Property(editing = Editing.DISABLED)
-    @MemberOrder(name = "action", sequence = "1")
+    @PropertyLayout(group = "action", sequence = "1")
     String getPropertyUpdatedByAction();
     void setPropertyUpdatedByAction(String value);
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java
index bceac4c..0d2b0c8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java
@@ -22,7 +22,6 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import demoapp.dom._infra.samples.NameSamples;
@@ -34,8 +33,8 @@ import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotO
 //tag::class[]
 @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
 @ActionLayout(
-        describedAs = "Creates one publishing enabled entity and one publishing disabled entity"
-)
+        describedAs = "Creates one publishing enabled entity and one publishing disabled entity",
+        sequence = "1.0")
 public class DomainObjectEntityChangePublishingVm_create {
 
     private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
@@ -43,7 +42,7 @@ public class DomainObjectEntityChangePublishingVm_create {
         this.domainObjectAuditingVm = domainObjectAuditingVm;
     }
 
-    @MemberOrder(sequence = "1.0")
+    
     public DomainObjectEntityChangePublishingVm act(
             String newValue
             , boolean publishingEnabled
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
index 29b73e5..6f8b11a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
@@ -23,13 +23,12 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledJdo;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledJdoEntities;
-import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledJdo;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectAuditingEnabledJdoEntities;
+import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledJdo;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo;
@@ -38,16 +37,15 @@ import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotO
 //tag::class[]
 @Action(semantics = SemanticsOf.IDEMPOTENT)
 @ActionLayout(
-    describedAs = "Deletes one publishing enabled entity and one publishing disabled entity"
-)
+    describedAs = "Deletes one publishing enabled entity and one publishing disabled entity",
+    sequence = "3.0")
 public class DomainObjectEntityChangePublishingVm_delete {
 
     private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
     public DomainObjectEntityChangePublishingVm_delete(DomainObjectEntityChangePublishingVm domainObjectAuditingVm) {
         this.domainObjectAuditingVm = domainObjectAuditingVm;
     }
-
-    @MemberOrder(sequence = "3.0")
+    
     public DomainObjectEntityChangePublishingVm act(
             @Nullable DomainObjectEntityChangePublishingEnabledJdo enabledJdo
             , @Nullable DomainObjectEntityChangePublishingDisabledJdo disabledJdo
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java
index bb034c0..fdabe36 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java
@@ -25,27 +25,24 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import lombok.RequiredArgsConstructor;
-
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledJdoEntities;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectAuditingEnabledJdoEntities;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities;
+import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Action(semantics = SemanticsOf.IDEMPOTENT)
 @ActionLayout(
-    describedAs = "Updates all publishing enabled entities and all publishing disabled entities"
-)
+    describedAs = "Updates all publishing enabled entities and all publishing disabled entities",
+    sequence = "2.0")
 @RequiredArgsConstructor
 public class DomainObjectEntityChangePublishingVm_updateAll {
 
     private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-
-    @MemberOrder(sequence = "2.0")
+    
     public DomainObjectEntityChangePublishingVm act(
             boolean publishingEnabled
             , boolean publishingDisabled
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder_explanation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder_explanation.java
index d0dc3ce..9f19082 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder_explanation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder_explanation.java
@@ -18,19 +18,19 @@
  */
 package demoapp.dom.domain.objects.other.mixins;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
 import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property                                   // <.>
+@PropertyLayout(group = "properties", sequence = "1")
 @RequiredArgsConstructor                    // <.>
 public class CountHolder_explanation {
 
     private final CountHolder holder;       // <.>
-
-    @MemberOrder(name = "properties", sequence = "1")
+    
     public String prop() {
         return String.format(
                 "The collection shows the first %d fibonacci numbers",
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/PropertyCommandPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/PropertyCommandPublishingJdo.java
index 11a52d3..79c7481 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/PropertyCommandPublishingJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/PropertyCommandPublishingJdo.java
@@ -25,17 +25,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.domain._commands.ExposePersistedCommands;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -66,9 +64,8 @@ public class PropertyCommandPublishingJdo
         commandPublishing = Publishing.ENABLED                  // <.>
     )
     @PropertyLayout(
-        describedAs = "@Property(command = ENABLED)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+        describedAs = "@Property(command = ENABLED)",
+        group = "annotation", sequence = "1")
     @Getter @Setter
     private String property;
 //end::annotation[]
@@ -78,9 +75,8 @@ public class PropertyCommandPublishingJdo
         commandPublishing = Publishing.DISABLED                 // <.>
     )
     @PropertyLayout(
-        describedAs = "@Property(command = DISABLED)"
-    )
-    @MemberOrder(name = "annotation", sequence = "2")
+        describedAs = "@Property(command = DISABLED)",
+        group = "annotation", sequence = "2")
     @Getter @Setter
     private String propertyCommandDispatchDisabled;
 //end::annotation-2[]
@@ -88,9 +84,8 @@ public class PropertyCommandPublishingJdo
 //tag::meta-annotation[]
     @PropertyCommandPublishingEnabledMetaAnnotation               // <.>
     @PropertyLayout(
-            describedAs = "@PropertyCommandEnabledMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+            describedAs = "@PropertyCommandEnabledMetaAnnotation",
+            group = "meta-annotated", sequence = "1")
     @Getter @Setter
     private String propertyMetaAnnotated;
 //end::meta-annotation[]
@@ -101,9 +96,8 @@ public class PropertyCommandPublishingJdo
     @PropertyLayout(
         describedAs =
             "@PropertyCommandDisabledMetaAnnotation " +
-            "@Property(command = ENABLED)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@Property(command = ENABLED)",
+            group = "meta-annotated-overridden", sequence = "1")
     @Getter @Setter
     private String propertyMetaAnnotatedOverridden;
 //end::meta-annotation-overridden[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/PropertyDomainEventVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/PropertyDomainEventVm.java
index 19a487f..0b449ca 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/PropertyDomainEventVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/PropertyDomainEventVm.java
@@ -26,18 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.events.domain.PropertyDomainEvent;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -68,9 +66,8 @@ public class PropertyDomainEventVm implements HasAsciiDocDescription {
         domainEvent = TextDomainEvent.class                         // <.>
     )
     @PropertyLayout(
-        describedAs = "@Property(domainEvent = TextDomainEvent.class)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+        describedAs = "@Property(domainEvent = TextDomainEvent.class)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String text;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/subscribers/PropertyDomainEventVm_controlText.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/subscribers/PropertyDomainEventVm_controlText.java
index 93b92e1..5d7c2eb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/subscribers/PropertyDomainEventVm_controlText.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/subscribers/PropertyDomainEventVm_controlText.java
@@ -20,22 +20,21 @@ package demoapp.dom.domain.properties.Property.domainEvent.subscribers;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
-
-import lombok.RequiredArgsConstructor;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
 import demoapp.dom.domain.properties.Property.domainEvent.PropertyDomainEventVm;
+import lombok.RequiredArgsConstructor;
 
 
 //tag::class[]
 @Property()
+@PropertyLayout(group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class PropertyDomainEventVm_controlText {
 
     private final PropertyDomainEventVm propertyDomainEventVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public PropertyDomainEventControlStrategy prop() {
         return eventControlService.controlStrategy;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/editing/PropertyEditingVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/editing/PropertyEditingVm.java
index a41b1f0..bcea1a3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/editing/PropertyEditingVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/editing/PropertyEditingVm.java
@@ -26,16 +26,14 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -58,10 +56,8 @@ public class PropertyEditingVm implements HasAsciiDocDescription {
         editing = Editing.ENABLED               // <.>
     )
     @PropertyLayout(
-        describedAs =
-            "@Property(editing = ENABLED)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+        describedAs = "@Property(editing = ENABLED)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyUsingAnnotation;
@@ -71,9 +67,8 @@ public class PropertyEditingVm implements HasAsciiDocDescription {
     @Property()
     @EditingEnabledMetaAnnotation               // <.>
     @PropertyLayout(
-        describedAs = "@EditingEnabledMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@EditingEnabledMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -87,9 +82,8 @@ public class PropertyEditingVm implements HasAsciiDocDescription {
     @PropertyLayout(
         describedAs =
             "@EditingEnabledMetaAnnotation " +
-            "@PropertyLayout(editing = DISABLED)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@PropertyLayout(editing = DISABLED)",
+            group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingJdo.java
index c755edb..2a96a1f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingJdo.java
@@ -26,17 +26,15 @@ import javax.xml.bind.annotation.XmlElement;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.domain._interactions.ExposeCapturedInteractions;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -67,9 +65,8 @@ public class PropertyExecutionPublishingJdo
     )
     @PropertyLayout(
         describedAs =
-            "@Property(publishing = ENABLED)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@Property(publishing = ENABLED)",
+        group = "annotation", sequence = "1")
     @Getter @Setter
     private String propertyUsingAnnotation;
 //end::annotation[]
@@ -78,9 +75,8 @@ public class PropertyExecutionPublishingJdo
     @PropertyExecutionPublishingEnabledMetaAnnotation                // <.>
     @Property()
     @PropertyLayout(
-        describedAs = "@PropertyPublishingEnabledMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@PropertyPublishingEnabledMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -94,9 +90,8 @@ public class PropertyExecutionPublishingJdo
     @PropertyLayout(
         describedAs =
             "@PropertyPublishingDisabledMetaAnnotation " +
-            "@Property(publishing = ENABLED)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@Property(publishing = ENABLED)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm.java
index 12ffbc7..32d409c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm.java
@@ -26,18 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -59,9 +57,8 @@ public class PropertyFileAcceptVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(fileAccept = \".pdf\")"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@Property(fileAccept = \".pdf\")",
+        group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Blob pdfPropertyUsingAnnotation;
@@ -73,9 +70,8 @@ public class PropertyFileAcceptVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(fileAccept = \".txt\")"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@Property(fileAccept = \".txt\")",
+        group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Clob txtPropertyUsingAnnotation;
@@ -85,9 +81,8 @@ public class PropertyFileAcceptVm implements HasAsciiDocDescription {
     @Property()
     @FileAcceptPdfMetaAnnotation                            // <.>
     @PropertyLayout(
-        describedAs = "@FileAcceptPdfMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@FileAcceptPdfMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Blob pdfPropertyUsingMetaAnnotation;
@@ -100,9 +95,8 @@ public class PropertyFileAcceptVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@FileAcceptPdfMetaAnnotation @PropertyLayout(...)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@FileAcceptPdfMetaAnnotation @PropertyLayout(...)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Blob docxPropertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm.java
index 4a371bd..797598f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm.java
@@ -31,19 +31,17 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.Property.hidden.child.PropertyHiddenChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.Property.hidden.child.PropertyHiddenChildVm;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -66,9 +64,8 @@ public class PropertyHiddenVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.NOWHERE)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@Property(hidden = Where.NOWHERE)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenNowhereUsingAnnotation;
@@ -80,9 +77,8 @@ public class PropertyHiddenVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.EVERYWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "1")
+            "@Property(hidden = Where.EVERYWHERE)",
+        group = "variants", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyHiddenEverywhere;
@@ -94,9 +90,8 @@ public class PropertyHiddenVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.ANYWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "2")
+            "@Property(hidden = Where.ANYWHERE)",
+        group = "variants", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyHiddenAnywhere;
@@ -114,9 +109,8 @@ public class PropertyHiddenVm implements HasAsciiDocDescription {
     @HiddenEverywhereMetaAnnotation                        // <.>
     @Property()
     @PropertyLayout(
-        describedAs = "@HiddenEverywhereMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@HiddenEverywhereMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -130,9 +124,8 @@ public class PropertyHiddenVm implements HasAsciiDocDescription {
     @PropertyLayout(
         describedAs =
             "@HiddenEverywhereMetaAnnotation " +
-            "@Property(hidden = Where.NOWHERE)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
+            "@Property(hidden = Where.NOWHERE)",
+        group = "meta-annotated-overridden", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_mixinPropertyWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_mixinPropertyWithMetaAnnotation.java
index f31222d..c5614f8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_mixinPropertyWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_mixinPropertyWithMetaAnnotation.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.Property.hidden;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @HiddenEverywhereMetaAnnotation             // <.>
 @PropertyLayout(
     describedAs =
-        "@HiddenEverywhereMetaAnnotation"
+        "@HiddenEverywhereMetaAnnotation",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyHiddenVm_mixinPropertyWithMetaAnnotation {
@@ -38,7 +38,6 @@ public class PropertyHiddenVm_mixinPropertyWithMetaAnnotation {
 
     private final PropertyHiddenVm propertyHiddenVm;
 
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public String prop() {
         return propertyHiddenVm.getPropertyHiddenNowhereUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_mixinPropertyWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_mixinPropertyWithMetaAnnotationOverridden.java
index 1ad9613..7b0e79f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_mixinPropertyWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_mixinPropertyWithMetaAnnotationOverridden.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.Property.hidden;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -33,7 +32,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     describedAs =
         "@HiddenEverywhereMetaAnnotation " +
-        "@Property(hidden = NOWHERE)"
+        "@Property(hidden = NOWHERE)",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyHiddenVm_mixinPropertyWithMetaAnnotationOverridden {
@@ -42,7 +42,6 @@ public class PropertyHiddenVm_mixinPropertyWithMetaAnnotationOverridden {
 
     private final PropertyHiddenVm propertyHiddenVm;
 
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public String prop() {
         return propertyHiddenVm.getPropertyHiddenNowhereUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm.java
index d87362e..6c4a492 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm.java
@@ -26,19 +26,17 @@ import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.Property.hidden.PropertyHiddenVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.Property.hidden.PropertyHiddenVm;
-
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -75,9 +73,8 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.NOWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "1")
+            "@Property(hidden = Where.NOWHERE)",
+        group = "variants", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenNowhere;
@@ -89,9 +86,8 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.EVERYWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "2")
+            "@Property(hidden = Where.EVERYWHERE)",
+        group = "variants", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenEverywhere;
@@ -103,9 +99,8 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.ANYWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "2.1")
+            "@Property(hidden = Where.ANYWHERE)",
+        group = "variants", sequence = "2.1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenAnywhere;
@@ -117,9 +112,8 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.ALL_TABLES)"
-    )
-    @MemberOrder(name = "variants", sequence = "3")
+            "@Property(hidden = Where.ALL_TABLES)",
+        group = "variants", sequence = "3")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenAllTables;
@@ -131,9 +125,8 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.OBJECT_FORMS)"
-    )
-    @MemberOrder(name = "variants", sequence = "4")
+            "@Property(hidden = Where.OBJECT_FORMS)",
+        group = "variants", sequence = "4")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenObjectForms;
@@ -145,9 +138,8 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.STANDALONE_TABLES)"
-    )
-    @MemberOrder(name = "variants", sequence = "5")
+            "@Property(hidden = Where.STANDALONE_TABLES)",
+        group = "variants", sequence = "5")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenStandaloneTables;
@@ -159,9 +151,8 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)"
-    )
-    @MemberOrder(name = "variants", sequence = "6")
+            "@Property(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)",
+        group = "variants", sequence = "6")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenAllExceptStandaloneTables;
@@ -174,9 +165,8 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.PARENTED_TABLES)"
-    )
-    @MemberOrder(name = "variants", sequence = "7")
+            "@Property(hidden = Where.PARENTED_TABLES)",
+        group = "variants", sequence = "7")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenParentedTables;
@@ -188,9 +178,8 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(hidden = Where.REFERENCES_PARENT)"
-    )
-    @MemberOrder(name = "variants", sequence = "8")
+            "@Property(hidden = Where.REFERENCES_PARENT)",
+        group = "variants", sequence = "8")
     @XmlTransient   // to avoid cycles
     @Getter @Setter
     private PropertyHiddenVm propertyHiddenReferencesParent;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm_mixinProperty.java
index c90080f..20d4af4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.Property.hidden.child;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -30,7 +29,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     hidden = Where.ALL_TABLES                   // <.>
     , describedAs =
-        "@Property(hidden = ALL_TABLES)"
+        "@Property(hidden = ALL_TABLES)",
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyHiddenChildVm_mixinProperty {
@@ -39,7 +39,6 @@ public class PropertyHiddenChildVm_mixinProperty {
 
     private final PropertyHiddenChildVm propertyHiddenChildVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public String prop() {
         return propertyHiddenChildVm.getPropertyHiddenNowhere();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm.java
index bd7ce81..9f4b479 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm.java
@@ -26,16 +26,14 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -57,9 +55,8 @@ public class PropertyMaxLengthVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(maxLength = 10)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@Property(maxLength = 10)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyUsingAnnotation;
@@ -69,9 +66,8 @@ public class PropertyMaxLengthVm implements HasAsciiDocDescription {
     @MaxLength10MetaAnnotation                            // <.>
     @Property()
     @PropertyLayout(
-        describedAs = "@MaxLength10MetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@MaxLength10MetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -85,9 +81,8 @@ public class PropertyMaxLengthVm implements HasAsciiDocDescription {
     @PropertyLayout(
         describedAs =
             "@MaxLength10MetaAnnotation " +
-            "@PropertyLayout(maxLength = 3)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@PropertyLayout(maxLength = 3)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm.java
index 08cd175..621c8cd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm.java
@@ -26,16 +26,14 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -57,9 +55,8 @@ public class PropertyMustSatisfyVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "mustSatisfy = OfWorkingAgeSpecification.class"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "mustSatisfy = OfWorkingAgeSpecification.class",
+        group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Integer customerAgePropertyUsingAnnotation;
@@ -69,9 +66,8 @@ public class PropertyMustSatisfyVm implements HasAsciiDocDescription {
     @MustSatisfyOfWorkingAgeMetaAnnotation                     // <.>
     @Property()
     @PropertyLayout(
-        describedAs = "@MustSatisfyOfWorkingAgeMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@MustSatisfyOfWorkingAgeMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Integer customerAgePropertyUsingMetaAnnotation;
@@ -85,9 +81,8 @@ public class PropertyMustSatisfyVm implements HasAsciiDocDescription {
     @PropertyLayout(
         describedAs =
             "@MustSatisfyOfWorkingAgeMetaAnnotation " +
-            "@PropertyLayout(mustSatisfy = OfRetirementAgeSpecification.class)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@PropertyLayout(mustSatisfy = OfRetirementAgeSpecification.class)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Integer customerAgePropertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm.java
index 7280e5d..5bc3a8f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm.java
@@ -26,17 +26,15 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -60,9 +58,8 @@ public class PropertyOptionalityVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(optionality = OPTIONAL)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@Property(optionality = OPTIONAL)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingAnnotation;
@@ -74,9 +71,8 @@ public class PropertyOptionalityVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(optionality = MANDATORY)"
-    )
-    @MemberOrder(name = "annotation", sequence = "2")
+            "@Property(optionality = MANDATORY)",
+        group = "annotation", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private String mandatoryPropertyUsingAnnotation;
@@ -86,9 +82,8 @@ public class PropertyOptionalityVm implements HasAsciiDocDescription {
     @OptionalityOptionalMetaAnnotation                  // <.>
     @Property()
     @PropertyLayout(
-        describedAs = "@OptionalityOptionalMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@OptionalityOptionalMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -102,9 +97,8 @@ public class PropertyOptionalityVm implements HasAsciiDocDescription {
     @PropertyLayout(
         describedAs =
             "@OptionalityOptionalMetaAnnotation " +
-            "@PropertyLayout(optionality = MANDATORY)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@PropertyLayout(optionality = MANDATORY)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/PropertyProjectingVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/PropertyProjectingVm.java
index f1f2b05..63c4977 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/PropertyProjectingVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/PropertyProjectingVm.java
@@ -31,16 +31,15 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.Property.projecting.child.PropertyProjectingChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.Property.projecting.child.PropertyProjectingChildVm;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -58,7 +57,7 @@ public class PropertyProjectingVm implements HasAsciiDocDescription {
     }
 
 //tag::property[]
-    @MemberOrder(name = "properties", sequence = "1")
+    @PropertyLayout(group = "properties", sequence = "1")
     public PropertyProjectingChildVm getFirstChild() {
         return getChildren().get(0);
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/child/PropertyProjectingChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/child/PropertyProjectingChildVm.java
index 48c1b7e..82d383a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/child/PropertyProjectingChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/child/PropertyProjectingChildVm.java
@@ -25,20 +25,19 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Projecting;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.Property.projecting.jdo.PropertyProjectingChildJdo;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.Property.projecting.jdo.PropertyProjectingChildJdo;
-
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -57,7 +56,7 @@ public class PropertyProjectingChildVm implements HasAsciiDocDescription {
 
 //tag::class[]
     @Title
-    @MemberOrder(name = "properties", sequence = "1")
+    @PropertyLayout(group = "properties", sequence = "1")
     public String getProperty() {
         return getBackingEntity().getName();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/jdo/PropertyProjectingChildJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/jdo/PropertyProjectingChildJdo.java
index 4e8a050..6ec33f7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/jdo/PropertyProjectingChildJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/jdo/PropertyProjectingChildJdo.java
@@ -26,16 +26,15 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
@@ -55,7 +54,7 @@ public class PropertyProjectingChildJdo implements HasAsciiDocDescription {
 
 //tag::class[]
     @Title(prepend = "Entity: ")
-    @MemberOrder(name = "properties", sequence = "1")
+    @PropertyLayout(group = "properties", sequence = "1")
     @Getter @Setter
     private String name;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm.java
index b289465..bce00d2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm.java
@@ -28,16 +28,14 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -61,9 +59,8 @@ public class PropertyRegexPatternVm implements HasAsciiDocDescription {
     )
     @PropertyLayout(
         describedAs =
-            "@Property(regexPattern = \"^\\w+@\\w+[.]com$\"\")"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@Property(regexPattern = \"^\\w+@\\w+[.]com$\"\")",
+        group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String emailAddressPropertyUsingAnnotation;
@@ -73,9 +70,8 @@ public class PropertyRegexPatternVm implements HasAsciiDocDescription {
     @RegexPatternEmailComMetaAnnotation                             // <.>
     @Property()
     @PropertyLayout(
-        describedAs = "@RegexPatternEmailComMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@RegexPatternEmailComMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String emailAddressPropertyUsingMetaAnnotation;
@@ -91,9 +87,8 @@ public class PropertyRegexPatternVm implements HasAsciiDocDescription {
     @PropertyLayout(
         describedAs =
             "@RegexPatternEmailComMetaAnnotation " +
-            "@Property(regexPattern = \"^\\w+@\\w+[.]org$\"\")"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@Property(regexPattern = \"^\\w+@\\w+[.]org$\"\")",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String emailAddressPropertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm.java
index dfeda22..4b17711 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm.java
@@ -26,18 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Snapshot;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -64,7 +62,7 @@ public class PropertySnapshotVm implements HasAsciiDocDescription {
 
 //tag::no-annotation[]
     @Property()
-    @MemberOrder(name = "no-annotations", sequence = "1")
+    @PropertyLayout(group = "no-annotations", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String text;
@@ -75,9 +73,8 @@ public class PropertySnapshotVm implements HasAsciiDocDescription {
         snapshot = Snapshot.NOT_SPECIFIED
     )
     @PropertyLayout(
-        describedAs = "@Property(snapshot = NOT_SPECIFIED)"
-    )
-    @MemberOrder(name = "annotations", sequence = "1")
+        describedAs = "@Property(snapshot = NOT_SPECIFIED)",
+        group = "annotations", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String notSpecifiedProperty;
@@ -88,9 +85,8 @@ public class PropertySnapshotVm implements HasAsciiDocDescription {
         snapshot = Snapshot.EXCLUDED
     )
     @PropertyLayout(
-        describedAs = "@Property(snapshot = EXCLUDED)"
-    )
-    @MemberOrder(name = "annotations", sequence = "2")
+        describedAs = "@Property(snapshot = EXCLUDED)",
+        group = "annotations", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private String excludedProperty;
@@ -101,9 +97,8 @@ public class PropertySnapshotVm implements HasAsciiDocDescription {
         snapshot = Snapshot.INCLUDED
     )
     @PropertyLayout(
-        describedAs = "@Property(snapshot = INCLUDED)"
-    )
-    @MemberOrder(name = "annotations", sequence = "2")
+        describedAs = "@Property(snapshot = INCLUDED)",
+        group = "annotations", sequence = "2")
     @XmlElement(required = true)
     @Getter @Setter
     private String includedProperty;
@@ -113,9 +108,8 @@ public class PropertySnapshotVm implements HasAsciiDocDescription {
     @SnapshotExcludedMetaAnnotation
     @Property()
     @PropertyLayout(
-        describedAs = "@SnapshotExcludedMetaAnnotation "
-    )
-    @MemberOrder(name = "meta-annotations", sequence = "1")
+        describedAs = "@SnapshotExcludedMetaAnnotation ",
+        group = "meta-annotations", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String metaAnnotatedProperty;
@@ -129,9 +123,8 @@ public class PropertySnapshotVm implements HasAsciiDocDescription {
     @PropertyLayout(
         describedAs =
             "@SnapshotIncludedMetaAnnotation "
-            + "@Property(snapshot = EXCLUDED)"
-    )
-    @MemberOrder(name = "meta-annotations-overridden", sequence = "1")
+            + "@Property(snapshot = EXCLUDED)",
+        group = "meta-annotations-overridden", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String metaAnnotatedPropertyOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
index d273433..0ef02bc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
@@ -26,17 +26,15 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -57,9 +55,8 @@ public class PropertyLayoutCssClassVm implements HasAsciiDocDescription {
     @PropertyLayout(
         cssClass = "red"                                // <.>
         , describedAs =
-            "@PropertyLayout(cssClass = \"red\")"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@PropertyLayout(cssClass = \"red\")",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingAnnotation;
@@ -69,9 +66,8 @@ public class PropertyLayoutCssClassVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(                                        // <.>
         describedAs =
-            "<cpt:property id=\"...\" cssClass=\"red\"/>"
-    )
-    @MemberOrder(name = "layout-file", sequence = "1")
+            "<cpt:property id=\"...\" cssClass=\"red\"/>",
+        group = "layout-file", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingLayout;
@@ -81,9 +77,8 @@ public class PropertyLayoutCssClassVm implements HasAsciiDocDescription {
     @CssClassRedMetaAnnotation                         // <.>
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(
-        describedAs = "@CssClassRedMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@CssClassRedMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -95,9 +90,8 @@ public class PropertyLayoutCssClassVm implements HasAsciiDocDescription {
     @PropertyLayout(
         cssClass = "blue"                               // <.>
         , describedAs =
-            "@CssClassRedMetaAnnotation @PropertyLayout(...)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@CssClassRedMetaAnnotation @PropertyLayout(...)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinProperty.java
index 4fb4d9e..e124968 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.cssClass;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -31,7 +30,8 @@ import lombok.RequiredArgsConstructor;
     cssClass = "red"                // <.>
     , describedAs =
         "@PropertyLayout(cssClass = \"red\")"
-    , hidden = Where.ALL_TABLES
+    , hidden = Where.ALL_TABLES,
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutCssClassVm_mixinProperty {
@@ -40,7 +40,6 @@ public class PropertyLayoutCssClassVm_mixinProperty {
 
     private final PropertyLayoutCssClassVm propertyLayoutCssClassVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public String prop() {
         return propertyLayoutCssClassVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotation.java
index c073977..91a25aa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotation.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.cssClass;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @CssClassRedMetaAnnotation             // <.>
 @PropertyLayout(
     describedAs =
-        "@CssClassRedMetaAnnotation"
+        "@CssClassRedMetaAnnotation",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotation {
@@ -38,7 +38,6 @@ public class PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotation {
 
     private final PropertyLayoutCssClassVm propertyLayoutCssClassVm;
 
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public String prop() {
         return propertyLayoutCssClassVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotationOverridden.java
index 7dc2d81..7553d40 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotationOverridden.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.cssClass;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -30,7 +29,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     cssClass = "blue"                                   // <.>
     , describedAs =
-        "@CssClassRedMetaAnnotation  @ParameterLayout(...)"
+        "@CssClassRedMetaAnnotation  @ParameterLayout(...)",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotationOverridden {
@@ -39,7 +39,6 @@ public class PropertyLayoutCssClassVm_mixinPropertyWithMetaAnnotationOverridden
 
     private final PropertyLayoutCssClassVm propertyLayoutCssClassVm;
 
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public String prop() {
         return propertyLayoutCssClassVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm.java
index 0570762..d578214 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm.java
@@ -26,17 +26,15 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -56,9 +54,8 @@ public class PropertyLayoutDescribedAsVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(
         describedAs =                                   // <.>
-            "@PropertyLayout(describedAs= \"...\")"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@PropertyLayout(describedAs= \"...\")",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingAnnotation;
@@ -66,8 +63,7 @@ public class PropertyLayoutDescribedAsVm implements HasAsciiDocDescription {
 
 //tag::layout-file[]
     @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayout()                                       // <.>
-    @MemberOrder(name = "layout-file", sequence = "1")
+    @PropertyLayout(group = "layout-file", sequence = "1") // <.>
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingLayout;
@@ -77,9 +73,8 @@ public class PropertyLayoutDescribedAsVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @DescribedAsMetaAnnotation                            // <.>
     @PropertyLayout(
-        describedAs = "@DescribedAsMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@DescribedAsMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -90,9 +85,8 @@ public class PropertyLayoutDescribedAsVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(
         describedAs =
-            "@DescribedAsMetaAnnotation @PropertyLayout(...)"   // <.>
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@DescribedAsMetaAnnotation @PropertyLayout(...)",  // <.>
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinProperty.java
index 2568e85..558713d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.describedAs;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -28,7 +27,8 @@ import lombok.RequiredArgsConstructor;
 @Property()
 @PropertyLayout(
     describedAs =                                   // <.>
-        "@PropertyLayout(describedAs = \"...\")"
+        "@PropertyLayout(describedAs = \"...\")",
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutDescribedAsVm_mixinProperty {
@@ -37,7 +37,6 @@ public class PropertyLayoutDescribedAsVm_mixinProperty {
 
     private final PropertyLayoutDescribedAsVm propertyLayoutDescribedAsVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public String prop() {
         return propertyLayoutDescribedAsVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotation.java
index 4606039..433a1ea 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotation.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.describedAs;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @DescribedAsMetaAnnotation              // <.>
 @PropertyLayout(
     describedAs =
-        "@DescribedAsMetaAnnotation)"
+        "@DescribedAsMetaAnnotation)",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotation {
@@ -38,7 +38,6 @@ public class PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotation {
 
     private final PropertyLayoutDescribedAsVm propertyLayoutDescribedAsVm;
 
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public String prop() {
         return propertyLayoutDescribedAsVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotationOverridden.java
index b64edbb..419fe8d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotationOverridden.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.describedAs;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -30,7 +29,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     describedAs =                               // <.>
         "@DescribedAsMetaAnnotation " +
-        "overridden with @PropertyLayout(...)"
+        "overridden with @PropertyLayout(...)",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotationOverridden {
@@ -39,7 +39,6 @@ public class PropertyLayoutDescribedAsVm_mixinPropertyWithMetaAnnotationOverridd
 
     private final PropertyLayoutDescribedAsVm propertyLayoutDescribedAsVm;
 
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public String prop() {
         return propertyLayoutDescribedAsVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm.java
index 800b403..6e3a574 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm.java
@@ -31,20 +31,18 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.PropertyLayout.hidden.child.PropertyLayoutHiddenChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.PropertyLayout.hidden.child.PropertyLayoutHiddenChildVm;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -66,9 +64,8 @@ public class PropertyLayoutHiddenVm implements HasAsciiDocDescription {
     @PropertyLayout(
         hidden = Where.NOWHERE                           // <.>
         , describedAs =
-            "@PropertyLayout(hidden = Where.NOWHERE)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@PropertyLayout(hidden = Where.NOWHERE)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenNowhereUsingAnnotation;
@@ -78,9 +75,8 @@ public class PropertyLayoutHiddenVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(                                        // <.>
         describedAs =
-            "<cpt:property id=\"...\" hidden=\"NOWHERE\"/>"
-    )
-    @MemberOrder(name = "layout-file", sequence = "1")
+            "<cpt:property id=\"...\" hidden=\"NOWHERE\"/>",
+        group = "layout-file", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenNowhereUsingLayout;
@@ -91,9 +87,8 @@ public class PropertyLayoutHiddenVm implements HasAsciiDocDescription {
     @PropertyLayout(
             hidden = Where.EVERYWHERE                       // <.>
             , describedAs =
-            "@PropertyLayout(hidden = Where.EVERYWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "1")
+            "@PropertyLayout(hidden = Where.EVERYWHERE)",
+            group = "variants", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenEverywhere;
@@ -104,9 +99,8 @@ public class PropertyLayoutHiddenVm implements HasAsciiDocDescription {
     @PropertyLayout(
             hidden = Where.ANYWHERE                       // <.>
             , describedAs =
-            "@PropertyLayout(hidden = Where.ANYWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "2")
+            "@PropertyLayout(hidden = Where.ANYWHERE)",
+            group = "variants", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenAnywhere;
@@ -124,9 +118,8 @@ public class PropertyLayoutHiddenVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @HiddenEverywhereMetaAnnotation                        // <.>
     @PropertyLayout(
-        describedAs = "@HiddenEverywhereMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@HiddenEverywhereMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -139,9 +132,8 @@ public class PropertyLayoutHiddenVm implements HasAsciiDocDescription {
         hidden = Where.NOWHERE                          // <.>
         , describedAs =
             "@HiddenEverywhereMetaAnnotation " +
-            "@PropertyLayout(hidden = Where.NOWHERE)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
+            "@PropertyLayout(hidden = Where.NOWHERE)",
+            group = "meta-annotated-overridden", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotation.java
index f7ab080..9bf9fc8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotation.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.hidden;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @HiddenEverywhereMetaAnnotation             // <.>
 @PropertyLayout(
     describedAs =
-        "@HiddenEverywhereMetaAnnotation"
+        "@HiddenEverywhereMetaAnnotation",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotation {
@@ -38,7 +38,6 @@ public class PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotation {
 
     private final PropertyLayoutHiddenVm propertyLayoutHiddenVm;
 
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public String prop() {
         return propertyLayoutHiddenVm.getPropertyHiddenNowhereUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotationOverridden.java
index 5f0aeb5..03b6eb2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotationOverridden.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.hidden;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,7 +31,8 @@ import lombok.RequiredArgsConstructor;
     hidden = Where.NOWHERE                  // <.>
     , describedAs =
         "@HiddenEverywhereMetaAnnotation " +
-        "@PropertyLayout(hidden = NOWHERE)"
+        "@PropertyLayout(hidden = NOWHERE)",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotationOverridden {
@@ -41,7 +41,6 @@ public class PropertyLayoutHiddenVm_mixinPropertyWithMetaAnnotationOverridden {
 
     private final PropertyLayoutHiddenVm propertyLayoutHiddenVm;
 
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public String prop() {
         return propertyLayoutHiddenVm.getPropertyHiddenNowhereUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm.java
index b859596..020bdd6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm.java
@@ -26,20 +26,18 @@ import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.PropertyLayout.hidden.PropertyLayoutHiddenVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.PropertyLayout.hidden.PropertyLayoutHiddenVm;
-
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -75,9 +73,8 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
     @PropertyLayout(
         hidden = Where.NOWHERE                           // <.>
         , describedAs =
-            "@PropertyLayout(hidden = Where.NOWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "1")
+            "@PropertyLayout(hidden = Where.NOWHERE)",
+        group = "variants", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenNowhere;
@@ -88,9 +85,8 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
     @PropertyLayout(
         hidden = Where.EVERYWHERE                        // <.>
         , describedAs =
-            "@PropertyLayout(hidden = Where.EVERYWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "2")
+            "@PropertyLayout(hidden = Where.EVERYWHERE)",
+        group = "variants", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenEverywhere;
@@ -101,9 +97,8 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
     @PropertyLayout(
         hidden = Where.ANYWHERE                        // <.>
         , describedAs =
-            "@PropertyLayout(hidden = Where.ANYWHERE)"
-    )
-    @MemberOrder(name = "variants", sequence = "2.1")
+            "@PropertyLayout(hidden = Where.ANYWHERE)",
+        group = "variants", sequence = "2.1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenAnywhere;
@@ -112,11 +107,10 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
 //tag::variants-all_tables[]
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(
-            hidden = Where.ALL_TABLES                       // <.>
-            , describedAs =
-            "@PropertyLayout(hidden = Where.ALL_TABLES)"
-    )
-    @MemberOrder(name = "variants", sequence = "3")
+        hidden = Where.ALL_TABLES                       // <.>
+        , describedAs =
+        "@PropertyLayout(hidden = Where.ALL_TABLES)",
+        group = "variants", sequence = "3")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenAllTables;
@@ -127,9 +121,8 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
     @PropertyLayout(
             hidden = Where.OBJECT_FORMS                     // <.>
             , describedAs =
-            "@PropertyLayout(hidden = Where.OBJECT_FORMS)"
-    )
-    @MemberOrder(name = "variants", sequence = "4")
+            "@PropertyLayout(hidden = Where.OBJECT_FORMS)",
+            group = "variants", sequence = "4")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenObjectForms;
@@ -140,9 +133,8 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
     @PropertyLayout(
             hidden = Where.STANDALONE_TABLES            // <.>
             , describedAs =
-            "@PropertyLayout(hidden = Where.STANDALONE_TABLES)"
-    )
-    @MemberOrder(name = "variants", sequence = "5")
+            "@PropertyLayout(hidden = Where.STANDALONE_TABLES)",
+            group = "variants", sequence = "5")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenStandaloneTables;
@@ -153,9 +145,8 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
     @PropertyLayout(
             hidden = Where.ALL_EXCEPT_STANDALONE_TABLES            // <.>
             , describedAs =
-            "@PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)"
-    )
-    @MemberOrder(name = "variants", sequence = "6")
+            "@PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)",
+            group = "variants", sequence = "6")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenAllExceptStandaloneTables;
@@ -167,9 +158,8 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
     @PropertyLayout(
             hidden = Where.PARENTED_TABLES            // <.>
             , describedAs =
-            "@PropertyLayout(hidden = Where.PARENTED_TABLES)"
-    )
-    @MemberOrder(name = "variants", sequence = "7")
+            "@PropertyLayout(hidden = Where.PARENTED_TABLES)",
+            group = "variants", sequence = "7")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyHiddenParentedTables;
@@ -180,9 +170,8 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
     @PropertyLayout(
             hidden = Where.REFERENCES_PARENT            // <.>
             , describedAs =
-            "@PropertyLayout(hidden = Where.REFERENCES_PARENT)"
-    )
-    @MemberOrder(name = "variants", sequence = "8")
+            "@PropertyLayout(hidden = Where.REFERENCES_PARENT)",
+            group = "variants", sequence = "8")
     @XmlTransient   // to avoid cycles
     @Getter @Setter
     private PropertyLayoutHiddenVm propertyHiddenReferencesParent;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm_mixinProperty.java
index 6149748..7662292 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.hidden.child;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -30,7 +29,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     hidden = Where.ALL_TABLES                   // <.>
     , describedAs =
-        "@PropertyLayout(hidden = ALL_TABLES)"
+        "@PropertyLayout(hidden = ALL_TABLES)",
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutHiddenChildVm_mixinProperty {
@@ -39,7 +39,6 @@ public class PropertyLayoutHiddenChildVm_mixinProperty {
 
     private final PropertyLayoutHiddenChildVm propertyLayoutHiddenChildVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public String prop() {
         return propertyLayoutHiddenChildVm.getPropertyHiddenNowhere();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm.java
index 62f626e..b7f0edf 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm.java
@@ -27,17 +27,15 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -58,9 +56,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @PropertyLayout(
         labelPosition = LabelPosition.TOP                   // <.>
         , describedAs =
-            "@PropertyLayout(labelPosition = TOP)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@PropertyLayout(labelPosition = TOP)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingAnnotation;
@@ -70,9 +67,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(                                        // <.>
         describedAs =
-            "<cpt:property id=\"...\" labelPosition=\"TOP\"/>"
-    )
-    @MemberOrder(name = "layout-file", sequence = "1")
+            "<cpt:property id=\"...\" labelPosition=\"TOP\"/>",
+        group = "layout-file", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingLayout;
@@ -82,9 +78,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @LabelPositionTopMetaAnnotation                         // <.>
     @PropertyLayout(
-        describedAs = "@LabelPositionTopMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@LabelPositionTopMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -96,9 +91,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @PropertyLayout(
         labelPosition = LabelPosition.LEFT                  // <.>
         , describedAs =
-            "@LabelPositionTopMetaAnnotation @PropertyLayout(...)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@LabelPositionTopMetaAnnotation @PropertyLayout(...)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
@@ -109,9 +103,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @PropertyLayout(
         labelPosition = LabelPosition.TOP                   // <.>
         , describedAs =
-        "@PropertyLayout(labelPosition = TOP)"
-    )
-    @MemberOrder(name = "variants", sequence = "1")
+        "@PropertyLayout(labelPosition = TOP)",
+        group = "variants", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyLabelPositionTop;
@@ -122,9 +115,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @PropertyLayout(
         labelPosition = LabelPosition.LEFT                  // <.>
         , describedAs =
-        "@PropertyLayout(labelPosition = LEFT)"
-    )
-    @MemberOrder(name = "variants", sequence = "2")
+        "@PropertyLayout(labelPosition = LEFT)",
+        group = "variants", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyLabelPositionLeft;
@@ -135,9 +127,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @PropertyLayout(
         labelPosition = LabelPosition.RIGHT                 // <.>
         , describedAs =
-        "@PropertyLayout(labelPosition = RIGHT)"
-    )
-    @MemberOrder(name = "variants", sequence = "3")
+        "@PropertyLayout(labelPosition = RIGHT)",
+        group = "variants", sequence = "3")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyLabelPositionRight;
@@ -148,9 +139,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @PropertyLayout(
         labelPosition = LabelPosition.RIGHT                 // <.>
         , describedAs =
-        "@PropertyLayout(labelPosition = RIGHT)"
-    )
-    @MemberOrder(name = "variants", sequence = "3.1")
+        "@PropertyLayout(labelPosition = RIGHT)",
+        group = "variants", sequence = "3.1")
     @XmlElement(required = false)
     @Getter @Setter
     private Boolean propertyBooleanLabelPositionRight;
@@ -161,9 +151,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @PropertyLayout(
         labelPosition = LabelPosition.NONE                  // <.>
         , describedAs =
-        "@PropertyLayout(labelPosition = NONE)"
-    )
-    @MemberOrder(name = "variants", sequence = "4")
+        "@PropertyLayout(labelPosition = NONE)",
+        group = "variants", sequence = "4")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyLabelPositionNone;
@@ -175,9 +164,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
             labelPosition = LabelPosition.NONE              // <.>
             , multiLine = 10
             , describedAs =
-            "@PropertyLayout(labelPosition = NONE, multiLine = 10)"
-    )
-    @MemberOrder(name = "variants", sequence = "4.1")
+            "@PropertyLayout(labelPosition = NONE, multiLine = 10)",
+            group = "variants", sequence = "4.1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyLabelPositionNoneMultiline;
@@ -188,9 +176,8 @@ public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
     @PropertyLayout(
         labelPosition = LabelPosition.NOT_SPECIFIED         // <.>
         , describedAs =
-        "@PropertyLayout(labelPosition = NONE)"
-    )
-    @MemberOrder(name = "variants", sequence = "5")
+        "@PropertyLayout(labelPosition = NONE)",
+        group = "variants", sequence = "5")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyLabelPositionNotSpecified;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinProperty.java
index cb9633e..e2485a4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinProperty.java
@@ -19,7 +19,6 @@
 package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,7 +31,8 @@ import lombok.RequiredArgsConstructor;
     labelPosition = LabelPosition.TOP           // <.>
     , describedAs =
         "@PropertyLayout(labelPosition = TOP)"
-    , hidden = Where.ALL_TABLES
+    , hidden = Where.ALL_TABLES,
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutLabelPositionVm_mixinProperty {
@@ -41,7 +41,6 @@ public class PropertyLayoutLabelPositionVm_mixinProperty {
 
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public String prop() {
         return propertyLayoutLabelPositionVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotation.java
index 2cd78e7..fca49a5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotation.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @LabelPositionTopMetaAnnotation             // <.>
 @PropertyLayout(
     describedAs =
-        "@LabelPositionTopMetaAnnotation"
+        "@LabelPositionTopMetaAnnotation",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotation {
@@ -38,7 +38,6 @@ public class PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotation {
 
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public String prop() {
         return propertyLayoutLabelPositionVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotationOverridden.java
index 8f6518f..5fddf1a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotationOverridden.java
@@ -19,7 +19,6 @@
 package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -31,7 +30,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     labelPosition = LabelPosition.LEFT                          // <.>
     , describedAs =
-        "@LabelPositionTopMetaAnnotation @ParameterLayout(...)"
+        "@LabelPositionTopMetaAnnotation @ParameterLayout(...)",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotationOverridden {
@@ -40,7 +40,6 @@ public class PropertyLayoutLabelPositionVm_mixinPropertyWithMetaAnnotationOverri
 
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public String prop() {
         return propertyLayoutLabelPositionVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm.java
index b968ef3..1eac8b7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm.java
@@ -26,17 +26,15 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -57,9 +55,8 @@ public class PropertyLayoutMultiLineVm implements HasAsciiDocDescription {
     @PropertyLayout(
         multiLine = 5                           // <.>
         , describedAs =
-            "@PropertyLayout(multiLine = 5)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@PropertyLayout(multiLine = 5)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingAnnotation;
@@ -73,9 +70,8 @@ public class PropertyLayoutMultiLineVm implements HasAsciiDocDescription {
     @PropertyLayout(
         multiLine = 5
         , describedAs =
-            "@PropertyLayout(multiLine = 5)"
-    )
-    @MemberOrder(name = "annotation", sequence = "2")
+            "@PropertyLayout(multiLine = 5)",
+        group = "annotation", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingAnnotationReadOnly;
@@ -85,9 +81,8 @@ public class PropertyLayoutMultiLineVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(                                        // <.>
         describedAs =
-            "<cpt:property id=\"...\" multiLine=\"5\"/>"
-    )
-    @MemberOrder(name = "layout-file", sequence = "1")
+            "<cpt:property id=\"...\" multiLine=\"5\"/>",
+        group = "layout-file", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingLayout;
@@ -97,9 +92,8 @@ public class PropertyLayoutMultiLineVm implements HasAsciiDocDescription {
     @MultiLine10MetaAnnotation                        // <.>
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(
-        describedAs = "@MultiLine10MetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@MultiLine10MetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -112,9 +106,8 @@ public class PropertyLayoutMultiLineVm implements HasAsciiDocDescription {
         multiLine = 3                                   // <.>
         , describedAs =
             "@MultiLine10MetaAnnotation " +
-            "@PropertyLayout(multiLine = 3)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@PropertyLayout(multiLine = 3)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinProperty.java
index b6a9643..a438850 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.multiLine;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     multiLine = 5                           // <.>
     , describedAs =
-        "@PropertyLayout(multiLine = 5)"
+        "@PropertyLayout(multiLine = 5)",
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutMultiLineVm_mixinProperty {
@@ -38,7 +38,6 @@ public class PropertyLayoutMultiLineVm_mixinProperty {
 
     private final PropertyLayoutMultiLineVm propertyLayoutMultiLineVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public String prop() {
         return propertyLayoutMultiLineVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotation.java
index 4f54cb5..1feb0a7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotation.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.multiLine;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @Property()
 @PropertyLayout(
     describedAs =
-        "@MultiLine10MetaAnnotation"
+        "@MultiLine10MetaAnnotation",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotation {
@@ -38,7 +38,6 @@ public class PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotation {
 
     private final PropertyLayoutMultiLineVm propertyLayoutMultiLineVm;
 
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public String prop() {
         return propertyLayoutMultiLineVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotationOverridden.java
index 817aab1..16f5b67 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotationOverridden.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.multiLine;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -31,7 +30,8 @@ import lombok.RequiredArgsConstructor;
     multiLine = 3                                       // <.>
     , describedAs =
         "@MultiLine10MetaAnnotation " +
-        "@PropertyLayout(multiLine = 3)"
+        "@PropertyLayout(multiLine = 3)",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotationOverridden {
@@ -40,7 +40,6 @@ public class PropertyLayoutMultiLineVm_mixinPropertyWithMetaAnnotationOverridden
 
     private final PropertyLayoutMultiLineVm propertyLayoutMultiLineVm;
 
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public String prop() {
         return propertyLayoutMultiLineVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm.java
index 71b4caf..3464f8c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm.java
@@ -26,17 +26,15 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -57,9 +55,8 @@ public class PropertyLayoutNamedVm implements HasAsciiDocDescription {
     @PropertyLayout(
         named = "Named using @PropertyLayout"                // <.>
         , describedAs =
-            "@PropertyLayout(named= \"...\")"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@PropertyLayout(named= \"...\")",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingAnnotation;
@@ -71,9 +68,8 @@ public class PropertyLayoutNamedVm implements HasAsciiDocDescription {
         describedAs =
             "<cpt:property id=\"...\">" +
                 "<cpt:named>...</cpt:named>" +
-            "</cpt:property>"
-    )
-    @MemberOrder(name = "layout-file", sequence = "1")
+            "</cpt:property>",
+        group = "layout-file", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingLayout;
@@ -83,9 +79,8 @@ public class PropertyLayoutNamedVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @NamedMetaAnnotation                            // <.>
     @PropertyLayout(
-        describedAs = "@NamedMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@NamedMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -98,9 +93,8 @@ public class PropertyLayoutNamedVm implements HasAsciiDocDescription {
         named = "@PropertyLayout name " +
                 "overrides meta-annotation"         // <.>
         , describedAs =
-            "@NamedMetaAnnotation @PropertyLayout(...)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@NamedMetaAnnotation @PropertyLayout(...)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
@@ -112,9 +106,8 @@ public class PropertyLayoutNamedVm implements HasAsciiDocDescription {
         named = "Named <b>uses</b> <i>markup</i>",          // <.>
         namedEscaped = false                                // <.>
         , describedAs =
-            "@PropertyLayout(named= \"...\", namedEscaped=false)"
-    )
-    @MemberOrder(name = "markup", sequence = "1")
+            "@PropertyLayout(named= \"...\", namedEscaped=false)",
+        group = "markup", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMarkup;
@@ -127,9 +120,8 @@ public class PropertyLayoutNamedVm implements HasAsciiDocDescription {
         namedEscaped = true                                 // <.>
         , describedAs =
             "@PropertyLayout(" +
-            "named = \"...\", namedEscaped=true)"
-    )
-    @MemberOrder(name = "markup", sequence = "2")
+            "named = \"...\", namedEscaped=true)",
+        group = "markup", sequence = "2")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingEscapedMarkup;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinProperty.java
index 655a3b7..dd06b8b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.named;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     named = "Mixin named using @PropertyLayout"     // <.>
     , describedAs =
-        "@PropertyLayout(named = \"...\")"
+        "@PropertyLayout(named = \"...\")",
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutNamedVm_mixinProperty {
@@ -38,7 +38,6 @@ public class PropertyLayoutNamedVm_mixinProperty {
 
     private final PropertyLayoutNamedVm propertyLayoutNamedVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public String prop() {
         return propertyLayoutNamedVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotation.java
index a1a5e0f..82f5b60 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotation.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.named;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @NamedMetaAnnotation            // <.>
 @PropertyLayout(
     describedAs =
-        "@NamedMetaAnnotation"
+        "@NamedMetaAnnotation",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotation {
@@ -38,7 +38,6 @@ public class PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotation {
 
     private final PropertyLayoutNamedVm propertyLayoutNamedVm;
 
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public String prop() {
         return propertyLayoutNamedVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotationOverridden.java
index 8de9545..bd93461 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotationOverridden.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.named;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -30,7 +29,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     named = "@PropertyLayout overrides meta-annotation for mixin"   // <.>
     , describedAs =
-        "@NamedMetaAnnotation @PropertyLayout(...)"
+        "@NamedMetaAnnotation @PropertyLayout(...)",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotationOverridden {
@@ -39,7 +39,6 @@ public class PropertyLayoutNamedVm_mixinPropertyWithMetaAnnotationOverridden {
 
     private final PropertyLayoutNamedVm propertyLayoutNamedVm;
 
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public String prop() {
         return propertyLayoutNamedVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeVm.java
index a182723..a5e4102 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeVm.java
@@ -25,7 +25,6 @@ import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Navigable;
 import org.apache.isis.applib.annotation.Property;
@@ -33,14 +32,13 @@ import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.graph.tree.TreeNode;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.ToString;
 import lombok.val;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 @XmlRootElement(name="FileNode")
 @DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.FileNode")
 @ToString
@@ -74,8 +72,7 @@ public class FileNodeVm implements HasAsciiDocDescription {
 
 //tag::tree[]
     @Property
-    @PropertyLayout(labelPosition = LabelPosition.NONE)
-    @MemberOrder(name = "tree", sequence = "1")
+    @PropertyLayout(labelPosition = LabelPosition.NONE, group = "tree", sequence = "1")
     public TreeNode<FileNodeVm> getTree() {
         return fileTreeNodeService.sessionTree();
     }
@@ -83,8 +80,7 @@ public class FileNodeVm implements HasAsciiDocDescription {
 
 //tag::navigable[]
     @Property
-    @PropertyLayout(navigable=Navigable.PARENT, hidden=Where.EVERYWHERE)
-    @MemberOrder(name = "detail", sequence = "1")
+    @PropertyLayout(navigable=Navigable.PARENT, hidden=Where.EVERYWHERE, group = "detail", sequence = "1")
     public FileNodeVm getParent() {
         val parentFile = asFile().getParentFile();
         return parentFile != null
@@ -94,14 +90,12 @@ public class FileNodeVm implements HasAsciiDocDescription {
 //end::navigable[]
 
     @Property
-    @PropertyLayout(labelPosition = LabelPosition.TOP)
-    @MemberOrder(name = "detail", sequence = "2")
+    @PropertyLayout(labelPosition = LabelPosition.TOP, group = "detail", sequence = "2")
     @Getter @Setter
     private String path;
 
     @Property
-    @PropertyLayout(labelPosition = LabelPosition.TOP)
-    @MemberOrder(name = "detail", sequence = "3")
+    @PropertyLayout(labelPosition = LabelPosition.TOP, group = "detail", sequence = "3")
     @Getter @Setter
     private FileNodeType type;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm.java
index a833f9a..de5e8c6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm.java
@@ -29,7 +29,6 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
@@ -37,12 +36,11 @@ import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.RenderDay;
 import org.apache.isis.applib.jaxb.JodaTimeJaxbAdapters;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -69,9 +67,8 @@ public class PropertyLayoutRenderDayVm implements HasAsciiDocDescription {
     @PropertyLayout(
         renderDay = RenderDay.NOT_SPECIFIED         // <.>
         , describedAs =
-            "@PropertyLayout(renderDay = NOT_SPECIFIED)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@PropertyLayout(renderDay = NOT_SPECIFIED)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @XmlJavaTypeAdapter(JodaTimeJaxbAdapters.LocalDateToStringAdapter.class)
     @Getter @Setter
@@ -83,9 +80,8 @@ public class PropertyLayoutRenderDayVm implements HasAsciiDocDescription {
     @PropertyLayout(
         renderDay = RenderDay.AS_DAY_BEFORE         // <.>
         , describedAs =
-            "@PropertyLayout(renderDay = AS_DAY_BEFORE)"
-    )
-    @MemberOrder(name = "annotation", sequence = "2")
+            "@PropertyLayout(renderDay = AS_DAY_BEFORE)",
+        group = "annotation", sequence = "2")
     @XmlElement(required = false)
     @XmlJavaTypeAdapter(JodaTimeJaxbAdapters.LocalDateToStringAdapter.class)
     @Getter @Setter
@@ -97,9 +93,8 @@ public class PropertyLayoutRenderDayVm implements HasAsciiDocDescription {
     @PropertyLayout(
         renderDay = RenderDay.AS_DAY             // <.>
         , describedAs =
-            "Value of getEndDate(), but @PropertyLayout(renderDay = AS_DAY)"
-    )
-    @MemberOrder(name = "annotation", sequence = "3")
+            "Value of getEndDate(), but @PropertyLayout(renderDay = AS_DAY)",
+        group = "annotation", sequence = "3")
     public LocalDate getEndDateRaw() {
         return getEndDate();
     }
@@ -110,9 +105,8 @@ public class PropertyLayoutRenderDayVm implements HasAsciiDocDescription {
     @PropertyLayout(                                // <.>
         describedAs =
             "<cpt:property id=\"endDateLayoutFile\" " +
-            "renderedAsDayBefore=\"true\"/>"
-    )
-    @MemberOrder(name = "layout-file", sequence = "1")
+            "renderedAsDayBefore=\"true\"/>",
+        group = "layout-file", sequence = "1")
     @XmlElement(required = false)
     @XmlJavaTypeAdapter(JodaTimeJaxbAdapters.LocalDateToStringAdapter.class)
     @Getter @Setter
@@ -124,9 +118,8 @@ public class PropertyLayoutRenderDayVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(
         describedAs =
-            "@RenderDayMetaAnnotationEndDateExclusive"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+            "@RenderDayMetaAnnotationEndDateExclusive",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @XmlJavaTypeAdapter(JodaTimeJaxbAdapters.LocalDateToStringAdapter.class)
     @Getter @Setter
@@ -139,9 +132,8 @@ public class PropertyLayoutRenderDayVm implements HasAsciiDocDescription {
     @PropertyLayout(
         renderDay = RenderDay.AS_DAY_BEFORE
         , describedAs =
-            "@RenderDayMetaAnnotationEndDateExclusive"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@RenderDayMetaAnnotationEndDateExclusive",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
     @XmlJavaTypeAdapter(JodaTimeJaxbAdapters.LocalDateToStringAdapter.class)
     @Getter @Setter
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotation.java
index 93fb061..ed1cef8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotation.java
@@ -20,7 +20,6 @@ package demoapp.dom.domain.properties.PropertyLayout.renderDay;
 
 import java.time.LocalDate;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -31,7 +30,8 @@ import lombok.RequiredArgsConstructor;
 @RenderDayMetaAnnotationEndDateExclusive            // <.>
 @PropertyLayout(
     describedAs =
-        "@RenderDayMetaAnnotationEndDateExclusive"
+        "@RenderDayMetaAnnotationEndDateExclusive",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotation {
@@ -40,7 +40,6 @@ public class PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotation {
 
     private final PropertyLayoutRenderDayVm propertyLayoutRenderDayVm;
 
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public LocalDate prop() {
         return propertyLayoutRenderDayVm.getEndDate();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotationOverridden.java
index 14f80b8..85a8a0a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotationOverridden.java
@@ -20,7 +20,6 @@ package demoapp.dom.domain.properties.PropertyLayout.renderDay;
 
 import java.time.LocalDate;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.RenderDay;
@@ -35,7 +34,8 @@ import lombok.RequiredArgsConstructor;
     renderDay = RenderDay.AS_DAY_BEFORE             // <.>
     , describedAs =
         "@RenderDayMetaAnnotationStartDateInclusive" +
-        " @PropertyLayout(renderDay = AS_DAY_BEFORE"
+        " @PropertyLayout(renderDay = AS_DAY_BEFORE",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotationOverridden {
@@ -44,7 +44,6 @@ public class PropertyLayoutRenderDayVm_mixinEndDateWithMetaAnnotationOverridden
 
     private final PropertyLayoutRenderDayVm propertyLayoutRenderDayVm;
 
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public LocalDate prop() {
         return propertyLayoutRenderDayVm.getEndDate();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithPropertyLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithPropertyLayout.java
index fc0698d..2fbf74b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithPropertyLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_mixinEndDateWithPropertyLayout.java
@@ -20,7 +20,6 @@ package demoapp.dom.domain.properties.PropertyLayout.renderDay;
 
 import java.time.LocalDate;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.RenderDay;
@@ -32,7 +31,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     renderDay = RenderDay.AS_DAY_BEFORE         // <.>
     , describedAs =
-        "@PropertyLayout(renderDay = AS_DAY_BEFORE)"
+        "@PropertyLayout(renderDay = AS_DAY_BEFORE)",
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutRenderDayVm_mixinEndDateWithPropertyLayout {
@@ -41,7 +41,6 @@ public class PropertyLayoutRenderDayVm_mixinEndDateWithPropertyLayout {
 
     private final PropertyLayoutRenderDayVm propertyLayoutRenderDayVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public LocalDate prop() {
         return propertyLayoutRenderDayVm.getEndDate();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm.java
index baff810..123eb15 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm.java
@@ -26,7 +26,6 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
@@ -35,11 +34,10 @@ import org.apache.isis.applib.annotation.Repainting;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.annotations.PdfJsViewer;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -58,9 +56,8 @@ public class PropertyLayoutRepaintingVm implements HasAsciiDocDescription {
     @PropertyLayout(
         describedAs =
             "Editable property " +
-            "(PDFs should not repaint if it changes)"
-    )
-    @MemberOrder(name = "edit", sequence = "1")
+            "(PDFs should not repaint if it changes)",
+        group = "edit", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String editMe;
@@ -70,9 +67,8 @@ public class PropertyLayoutRepaintingVm implements HasAsciiDocDescription {
     @PropertyLayout(
         repainting = Repainting.NO_REPAINT                  // <.>
         , describedAs =
-            "@PropertyLayout(repainting = NO_REPAINT)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@PropertyLayout(repainting = NO_REPAINT)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = true)
     @PdfJsViewer                                            // <.>
     @Getter @Setter
@@ -83,9 +79,8 @@ public class PropertyLayoutRepaintingVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(                                        // <.>
         describedAs =
-            "<cpt:property id=\"...\" repainting = \"NO_REPAINT\"/>"
-    )
-    @MemberOrder(name = "layout-file", sequence = "1")
+            "<cpt:property id=\"...\" repainting = \"NO_REPAINT\"/>",
+        group = "layout-file", sequence = "1")
     @XmlElement(required = false)
 //    @PdfJsViewer
     @Getter @Setter
@@ -96,9 +91,8 @@ public class PropertyLayoutRepaintingVm implements HasAsciiDocDescription {
     @RepaintingNoRepaintMetaAnnotation                      // <.>
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(
-        describedAs = "@RepaintingNoRepaintMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@RepaintingNoRepaintMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
 //    @PdfJsViewer
     @Getter @Setter
@@ -111,9 +105,8 @@ public class PropertyLayoutRepaintingVm implements HasAsciiDocDescription {
     @PropertyLayout(
         repainting = Repainting.NO_REPAINT                // <.>
         , describedAs =
-            "@RepaintingRepaintMetaAnnotation @PropertyLayout(...)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@RepaintingRepaintMetaAnnotation @PropertyLayout(...)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
 //    @PdfJsViewer
     @Getter @Setter
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinProperty.java
index 21c6274..05c2536 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.repainting;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Repainting;
@@ -31,7 +30,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     repainting = Repainting.NO_REPAINT              // <.>
     , describedAs =
-        "@PropertyLayout(repainting = NO_REPAINT)"
+        "@PropertyLayout(repainting = NO_REPAINT)",
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutRepaintingVm_mixinProperty {
@@ -41,7 +41,6 @@ public class PropertyLayoutRepaintingVm_mixinProperty {
     private final PropertyLayoutRepaintingVm propertyLayoutRepaintingVm;
 
 //    @PdfJsViewer
-    @MemberOrder(name = "contributed", sequence = "1")
     public Blob prop() {
         return propertyLayoutRepaintingVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotation.java
index bcb4b1c..4bdc4c4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotation.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.repainting;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.value.Blob;
@@ -30,7 +29,8 @@ import lombok.RequiredArgsConstructor;
 @Property()
 @PropertyLayout(
     describedAs =
-        "@RepaintingNoRepaintMetaAnnotation"
+        "@RepaintingNoRepaintMetaAnnotation",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotation {
@@ -40,7 +40,6 @@ public class PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotation {
     private final PropertyLayoutRepaintingVm propertyLayoutRepaintingVm;
 
 //    @PdfJsViewer
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public Blob prop() {
         return propertyLayoutRepaintingVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotationOverridden.java
index 597aa19..1172c62 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotationOverridden.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.repainting;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Repainting;
@@ -33,7 +32,8 @@ import lombok.RequiredArgsConstructor;
     repainting = Repainting.NO_REPAINT                              // <.>
     , describedAs =
         "@RepaintingRepaintMetaAnnotation " +
-        "@PropertyLayout(repainting = NO_REPAINT)"
+        "@PropertyLayout(repainting = NO_REPAINT)",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotationOverridden {
@@ -43,7 +43,6 @@ public class PropertyLayoutRepaintingVm_mixinPropertyWithMetaAnnotationOverridde
     private final PropertyLayoutRepaintingVm propertyLayoutRepaintingVm;
 
 //    @PdfJsViewer
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public Blob prop() {
         return propertyLayoutRepaintingVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm.java
index 97f8661..7132e98 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm.java
@@ -26,17 +26,15 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -57,9 +55,8 @@ public class PropertyLayoutTypicalLengthVm implements HasAsciiDocDescription {
     @PropertyLayout(
         typicalLength = 10                                  // <.>
         , describedAs =
-            "@PropertyLayout(typicalLength = 10)"
-    )
-    @MemberOrder(name = "annotation", sequence = "1")
+            "@PropertyLayout(typicalLength = 10)",
+        group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingAnnotation;
@@ -69,9 +66,8 @@ public class PropertyLayoutTypicalLengthVm implements HasAsciiDocDescription {
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(                                        // <.>
         describedAs =
-            "<cpt:property id=\"...\" typicalLength=\"10\"/>"
-    )
-    @MemberOrder(name = "layout-file", sequence = "1")
+            "<cpt:property id=\"...\" typicalLength=\"10\"/>",
+        group = "layout-file", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingLayout;
@@ -81,9 +77,8 @@ public class PropertyLayoutTypicalLengthVm implements HasAsciiDocDescription {
     @TypicalLengthMetaAnnotation                            // <.>
     @Property(optionality = Optionality.OPTIONAL)
     @PropertyLayout(
-        describedAs = "@TypicalLengthMetaAnnotation"
-    )
-    @MemberOrder(name = "meta-annotated", sequence = "1")
+        describedAs = "@TypicalLengthMetaAnnotation",
+        group = "meta-annotated", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotation;
@@ -95,9 +90,8 @@ public class PropertyLayoutTypicalLengthVm implements HasAsciiDocDescription {
     @PropertyLayout(
         typicalLength = 5                                   // <.>
         , describedAs =
-            "@TypicalLengthMetaAnnotation @PropertyLayout(...)"
-    )
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "1")
+            "@TypicalLengthMetaAnnotation @PropertyLayout(...)",
+        group = "meta-annotated-overridden", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String propertyUsingMetaAnnotationButOverridden;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinProperty.java
index c2d6449..b7d9cbd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.typicalLength;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     typicalLength = 10                      // <.>
     , describedAs =
-        "@PropertyLayout(typicalLength = 10)"
+        "@PropertyLayout(typicalLength = 10)",
+    group = "contributed", sequence = "1"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutTypicalLengthVm_mixinProperty {
@@ -38,7 +38,6 @@ public class PropertyLayoutTypicalLengthVm_mixinProperty {
 
     private final PropertyLayoutTypicalLengthVm propertyLayoutTypicalLengthVm;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public String prop() {
         return propertyLayoutTypicalLengthVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotation.java
index 050b2c2..8f582ff 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotation.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.typicalLength;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -29,7 +28,8 @@ import lombok.RequiredArgsConstructor;
 @TypicalLengthMetaAnnotation            // <.>
 @PropertyLayout(
     describedAs =
-        "@TypicalLengthMetaAnnotation"
+        "@TypicalLengthMetaAnnotation",
+    group = "meta-annotated", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotation {
@@ -38,7 +38,6 @@ public class PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotation {
 
     private final PropertyLayoutTypicalLengthVm propertyLayoutTypicalLengthVm;
 
-    @MemberOrder(name = "meta-annotated", sequence = "2")
     public String prop() {
         return propertyLayoutTypicalLengthVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotationOverridden.java
index 7287db9..45e5655 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotationOverridden.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.typicalLength;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
@@ -30,7 +29,8 @@ import lombok.RequiredArgsConstructor;
 @PropertyLayout(
     typicalLength = 3                                       // <.>
     , describedAs =
-        "@TypicalLengthMetaAnnotation @PropertyLayout(...)"
+        "@TypicalLengthMetaAnnotation @PropertyLayout(...)",
+    group = "meta-annotated-overridden", sequence = "2"
 )
 @RequiredArgsConstructor
 public class PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotationOverridden {
@@ -39,7 +39,6 @@ public class PropertyLayoutTypicalLengthVm_mixinPropertyWithMetaAnnotationOverri
 
     private final PropertyLayoutTypicalLengthVm propertyLayoutTypicalLengthVm;
 
-    @MemberOrder(name = "meta-annotated-overridden", sequence = "2")
     public String prop() {
         return propertyLayoutTypicalLengthVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryJdo.java
index 4d16a41..61fd107 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryJdo.java
@@ -28,21 +28,20 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.control.AsyncControl;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain._commands.ExposePersistedCommands;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.val;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain._commands.ExposePersistedCommands;
-
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
@@ -71,12 +70,12 @@ public class WrapperFactoryJdo
 
 //tag::property[]
     @Property()
-    @MemberOrder(name = "async", sequence = "1")
+    @PropertyLayout(group = "async", sequence = "1")
     @Getter @Setter
     private String propertyAsync;
 
     @Property()
-    @MemberOrder(name = "async", sequence = "2")
+    @PropertyLayout(group = "async", sequence = "2")
     @Getter @Setter
     private String propertyAsyncMixin;
 //end::property[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm.java
index 0adb6ac..2474702 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm.java
@@ -31,19 +31,18 @@ import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.services.core.xmlSnapshotService.child.XmlSnapshotChildVm;
+import demoapp.dom.services.core.xmlSnapshotService.peer.XmlSnapshotPeerVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.val;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.services.core.xmlSnapshotService.child.XmlSnapshotChildVm;
-import demoapp.dom.services.core.xmlSnapshotService.peer.XmlSnapshotPeerVm;
-
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -63,13 +62,13 @@ public class XmlSnapshotParentVm implements HasAsciiDocDescription {
     }
 
     @Property(editing = Editing.ENABLED)
-    @MemberOrder(name = "properties", sequence = "1")
+    @PropertyLayout(group = "properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String text;
 
     @Property(editing = Editing.DISABLED)
-    @MemberOrder(name = "properties", sequence = "3")
+    @PropertyLayout(group = "properties", sequence = "3")
     @XmlElement(required = false)
     @Getter @Setter
     private XmlSnapshotPeerVm peer;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/child/XmlSnapshotChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/child/XmlSnapshotChildVm.java
index 65570d9..4ab5929 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/child/XmlSnapshotChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/child/XmlSnapshotChildVm.java
@@ -25,18 +25,16 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -54,8 +52,7 @@ public class XmlSnapshotChildVm implements HasAsciiDocDescription {
 
     @Title
     @Property()
-    @PropertyLayout()
-    @MemberOrder(name = "annotation", sequence = "1")
+    @PropertyLayout(group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String value;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/peer/XmlSnapshotPeerVm.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/peer/XmlSnapshotPeerVm.java
index 58ae1d0..6d2dc08 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/peer/XmlSnapshotPeerVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/peer/XmlSnapshotPeerVm.java
@@ -30,20 +30,18 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.services.core.xmlSnapshotService.peer.child.XmlSnapshotPeerChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.val;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.services.core.xmlSnapshotService.peer.child.XmlSnapshotPeerChildVm;
-
 //tag::class[]
 @XmlRootElement(name = "peer")
 @XmlType
@@ -61,8 +59,7 @@ public class XmlSnapshotPeerVm implements HasAsciiDocDescription {
 
     @Title
     @Property()
-    @PropertyLayout()
-    @MemberOrder(name = "annotation", sequence = "1")
+    @PropertyLayout(group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String value;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/peer/child/XmlSnapshotPeerChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/peer/child/XmlSnapshotPeerChildVm.java
index c65488c..02074be 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/peer/child/XmlSnapshotPeerChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/peer/child/XmlSnapshotPeerChildVm.java
@@ -25,18 +25,16 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -54,8 +52,7 @@ public class XmlSnapshotPeerChildVm implements HasAsciiDocDescription {
 
     @Title
     @Property()
-    @PropertyLayout()
-    @MemberOrder(name = "annotation", sequence = "1")
+    @PropertyLayout(group = "annotation", sequence = "1")
     @XmlElement(required = false)
     @Getter @Setter
     private String value;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/entities/TenantedJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/entities/TenantedJdo.java
index c5c48d0..eb59971 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/entities/TenantedJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/entities/TenantedJdo.java
@@ -24,9 +24,10 @@ import javax.jdo.annotations.IdentityType;
 import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Title;
 
@@ -44,11 +45,12 @@ public class TenantedJdo {
 
     @Title
     @Property(editing = Editing.ENABLED)
-    @MemberOrder(name = "General", sequence = "1")
+    @PropertyLayout(group = "General", sequence = "1")
     @Getter @Setter
     private String name;
 
-    @Action(associateWith = "name", associateWithSequence = "1", semantics = SemanticsOf.SAFE)
+    @Action(associateWith = "name", semantics = SemanticsOf.SAFE)
+    @ActionLayout(sequence = "1")
     public TenantedJdo updateName(final String name) {
         this.name = name;
         return this;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder2.java
index 6440928..7294e11 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.isis.blobs.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -33,9 +32,8 @@ public interface IsisBlobHolder2 extends IsisBlobHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Blob getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -45,9 +43,8 @@ public interface IsisBlobHolder2 extends IsisBlobHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Blob getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -57,9 +54,8 @@ public interface IsisBlobHolder2 extends IsisBlobHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Blob getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -69,9 +65,8 @@ public interface IsisBlobHolder2 extends IsisBlobHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Blob getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_mixinProperty.java
index 27695e0..c36b19a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.isis.blobs.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -29,13 +28,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class IsisBlobHolder_mixinProperty {
 
     private final IsisBlobHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Blob prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo.java
index 092abf2..74f0259 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo.java
@@ -27,17 +27,16 @@ import javax.jdo.annotations.Persistent;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Blob;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.blobs.holder.IsisBlobHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -56,7 +55,7 @@ public class IsisBlobJdo                                            // <.>
 
 //tag::class[]
     @Title(prepend = "Blob JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Persistent(defaultFetchGroup="false", columns = {              // <.>
             @Column(name = "readOnlyProperty_name"),
             @Column(name = "readOnlyProperty_mimetype"),
@@ -66,7 +65,7 @@ public class IsisBlobJdo                                            // <.>
     private Blob readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                            // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Persistent(defaultFetchGroup="false", columns = {
             @Column(name = "readWriteProperty_name"),
             @Column(name = "readWriteProperty_mimetype"),
@@ -76,7 +75,7 @@ public class IsisBlobJdo                                            // <.>
     private Blob readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                   // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Persistent(defaultFetchGroup="false", columns = {
             @Column(name = "readOnlyOptionalProperty_name",
                     allowsNull = "true"),                           // <.>
@@ -89,7 +88,7 @@ public class IsisBlobJdo                                            // <.>
     private Blob readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Persistent(defaultFetchGroup="false", columns = {
             @Column(name = "readWriteOptionalProperty_name",
                     allowsNull = "true"),
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java
index b933159..24a0352 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java
@@ -23,21 +23,19 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.value.Blob;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.blobs.holder.IsisBlobHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -62,24 +60,24 @@ public class IsisBlobVm
         return "Blob view model: " +getReadOnlyProperty().getName();
     }
 
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Blob readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Blob readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Blob readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Blob readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder2.java
index fc50912..4c33b27 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.isis.clobs.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -33,9 +32,8 @@ public interface IsisClobHolder2 extends IsisClobHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Clob getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -45,9 +43,8 @@ public interface IsisClobHolder2 extends IsisClobHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Clob getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -57,9 +54,8 @@ public interface IsisClobHolder2 extends IsisClobHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Clob getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -69,9 +65,8 @@ public interface IsisClobHolder2 extends IsisClobHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Clob getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_mixinProperty.java
index 6fd3254..3056433 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.isis.clobs.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -29,13 +28,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class IsisClobHolder_mixinProperty {
 
     private final IsisClobHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Clob prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo.java
index 0c03002..76386bc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo.java
@@ -27,17 +27,16 @@ import javax.jdo.annotations.Persistent;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Clob;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.clobs.holder.IsisClobHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -56,7 +55,7 @@ public class IsisClobJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Clob JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Persistent(defaultFetchGroup="false", columns = {              // <.>
             @Column(name = "readOnlyProperty_name"),
             @Column(name = "readOnlyProperty_mimetype"),
@@ -68,7 +67,7 @@ public class IsisClobJdo                                          // <.>
     private Clob readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                            // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Persistent(defaultFetchGroup="false", columns = {
             @Column(name = "readWriteProperty_name"),
             @Column(name = "readWriteProperty_mimetype"),
@@ -80,7 +79,7 @@ public class IsisClobJdo                                          // <.>
     private Clob readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                   // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Persistent(defaultFetchGroup="false", columns = {
             @Column(name = "readOnlyOptionalProperty_name",
                     allowsNull = "true"),                           // <.>
@@ -94,7 +93,7 @@ public class IsisClobJdo                                          // <.>
     private Clob readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Persistent(defaultFetchGroup="false", columns = {
             @Column(name = "readWriteOptionalProperty_name"
                     , allowsNull = "true"),                           // <.>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm.java
index b8d8512..1a8689e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm.java
@@ -26,18 +26,17 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Clob;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.clobs.holder.IsisClobHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -59,24 +58,24 @@ public class IsisClobVm
 
 //tag::class[]
     @Title(prepend = "Clob view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Clob readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Clob readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Clob readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Clob readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder2.java
index bc5aa74..46e5dd3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.isis.localresourcepaths.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -33,9 +32,8 @@ public interface IsisLocalResourcePathHolder2 extends IsisLocalResourcePathHolde
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default LocalResourcePath getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -45,9 +43,8 @@ public interface IsisLocalResourcePathHolder2 extends IsisLocalResourcePathHolde
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default LocalResourcePath getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -57,9 +54,8 @@ public interface IsisLocalResourcePathHolder2 extends IsisLocalResourcePathHolde
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default LocalResourcePath getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -69,9 +65,8 @@ public interface IsisLocalResourcePathHolder2 extends IsisLocalResourcePathHolde
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default LocalResourcePath getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_mixinProperty.java
index ab2a916..e1163e5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.isis.localresourcepaths.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -29,13 +28,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class IsisLocalResourcePathHolder_mixinProperty {
 
     private final IsisLocalResourcePathHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public LocalResourcePath prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/jdo/IsisLocalResourcePathJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/jdo/IsisLocalResourcePathJdo.java
index 5fd6540..445018d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/jdo/IsisLocalResourcePathJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/jdo/IsisLocalResourcePathJdo.java
@@ -24,21 +24,19 @@ import javax.jdo.annotations.IdGeneratorStrategy;
 import javax.jdo.annotations.IdentityType;
 import javax.jdo.annotations.NotPersistent;
 import javax.jdo.annotations.PersistenceCapable;
-import javax.jdo.annotations.Persistent;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.LocalResourcePath;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.localresourcepaths.holder.IsisLocalResourcePathHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -57,25 +55,25 @@ public class IsisLocalResourcePathJdo                                   // <.>
 
 //tag::class[]
     @Title(prepend = "LocalResourcePath JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                       // <.>
     @Getter @Setter
     private LocalResourcePath readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private LocalResourcePath readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                       // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                        // <.>
     @Getter @Setter
     private LocalResourcePath readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @NotPersistent
     // @Column(allowsNull = "true")
     @Getter @Setter
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/vm/IsisLocalResourcePathVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/vm/IsisLocalResourcePathVm.java
index 27a6e31..fd69586 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/vm/IsisLocalResourcePathVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/vm/IsisLocalResourcePathVm.java
@@ -26,18 +26,17 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.LocalResourcePath;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.localresourcepaths.holder.IsisLocalResourcePathHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -59,24 +58,24 @@ public class IsisLocalResourcePathVm
 
 //tag::class[]
     @Title(prepend = "LocalResourcePath view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private LocalResourcePath readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private LocalResourcePath readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private LocalResourcePath readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private LocalResourcePath readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder2.java
index 0f89a2f..ac70804 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.isis.markups.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -33,9 +32,8 @@ public interface IsisMarkupHolder2 extends demoapp.dom.types.isis.markups.holder
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Markup getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -45,9 +43,8 @@ public interface IsisMarkupHolder2 extends demoapp.dom.types.isis.markups.holder
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Markup getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -57,9 +54,8 @@ public interface IsisMarkupHolder2 extends demoapp.dom.types.isis.markups.holder
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Markup getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -69,9 +65,8 @@ public interface IsisMarkupHolder2 extends demoapp.dom.types.isis.markups.holder
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Markup getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_mixinProperty.java
index 5d6412f..ccfe5aa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.isis.markups.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -29,13 +28,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class IsisMarkupHolder_mixinProperty {
 
     private final IsisMarkupHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Markup prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jdo/IsisMarkupJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jdo/IsisMarkupJdo.java
index ebcf4f1..36c4eba 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jdo/IsisMarkupJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jdo/IsisMarkupJdo.java
@@ -27,7 +27,6 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
@@ -35,11 +34,10 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.value.Markup;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.markups.holder.IsisMarkupHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -62,28 +60,25 @@ public class IsisMarkupJdo                                          // <.>
             bookmarkService.bookmarkFor(this).getIdentifier();
     }
 
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false", jdbcType = "CLOB")                // <.>
     @Getter @Setter
     private Markup readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                            // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false", jdbcType = "CLOB")
     @Getter @Setter
     private Markup readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                   // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                    // <.>
     @Getter @Setter
     private Markup readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Markup readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/vm/IsisMarkupVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/vm/IsisMarkupVm.java
index 7a71ef2..15f335c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/vm/IsisMarkupVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/vm/IsisMarkupVm.java
@@ -26,7 +26,6 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
@@ -34,11 +33,10 @@ import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.value.Markup;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.markups.holder.IsisMarkupHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -63,27 +61,24 @@ public class IsisMarkupVm
         return "Markup view model";
     }
     
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Markup readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Markup readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Markup readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Markup readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder2.java
index f92c854..86bacca 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.isis.passwords.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -33,9 +32,8 @@ public interface IsisPasswordHolder2 extends IsisPasswordHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Password getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -45,9 +43,8 @@ public interface IsisPasswordHolder2 extends IsisPasswordHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Password getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -57,9 +54,8 @@ public interface IsisPasswordHolder2 extends IsisPasswordHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Password getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -69,9 +65,8 @@ public interface IsisPasswordHolder2 extends IsisPasswordHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Password getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_mixinProperty.java
index bc9eb4b..dc190a1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.isis.passwords.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -29,13 +28,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class IsisPasswordHolder_mixinProperty {
 
     private final IsisPasswordHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Password prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/jdo/IsisPasswordJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/jdo/IsisPasswordJdo.java
index 548fc05..a32843f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/jdo/IsisPasswordJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/jdo/IsisPasswordJdo.java
@@ -26,17 +26,16 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Password;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.passwords.holder.IsisPasswordHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -55,25 +54,25 @@ public class IsisPasswordJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Password JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private Password readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private Password readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private Password readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Password readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/vm/IsisPasswordVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/vm/IsisPasswordVm.java
index 88d69c1..fb6b98e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/vm/IsisPasswordVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/vm/IsisPasswordVm.java
@@ -26,18 +26,17 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Password;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isis.passwords.holder.IsisPasswordHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -59,24 +58,24 @@ public class IsisPasswordVm
 
 //tag::class[]
     @Title(prepend = "Password view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Password readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Password readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Password readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Password readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder2.java
index 2c61f87..321ed15 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.isisext.asciidocs.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -33,9 +32,9 @@ public interface IsisAsciiDocHolder2 extends demoapp.dom.types.isisext.asciidocs
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", 
+        sequence = "1")  // <.>
     default AsciiDoc getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -45,9 +44,9 @@ public interface IsisAsciiDocHolder2 extends demoapp.dom.types.isisext.asciidocs
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", 
+        sequence = "2")
     default AsciiDoc getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -57,9 +56,9 @@ public interface IsisAsciiDocHolder2 extends demoapp.dom.types.isisext.asciidocs
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", 
+        sequence = "3")
     default AsciiDoc getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -69,9 +68,9 @@ public interface IsisAsciiDocHolder2 extends demoapp.dom.types.isisext.asciidocs
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", 
+        sequence = "4")
     default AsciiDoc getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_mixinProperty.java
index 6543b2c..147d269 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.isisext.asciidocs.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -29,13 +28,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class IsisAsciiDocHolder_mixinProperty {
 
     private final IsisAsciiDocHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public AsciiDoc prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java
index 490c5f3..91c209f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java
@@ -27,7 +27,6 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
@@ -35,11 +34,10 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isisext.asciidocs.holder.IsisAsciiDocHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -62,28 +60,25 @@ public class IsisAsciiDocJdo                                          // <.>
             bookmarkService.bookmarkFor(this).getIdentifier();
     }
 
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false", jdbcType = "CLOB")                // <.>
     @Getter @Setter
     private AsciiDoc readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                            // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false", jdbcType = "CLOB")
     @Getter @Setter
     private AsciiDoc readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                   // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                    // <.>
     @Getter @Setter
     private AsciiDoc readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private AsciiDoc readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/vm/IsisAsciiDocVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/vm/IsisAsciiDocVm.java
index e22a9f4..e10a0cb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/vm/IsisAsciiDocVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/vm/IsisAsciiDocVm.java
@@ -26,7 +26,6 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
@@ -34,11 +33,10 @@ import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isisext.asciidocs.holder.IsisAsciiDocHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -63,26 +61,24 @@ public class IsisAsciiDocVm
         return "AsciiDoc view model";
     }
 
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private AsciiDoc readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private AsciiDoc readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private AsciiDoc readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "2")
     @Getter @Setter
     private AsciiDoc readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder2.java
index 2f4e014..aa39c26 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.isisext.markdowns.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -33,9 +32,8 @@ public interface IsisMarkdownHolder2 extends demoapp.dom.types.isisext.markdowns
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Markdown getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -45,9 +43,8 @@ public interface IsisMarkdownHolder2 extends demoapp.dom.types.isisext.markdowns
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Markdown getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -57,9 +54,8 @@ public interface IsisMarkdownHolder2 extends demoapp.dom.types.isisext.markdowns
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Markdown getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -69,9 +65,8 @@ public interface IsisMarkdownHolder2 extends demoapp.dom.types.isisext.markdowns
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Markdown getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_mixinProperty.java
index a67039e..c0c1328 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.isisext.markdowns.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -29,13 +28,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class IsisMarkdownHolder_mixinProperty {
 
     private final IsisMarkdownHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Markdown prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java
index 5375027..aa14aa6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java
@@ -27,7 +27,6 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
@@ -35,11 +34,10 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isisext.markdowns.holder.IsisMarkdownHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -62,28 +60,25 @@ public class IsisMarkdownJdo                                          // <.>
             bookmarkService.bookmarkFor(this).getIdentifier();
 }
 
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false", jdbcType = "CLOB")                // <.>
     @Getter @Setter
     private Markdown readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                            // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false", jdbcType = "CLOB")
     @Getter @Setter
     private Markdown readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                   // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                    // <.>
     @Getter @Setter
     private Markdown readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Markdown readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java
index dcc43a3..a5e951c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java
@@ -26,7 +26,6 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
@@ -34,11 +33,10 @@ import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isisext.markdowns.holder.IsisMarkdownHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -63,27 +61,24 @@ public class IsisMarkdownVm
         return "Markdown view model";
     }
     
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Markdown readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @PropertyLayout(hidden = Where.EVERYWHERE)
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.EVERYWHERE, group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Markdown readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Markdown readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_TABLES)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(hidden = Where.ALL_TABLES, group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Markdown readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtImageHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtImageHolder2.java
index 01eae7b..44360ca 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtImageHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtImageHolder2.java
@@ -21,7 +21,6 @@ package demoapp.dom.types.javaawt.images.holder;
 import java.awt.image.BufferedImage;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -34,9 +33,8 @@ public interface JavaAwtImageHolder2 extends JavaAwtImageHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default BufferedImage getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -46,9 +44,8 @@ public interface JavaAwtImageHolder2 extends JavaAwtImageHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default BufferedImage getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -58,9 +55,8 @@ public interface JavaAwtImageHolder2 extends JavaAwtImageHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default BufferedImage getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -70,9 +66,8 @@ public interface JavaAwtImageHolder2 extends JavaAwtImageHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default BufferedImage getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtImageHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtImageHolder_mixinProperty.java
index bc2c1aa..3ac5155 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtImageHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtImageHolder_mixinProperty.java
@@ -20,7 +20,6 @@ package demoapp.dom.types.javaawt.images.holder;
 
 import java.awt.image.BufferedImage;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -30,13 +29,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class JavaAwtImageHolder_mixinProperty {
 
     private final JavaAwtImageHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public BufferedImage prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jdo/JavaAwtImageJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jdo/JavaAwtImageJdo.java
index 9f7f2b2..25000d4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jdo/JavaAwtImageJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jdo/JavaAwtImageJdo.java
@@ -27,19 +27,14 @@ import javax.jdo.annotations.IdentityType;
 import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.Title;
-
+import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.javaawt.images.holder.JavaAwtImageHolder2;
-
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
@@ -67,7 +62,7 @@ public class JavaAwtImageJdo                                          // <.>
 
     // @Title(prepend = "Image JDO entity: ")  // not yet supported
 //tag::class[]
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                   // <.>
     @Getter @Setter
     private BufferedImage readOnlyProperty;
@@ -75,14 +70,14 @@ public class JavaAwtImageJdo                                          // <.>
 //end::class[]
 // editable properties not yet supported:
 //    @Property(editing = Editing.ENABLED)                          // <.>
-//    @MemberOrder(name = "editable-properties", sequence = "1")
+//    @PropertyLayout(group = "editable-properties", sequence = "1")
 //    @Column(allowsNull = "false")
 //    @Getter @Setter
 //    private BufferedImage readWriteProperty;
 
 //tag::class[]
     @Property(optionality = Optionality.OPTIONAL)                   // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                    // <.>
     @Getter @Setter
     private BufferedImage readOnlyOptionalProperty;
@@ -90,7 +85,7 @@ public class JavaAwtImageJdo                                          // <.>
 //end::class[]
 // editable properties not yet supported:
 //    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-//    @MemberOrder(name = "optional-properties", sequence = "2")
+//    @PropertyLayout(group = "optional-properties", sequence = "2")
 //    @Column(allowsNull = "true")
 //    @Getter @Setter
 //    private BufferedImage readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/vm/JavaAwtImageVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/vm/JavaAwtImageVm.java
index e932156..e5acf9b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/vm/JavaAwtImageVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/vm/JavaAwtImageVm.java
@@ -27,19 +27,15 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.PropertyLayout;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.javaawt.images.holder.JavaAwtImageHolder2;
-
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -70,7 +66,7 @@ public class JavaAwtImageVm
 
 //    @Title(prepend = "Image view model: ")  // not yet supported
 //tag::class[]
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                        // <.>
     @Getter @Setter
     private BufferedImage readOnlyProperty;
@@ -78,21 +74,21 @@ public class JavaAwtImageVm
 //end::class[]
 // editable properties not yet supported:
 //    @Property(editing = Editing.ENABLED)                                // <.>
-//    @MemberOrder(name = "editable-properties", sequence = "1")
+//    @PropertyLayout(group = "editable-properties", sequence = "1")
 //    @XmlElement(required = true)
 //    @Getter @Setter
 //    private BufferedImage readWriteProperty;
 
 //tag::class[]
     @Property(optionality = Optionality.OPTIONAL)                       // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private BufferedImage readOnlyOptionalProperty;
 
 //end::class[]
 // editable properties not yet supported:
 //    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-//    @MemberOrder(name = "optional-properties", sequence = "2")
+//    @PropertyLayout(group = "optional-properties", sequence = "2")
 //    @Getter @Setter
 //    private BufferedImage readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder2.java
index 1154171..413c263 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javalang.booleans.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface WrapperBooleanHolder2 extends WrapperBooleanHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES, 
+        group = "label-positions", sequence = "1")  // <.>
     default Boolean getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface WrapperBooleanHolder2 extends WrapperBooleanHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES, 
+        group = "label-positions", sequence = "2")
     default Boolean getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface WrapperBooleanHolder2 extends WrapperBooleanHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Boolean getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface WrapperBooleanHolder2 extends WrapperBooleanHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES, 
+        group = "label-positions", sequence = "4")
     default Boolean getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_mixinProperty.java
index c3f6f3f..1db641c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javalang.booleans.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class WrapperBooleanHolder_mixinProperty {
 
     private final WrapperBooleanHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Boolean prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/jdo/WrapperBooleanJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/jdo/WrapperBooleanJdo.java
index 2837984..fd93828 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/jdo/WrapperBooleanJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/jdo/WrapperBooleanJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.booleans.holder.WrapperBooleanHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class WrapperBooleanJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Boolean (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private Boolean readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private Boolean readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private Boolean readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Boolean readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/vm/WrapperBooleanVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/vm/WrapperBooleanVm.java
index 4e4d7ec..ecb4ca7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/vm/WrapperBooleanVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/vm/WrapperBooleanVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.booleans.holder.WrapperBooleanHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class WrapperBooleanVm
 
 //tag::class[]
     @Title(prepend = "Boolean (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Boolean readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Boolean readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Boolean readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Boolean readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder2.java
index 7b1683f..da15dcc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javalang.bytes.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface WrapperByteHolder2 extends WrapperByteHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Byte getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface WrapperByteHolder2 extends WrapperByteHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Byte getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface WrapperByteHolder2 extends WrapperByteHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Byte getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface WrapperByteHolder2 extends WrapperByteHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Byte getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_mixinProperty.java
index abd23b7..8aca288 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javalang.bytes.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class WrapperByteHolder_mixinProperty {
 
     private final WrapperByteHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Byte prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/jdo/WrapperByteJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/jdo/WrapperByteJdo.java
index bda9f28..ccf518a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/jdo/WrapperByteJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/jdo/WrapperByteJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.bytes.holder.WrapperByteHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class WrapperByteJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Byte (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private Byte readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private Byte readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private Byte readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Byte readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/vm/WrapperByteVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/vm/WrapperByteVm.java
index 9560530..4b42434 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/vm/WrapperByteVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/vm/WrapperByteVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.bytes.holder.WrapperByteHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class WrapperByteVm
 
 //tag::class[]
     @Title(prepend = "Byte (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Byte readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Byte readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Byte readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Byte readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder2.java
index 14e0638..3de1d50 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javalang.characters.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface WrapperCharacterHolder2 extends WrapperCharacterHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Character getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface WrapperCharacterHolder2 extends WrapperCharacterHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Character getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface WrapperCharacterHolder2 extends WrapperCharacterHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Character getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface WrapperCharacterHolder2 extends WrapperCharacterHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Character getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_mixinProperty.java
index 34ec540..b302a60 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javalang.characters.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class WrapperCharacterHolder_mixinProperty {
 
     private final WrapperCharacterHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Character prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/jdo/WrapperCharacterJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/jdo/WrapperCharacterJdo.java
index 203c402..86052ed 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/jdo/WrapperCharacterJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/jdo/WrapperCharacterJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.characters.holder.WrapperCharacterHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class WrapperCharacterJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Character (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private Character readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private Character readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private Character readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Character readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/vm/WrapperCharacterVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/vm/WrapperCharacterVm.java
index f941daf..e9f59d7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/vm/WrapperCharacterVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/vm/WrapperCharacterVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.characters.holder.WrapperCharacterHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class WrapperCharacterVm
 
 //tag::class[]
     @Title(prepend = "Character (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Character readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Character readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Character readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Character readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder2.java
index 80af37a..e9d324d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javalang.doubles.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface WrapperDoubleHolder2 extends WrapperDoubleHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Double getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface WrapperDoubleHolder2 extends WrapperDoubleHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Double getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface WrapperDoubleHolder2 extends WrapperDoubleHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Double getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface WrapperDoubleHolder2 extends WrapperDoubleHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Double getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_mixinProperty.java
index f027458..a493465 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javalang.doubles.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class WrapperDoubleHolder_mixinProperty {
 
     private final WrapperDoubleHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Double prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/jdo/WrapperDoubleJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/jdo/WrapperDoubleJdo.java
index 6787ff9..3d46bc0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/jdo/WrapperDoubleJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/jdo/WrapperDoubleJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.doubles.holder.WrapperDoubleHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class WrapperDoubleJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Double (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private Double readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private Double readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private Double readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Double readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/vm/WrapperDoubleVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/vm/WrapperDoubleVm.java
index 78ee1fa..d62b722 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/vm/WrapperDoubleVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/vm/WrapperDoubleVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.doubles.holder.WrapperDoubleHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class WrapperDoubleVm
 
 //tag::class[]
     @Title(prepend = "Double (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Double readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Double readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Double readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Double readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder2.java
index 1b64346..4eb523e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javalang.floats.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface WrapperFloatHolder2 extends WrapperFloatHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Float getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface WrapperFloatHolder2 extends WrapperFloatHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Float getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface WrapperFloatHolder2 extends WrapperFloatHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Float getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface WrapperFloatHolder2 extends WrapperFloatHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Float getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_mixinProperty.java
index 48f7264..550639f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javalang.floats.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class WrapperFloatHolder_mixinProperty {
 
     private final WrapperFloatHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Float prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/jdo/WrapperFloatJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/jdo/WrapperFloatJdo.java
index da2e0fe..54e4915 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/jdo/WrapperFloatJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/jdo/WrapperFloatJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.floats.holder.WrapperFloatHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class WrapperFloatJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Float (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private Float readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private Float readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private Float readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Float readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/vm/WrapperFloatVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/vm/WrapperFloatVm.java
index 8e9d944..c622545 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/vm/WrapperFloatVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/vm/WrapperFloatVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.floats.holder.WrapperFloatHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class WrapperFloatVm
 
 //tag::class[]
     @Title(prepend = "Float (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Float readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Float readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Float readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Float readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder2.java
index b4f1229..06d225c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javalang.integers.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface WrapperIntegerHolder2 extends WrapperIntegerHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Integer getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface WrapperIntegerHolder2 extends WrapperIntegerHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Integer getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface WrapperIntegerHolder2 extends WrapperIntegerHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Integer getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface WrapperIntegerHolder2 extends WrapperIntegerHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Integer getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_mixinProperty.java
index 676887d..2b3d834 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javalang.integers.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class WrapperIntegerHolder_mixinProperty {
 
     private final WrapperIntegerHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Integer prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/jdo/WrapperIntegerJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/jdo/WrapperIntegerJdo.java
index e357549..33c2241 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/jdo/WrapperIntegerJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/jdo/WrapperIntegerJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.integers.holder.WrapperIntegerHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class WrapperIntegerJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Integer (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private Integer readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private Integer readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private Integer readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Integer readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/vm/WrapperIntegerVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/vm/WrapperIntegerVm.java
index 29f953e..180dd0e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/vm/WrapperIntegerVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/vm/WrapperIntegerVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.integers.holder.WrapperIntegerHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class WrapperIntegerVm
 
 //tag::class[]
     @Title(prepend = "Integer (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Integer readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Integer readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Integer readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Integer readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder2.java
index edc39d4..69d7a90 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javalang.longs.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface WrapperLongHolder2 extends WrapperLongHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Long getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface WrapperLongHolder2 extends WrapperLongHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Long getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface WrapperLongHolder2 extends WrapperLongHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Long getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface WrapperLongHolder2 extends WrapperLongHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Long getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_mixinProperty.java
index c8ee7cc..d8cf879 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javalang.longs.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class WrapperLongHolder_mixinProperty {
 
     private final WrapperLongHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Long prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/jdo/WrapperLongJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/jdo/WrapperLongJdo.java
index 672b58b..0d53dab 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/jdo/WrapperLongJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/jdo/WrapperLongJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.longs.holder.WrapperLongHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class WrapperLongJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Long (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private Long readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private Long readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private Long readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Long readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/vm/WrapperLongVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/vm/WrapperLongVm.java
index 44e4eba..06b9d49 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/vm/WrapperLongVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/vm/WrapperLongVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.longs.holder.WrapperLongHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class WrapperLongVm
 
 //tag::class[]
     @Title(prepend = "Long (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Long readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Long readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Long readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Long readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder2.java
index f05d7e7..8fe4a1a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javalang.shorts.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface WrapperShortHolder2 extends WrapperShortHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default Short getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface WrapperShortHolder2 extends WrapperShortHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default Short getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface WrapperShortHolder2 extends WrapperShortHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default Short getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface WrapperShortHolder2 extends WrapperShortHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default Short getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_mixinProperty.java
index 0079e5f..024098b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javalang.shorts.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class WrapperShortHolder_mixinProperty {
 
     private final WrapperShortHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public Short prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/jdo/WrapperShortJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/jdo/WrapperShortJdo.java
index f16b753..980853c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/jdo/WrapperShortJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/jdo/WrapperShortJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.shorts.holder.WrapperShortHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class WrapperShortJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "Short (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private Short readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private Short readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private Short readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private Short readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/vm/WrapperShortVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/vm/WrapperShortVm.java
index 7b600ea..40d8e06 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/vm/WrapperShortVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/vm/WrapperShortVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.shorts.holder.WrapperShortHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class WrapperShortVm
 
 //tag::class[]
     @Title(prepend = "Short (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private Short readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private Short readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private Short readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private Short readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder2.java
index f36a060..66496cb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javalang.strings.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface JavaLangStringHolder2 extends JavaLangStringHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default String getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface JavaLangStringHolder2 extends JavaLangStringHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default String getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface JavaLangStringHolder2 extends JavaLangStringHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default String getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface JavaLangStringHolder2 extends JavaLangStringHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default String getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_mixinProperty.java
index 9db8c36..7ae766c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javalang.strings.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,13 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class JavaLangStringHolder_mixinProperty {
 
     private final JavaLangStringHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
+    @PropertyLayout(group = "contributed", sequence = "1")
     public String prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/jdo/JavaLangStringJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/jdo/JavaLangStringJdo.java
index b911924..598b7b0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/jdo/JavaLangStringJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/jdo/JavaLangStringJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.strings.holder.JavaLangStringHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class JavaLangStringJdo
 
 //tag::class[]
     @Title(prepend = "StringJDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private String readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private String readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private String readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private String readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/vm/JavaLangStringVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/vm/JavaLangStringVm.java
index e2149d7..0ad629d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/vm/JavaLangStringVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/vm/JavaLangStringVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javalang.strings.holder.JavaLangStringHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class JavaLangStringVm
 
 //tag::class[]
     @Title(prepend = "Stringview model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private String readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private String readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private String readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private String readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder2.java
index 92bb508..74526a9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javamath.bigdecimals.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface JavaMathBigDecimalHolder2 extends JavaMathBigDecimalHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default java.math.BigDecimal getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface JavaMathBigDecimalHolder2 extends JavaMathBigDecimalHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default java.math.BigDecimal getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface JavaMathBigDecimalHolder2 extends JavaMathBigDecimalHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default java.math.BigDecimal getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface JavaMathBigDecimalHolder2 extends JavaMathBigDecimalHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default java.math.BigDecimal getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_mixinProperty.java
index d9be2b5..9556500 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javamath.bigdecimals.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class JavaMathBigDecimalHolder_mixinProperty {
 
     private final JavaMathBigDecimalHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public java.math.BigDecimal prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/jdo/JavaMathBigDecimalJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/jdo/JavaMathBigDecimalJdo.java
index a4d1635..a80b0b3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/jdo/JavaMathBigDecimalJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/jdo/JavaMathBigDecimalJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javamath.bigdecimals.holder.JavaMathBigDecimalHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class JavaMathBigDecimalJdo                                          // <
 
 //tag::class[]
     @Title(prepend = "java.math.BigDecimalJDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private java.math.BigDecimal readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private java.math.BigDecimal readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private java.math.BigDecimal readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private java.math.BigDecimal readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/vm/JavaMathBigDecimalVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/vm/JavaMathBigDecimalVm.java
index 71d51c3..6f3a019 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/vm/JavaMathBigDecimalVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/vm/JavaMathBigDecimalVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javamath.bigdecimals.holder.JavaMathBigDecimalHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class JavaMathBigDecimalVm
 
 //tag::class[]
     @Title(prepend = "java.math.BigDecimalview model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private java.math.BigDecimal readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private java.math.BigDecimal readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private java.math.BigDecimal readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private java.math.BigDecimal readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder2.java
index c9c0a04..e7cbec2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javamath.bigintegers.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface JavaMathBigIntegerHolder2 extends JavaMathBigIntegerHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default java.math.BigInteger getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface JavaMathBigIntegerHolder2 extends JavaMathBigIntegerHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default java.math.BigInteger getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface JavaMathBigIntegerHolder2 extends JavaMathBigIntegerHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default java.math.BigInteger getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface JavaMathBigIntegerHolder2 extends JavaMathBigIntegerHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default java.math.BigInteger getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_mixinProperty.java
index 00a65a6..a2c0832 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javamath.bigintegers.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class JavaMathBigIntegerHolder_mixinProperty {
 
     private final JavaMathBigIntegerHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public java.math.BigInteger prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/jdo/JavaMathBigIntegerJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/jdo/JavaMathBigIntegerJdo.java
index cf5ff45..2fed00c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/jdo/JavaMathBigIntegerJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/jdo/JavaMathBigIntegerJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javamath.bigintegers.holder.JavaMathBigIntegerHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class JavaMathBigIntegerJdo                                          // <
 
 //tag::class[]
     @Title(prepend = "java.math.BigIntegerJDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private java.math.BigInteger readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private java.math.BigInteger readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private java.math.BigInteger readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private java.math.BigInteger readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/vm/JavaMathBigIntegerVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/vm/JavaMathBigIntegerVm.java
index 842efa6..d373c6e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/vm/JavaMathBigIntegerVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/vm/JavaMathBigIntegerVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javamath.bigintegers.holder.JavaMathBigIntegerHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class JavaMathBigIntegerVm
 
 //tag::class[]
     @Title(prepend = "java.math.BigIntegerview model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private java.math.BigInteger readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private java.math.BigInteger readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private java.math.BigInteger readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private java.math.BigInteger readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder2.java
index 9be1c01..2501789 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javanet.urls.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface JavaNetUrlHolder2 extends JavaNetUrlHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default java.net.URL getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface JavaNetUrlHolder2 extends JavaNetUrlHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default java.net.URL getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface JavaNetUrlHolder2 extends JavaNetUrlHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default java.net.URL getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface JavaNetUrlHolder2 extends JavaNetUrlHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default java.net.URL getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_mixinProperty.java
index 871da31..216181b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javanet.urls.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class JavaNetUrlHolder_mixinProperty {
 
     private final JavaNetUrlHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public java.net.URL prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/jdo/JavaNetUrlJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/jdo/JavaNetUrlJdo.java
index 52423d0..d1f9b30 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/jdo/JavaNetUrlJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/jdo/JavaNetUrlJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javanet.urls.holder.JavaNetUrlHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class JavaNetUrlJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "java.net.URL JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private java.net.URL readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private java.net.URL readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private java.net.URL readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private java.net.URL readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/vm/JavaNetUrlVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/vm/JavaNetUrlVm.java
index 06f3c59..492b3f7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/vm/JavaNetUrlVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/vm/JavaNetUrlVm.java
@@ -26,17 +26,16 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javanet.urls.holder.JavaNetUrlHolder2;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -58,24 +57,24 @@ public class JavaNetUrlVm
 
 //tag::class[]
     @Title(prepend = "java.net.URL view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
     private java.net.URL readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
     private java.net.URL readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Getter @Setter
     private java.net.URL readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Getter @Setter
     private java.net.URL readWriteOptionalProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder2.java
index e08c420..c77ed68 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javasql.javasqldate.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface JavaSqlDateHolder2 extends JavaSqlDateHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default java.sql.Date getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface JavaSqlDateHolder2 extends JavaSqlDateHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default java.sql.Date getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface JavaSqlDateHolder2 extends JavaSqlDateHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default java.sql.Date getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface JavaSqlDateHolder2 extends JavaSqlDateHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default java.sql.Date getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder3.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder3.java
index dda2a73..1bc813a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder3.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder3.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javasql.javasqldate.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.RenderDay;
@@ -33,9 +32,8 @@ public interface JavaSqlDateHolder3 extends JavaSqlDateHolder2 {
             renderDay = RenderDay.AS_DAY_BEFORE,                 // <.>
             describedAs = "@PropertyLayout(renderDay=AS_DAY_BEFORE)",
             labelPosition = LabelPosition.TOP,
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "render-day", sequence = "1")            // <.>
+            hidden = Where.ALL_TABLES,
+            group = "render-day", sequence = "1")            // <.>
     default java.sql.Date getReadOnlyPropertyDerivedRenderDayAsDayBefore() {
         return getReadOnlyProperty();
     }
@@ -45,9 +43,8 @@ public interface JavaSqlDateHolder3 extends JavaSqlDateHolder2 {
             renderDay = RenderDay.AS_DAY,                        // <.>
             describedAs = "@PropertyLayout(renderDay=AS_DAY)",
             labelPosition = LabelPosition.TOP,
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "render-day", sequence = "2")
+            hidden = Where.ALL_TABLES,
+            group = "render-day", sequence = "2")
     default java.sql.Date getReadOnlyPropertyDerivedRenderDayAsDay() {
         return getReadOnlyProperty();
     }
@@ -57,9 +54,8 @@ public interface JavaSqlDateHolder3 extends JavaSqlDateHolder2 {
             renderDay = RenderDay.NOT_SPECIFIED,                // <.>
             describedAs = "@PropertyLayout(renderDay=NOT_SPECIFIED)",
             labelPosition = LabelPosition.TOP,
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "render-day", sequence = "3")
+            hidden = Where.ALL_TABLES,
+            group = "render-day", sequence = "3")
     default java.sql.Date getReadOnlyPropertyDerivedRenderDayNotSpecified() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder_mixinProperty.java
index b8a37fd..f325a95 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javasql.javasqldate.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class JavaSqlDateHolder_mixinProperty {
 
     private final JavaSqlDateHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public java.sql.Date prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/jdo/JavaSqlDateJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/jdo/JavaSqlDateJdo.java
index 65b806e..bd09818 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/jdo/JavaSqlDateJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/jdo/JavaSqlDateJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javasql.javasqldate.holder.JavaSqlDateHolder3;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class JavaSqlDateJdo                                             // <.>
 
 //tag::class[]
     @Title(prepend = "java.sql.Date JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                       // <.>
     @Getter @Setter
     private java.sql.Date readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private java.sql.Date readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                       // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                        // <.>
     @Getter @Setter
     private java.sql.Date readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private java.sql.Date readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/vm/JavaSqlDateVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/vm/JavaSqlDateVm.java
index 810ce83..7de6ae5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/vm/JavaSqlDateVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/vm/JavaSqlDateVm.java
@@ -27,18 +27,17 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.jaxb.JavaSqlJaxbAdapters;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javasql.javasqldate.holder.JavaSqlDateHolder3;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -60,27 +59,27 @@ public class JavaSqlDateVm
 
 //tag::class[]
     @Title(prepend = "java.sql.Date view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @XmlJavaTypeAdapter(JavaSqlJaxbAdapters.DateToStringAdapter.class)                      // <.>
     @Getter @Setter
     private java.sql.Date readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @XmlJavaTypeAdapter(JavaSqlJaxbAdapters.DateToStringAdapter.class)
     @Getter @Setter
     private java.sql.Date readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @XmlJavaTypeAdapter(JavaSqlJaxbAdapters.DateToStringAdapter.class)
     @Getter @Setter
     private java.sql.Date readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @XmlJavaTypeAdapter(JavaSqlJaxbAdapters.DateToStringAdapter.class)
     @Getter @Setter
     private java.sql.Date readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder2.java
index 1e93237..225fed3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javasql.javasqltimestamp.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface JavaSqlTimestampHolder2 extends JavaSqlTimestampHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default java.sql.Timestamp getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface JavaSqlTimestampHolder2 extends JavaSqlTimestampHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default java.sql.Timestamp getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface JavaSqlTimestampHolder2 extends JavaSqlTimestampHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default java.sql.Timestamp getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface JavaSqlTimestampHolder2 extends JavaSqlTimestampHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default java.sql.Timestamp getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder3.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder3.java
index 2226efb..dc3c43a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder3.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder3.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javasql.javasqltimestamp.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.RenderDay;
@@ -33,9 +32,8 @@ public interface JavaSqlTimestampHolder3 extends JavaSqlTimestampHolder2 {
             renderDay = RenderDay.AS_DAY_BEFORE,                 // <.>
             describedAs = "@PropertyLayout(renderDay=AS_DAY_BEFORE)",
             labelPosition = LabelPosition.TOP,
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "render-day", sequence = "1")            // <.>
+            hidden = Where.ALL_TABLES,
+            group = "render-day", sequence = "1")            // <.>
     default java.sql.Timestamp getReadOnlyPropertyDerivedRenderDayAsDayBefore() {
         return getReadOnlyProperty();
     }
@@ -45,9 +43,8 @@ public interface JavaSqlTimestampHolder3 extends JavaSqlTimestampHolder2 {
             renderDay = RenderDay.AS_DAY,                        // <.>
             describedAs = "@PropertyLayout(renderDay=AS_DAY)",
             labelPosition = LabelPosition.TOP,
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "render-day", sequence = "2")
+            hidden = Where.ALL_TABLES,
+            group = "render-day", sequence = "2")
     default java.sql.Timestamp getReadOnlyPropertyDerivedRenderDayAsDay() {
         return getReadOnlyProperty();
     }
@@ -57,9 +54,8 @@ public interface JavaSqlTimestampHolder3 extends JavaSqlTimestampHolder2 {
             renderDay = RenderDay.NOT_SPECIFIED,                // <.>
             describedAs = "@PropertyLayout(renderDay=NOT_SPECIFIED)",
             labelPosition = LabelPosition.TOP,
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "render-day", sequence = "3")
+            hidden = Where.ALL_TABLES,
+            group = "render-day", sequence = "3")
     default java.sql.Timestamp getReadOnlyPropertyDerivedRenderDayNotSpecified() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder_mixinProperty.java
index 69e4ed5..0fb9f87 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javasql.javasqltimestamp.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class JavaSqlTimestampHolder_mixinProperty {
 
     private final JavaSqlTimestampHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public java.sql.Timestamp prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/jdo/JavaSqlTimestampJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/jdo/JavaSqlTimestampJdo.java
index 5276a79..41f2ad1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/jdo/JavaSqlTimestampJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/jdo/JavaSqlTimestampJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javasql.javasqltimestamp.holder.JavaSqlTimestampHolder3;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class JavaSqlTimestampJdo                                          // <.>
 
 //tag::class[]
     @Title(prepend = "java.sql.Timestamp JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private java.sql.Timestamp readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private java.sql.Timestamp readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private java.sql.Timestamp readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private java.sql.Timestamp readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/vm/JavaSqlTimestampVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/vm/JavaSqlTimestampVm.java
index 081ff48..52e6f12 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/vm/JavaSqlTimestampVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/vm/JavaSqlTimestampVm.java
@@ -27,18 +27,17 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.jaxb.JavaSqlJaxbAdapters;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javasql.javasqltimestamp.holder.JavaSqlTimestampHolder3;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -60,27 +59,27 @@ public class JavaSqlTimestampVm
 
 //tag::class[]
     @Title(prepend = "java.sql.Timestamp view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @XmlJavaTypeAdapter(JavaSqlJaxbAdapters.TimestampToStringAdapter.class)                 // <.>
     @Getter @Setter
     private java.sql.Timestamp readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @XmlJavaTypeAdapter(JavaSqlJaxbAdapters.TimestampToStringAdapter.class)
     @Getter @Setter
     private java.sql.Timestamp readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @XmlJavaTypeAdapter(JavaSqlJaxbAdapters.TimestampToStringAdapter.class)
     @Getter @Setter
     private java.sql.Timestamp readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @XmlJavaTypeAdapter(JavaSqlJaxbAdapters.TimestampToStringAdapter.class)
     @Getter @Setter
     private java.sql.Timestamp readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder2.java
index 3b6bdcd..06943cb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder2.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javatime.javatimelocaldate.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -32,9 +31,8 @@ public interface JavaTimeLocalDateHolder2 extends JavaTimeLocalDateHolder {
         labelPosition = LabelPosition.LEFT,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")  // <.>
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "1")  // <.>
     default java.time.LocalDate getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
@@ -44,9 +42,8 @@ public interface JavaTimeLocalDateHolder2 extends JavaTimeLocalDateHolder {
         labelPosition = LabelPosition.TOP,                  // <.>
         describedAs =
             "@PropertyLayout(labelPosition=TOP)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "2")
     default java.time.LocalDate getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
@@ -56,9 +53,8 @@ public interface JavaTimeLocalDateHolder2 extends JavaTimeLocalDateHolder {
         labelPosition = LabelPosition.RIGHT,                // <.>
         describedAs =
             "@PropertyLayout(labelPosition=RIGHT)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "3")
     default java.time.LocalDate getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
@@ -68,9 +64,8 @@ public interface JavaTimeLocalDateHolder2 extends JavaTimeLocalDateHolder {
         labelPosition = LabelPosition.NONE,                 // <.>
         describedAs =
             "@PropertyLayout(labelPosition=NONE)",
-        hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
+        hidden = Where.ALL_TABLES,
+        group = "label-positions", sequence = "4")
     default java.time.LocalDate getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder3.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder3.java
index e4cbc8f..f6ac984 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder3.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder3.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.javatime.javatimelocaldate.holder;
 
 import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.RenderDay;
@@ -33,9 +32,8 @@ public interface JavaTimeLocalDateHolder3 extends JavaTimeLocalDateHolder2 {
             renderDay = RenderDay.AS_DAY_BEFORE,                 // <.>
             describedAs = "@PropertyLayout(renderDay=AS_DAY_BEFORE)",
             labelPosition = LabelPosition.TOP,
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "render-day", sequence = "1")            // <.>
+            hidden = Where.ALL_TABLES,
+            group = "render-day", sequence = "1")            // <.>
     default java.time.LocalDate getReadOnlyPropertyDerivedRenderDayAsDayBefore() {
         return getReadOnlyProperty();
     }
@@ -45,9 +43,8 @@ public interface JavaTimeLocalDateHolder3 extends JavaTimeLocalDateHolder2 {
             renderDay = RenderDay.AS_DAY,                        // <.>
             describedAs = "@PropertyLayout(renderDay=AS_DAY)",
             labelPosition = LabelPosition.TOP,
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "render-day", sequence = "2")
+            hidden = Where.ALL_TABLES,
+            group = "render-day", sequence = "2")
     default java.time.LocalDate getReadOnlyPropertyDerivedRenderDayAsDay() {
         return getReadOnlyProperty();
     }
@@ -57,9 +54,8 @@ public interface JavaTimeLocalDateHolder3 extends JavaTimeLocalDateHolder2 {
             renderDay = RenderDay.NOT_SPECIFIED,                // <.>
             describedAs = "@PropertyLayout(renderDay=NOT_SPECIFIED)",
             labelPosition = LabelPosition.TOP,
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "render-day", sequence = "3")
+            hidden = Where.ALL_TABLES,
+            group = "render-day", sequence = "3")
     default java.time.LocalDate getReadOnlyPropertyDerivedRenderDayNotSpecified() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder_mixinProperty.java
index 8de7109..746af49 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder_mixinProperty.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.javatime.javatimelocaldate.holder;
 
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -28,13 +27,12 @@ import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
+@PropertyLayout(hidden = Where.ALL_TABLES, group = "contributed", sequence = "1")
 @RequiredArgsConstructor
 public class JavaTimeLocalDateHolder_mixinProperty {
 
     private final JavaTimeLocalDateHolder holder;
 
-    @MemberOrder(name = "contributed", sequence = "1")
     public java.time.LocalDate prop() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/jdo/JavaTimeLocalDateJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/jdo/JavaTimeLocalDateJdo.java
index 2ce2d85..0ed4b55 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/jdo/JavaTimeLocalDateJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/jdo/JavaTimeLocalDateJdo.java
@@ -26,16 +26,15 @@ import javax.jdo.annotations.PersistenceCapable;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javatime.javatimelocaldate.holder.JavaTimeLocalDateHolder3;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -54,25 +53,25 @@ public class JavaTimeLocalDateJdo                                          // <.
 
 //tag::class[]
     @Title(prepend = "java.time.LocalDate JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @PropertyLayout(group = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
     private java.time.LocalDate readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
+    @PropertyLayout(group = "editable-properties", sequence = "1")
     @Column(allowsNull = "false")
     @Getter @Setter
     private java.time.LocalDate readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
+    @PropertyLayout(group = "optional-properties", sequence = "1")
     @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
     private java.time.LocalDate readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
+    @PropertyLayout(group = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
     private java.time.LocalDate readWriteOptionalProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/vm/JavaTimeLocalDateVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/vm/JavaTimeLocalDateVm.java
index 71544e4..1487de0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/vm/JavaTimeLocalDateVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/vm/JavaTimeLocalDateVm.java
@@ -27,18 +27,17 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.jaxb.JavaTimeJaxbAdapters;
 
-import lombok.Getter;
-import lombok.Setter;
-
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.javatime.javatimelocaldate.holder.JavaTimeLocalDateHolder3;
+import lombok.Getter;
+import lombok.Setter;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -60,27 +59,27 @@ public class JavaTimeLocalDateVm
 
 //tag::class[]
... 6071 lines suppressed ...