You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2019/09/24 07:10:52 UTC

[isis] 06/07: ISIS-2062: inlines partials for rg:ant

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

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

commit fef6b1cad9971c86efe0a4ec429fe7715f1a063f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Sep 24 07:10:40 2019 +0100

    ISIS-2062: inlines partials for rg:ant
---
 .../components/toc/modules/ROOT/pages/about.adoc   |  26 +--
 .../pages/what-is-apache-isis/screencasts.adoc     |  24 +--
 antora/theme/ui-bundle.zip                         | Bin 280352 -> 280466 bytes
 core/_adoc-rg/modules/ROOT/pages/about.adoc        |  19 --
 core/_adoc-rg/modules/ant/nav.adoc                 | 222 ---------------------
 core/_adoc-rg/modules/ant/pages/Action.adoc        |  29 ++-
 .../modules/ant/pages/Action/domainEvent.adoc      |   4 +-
 core/_adoc-rg/modules/ant/pages/Action/hidden.adoc |   8 +-
 .../modules/ant/pages/Action/publishing.adoc       |   4 +-
 core/_adoc-rg/modules/ant/pages/Action/typeOf.adoc |   2 +-
 core/_adoc-rg/modules/ant/pages/ActionLayout.adoc  |  28 ++-
 .../ant/pages/ActionLayout/bookmarking.adoc        |   6 +-
 .../ant/pages/ActionLayout/contributedAs.adoc      |   4 +-
 .../modules/ant/pages/ActionLayout/cssClass.adoc   |  12 +-
 .../modules/ant/pages/ActionLayout/cssClassFa.adoc |   4 +-
 .../ant/pages/ActionLayout/describedAs.adoc        |  10 +-
 .../modules/ant/pages/ActionLayout/hidden.adoc     |   8 +-
 .../modules/ant/pages/ActionLayout/named.adoc      |  12 +-
 .../modules/ant/pages/ActionLayout/redirect.adoc   |   2 +-
 core/_adoc-rg/modules/ant/pages/Collection.adoc    |  15 +-
 .../modules/ant/pages/Collection/domainEvent.adoc  |   4 +-
 .../modules/ant/pages/Collection/editing.adoc      |   6 +-
 .../modules/ant/pages/Collection/hidden.adoc       |   6 +-
 .../modules/ant/pages/Collection/notPersisted.adoc |   2 +-
 .../modules/ant/pages/Collection/typeOf.adoc       |   2 +-
 .../modules/ant/pages/CollectionLayout.adoc        |  21 +-
 .../ant/pages/CollectionLayout/cssClass.adoc       |  10 +-
 .../ant/pages/CollectionLayout/defaultView.adoc    |   2 +-
 .../ant/pages/CollectionLayout/describedAs.adoc    |   2 +-
 .../modules/ant/pages/CollectionLayout/hidden.adoc |   6 +-
 .../modules/ant/pages/CollectionLayout/named.adoc  |  12 +-
 .../modules/ant/pages/CollectionLayout/paged.adoc  |   4 +-
 core/_adoc-rg/modules/ant/pages/Column.adoc        |   6 +-
 core/_adoc-rg/modules/ant/pages/DomainObject.adoc  |  43 ++--
 .../ant/pages/DomainObject/actionDomainEvent.adoc  |   2 +-
 .../pages/DomainObject/autoCompleteRepository.adoc |   4 +-
 .../modules/ant/pages/DomainObject/bounding.adoc   |   2 +-
 .../pages/DomainObject/collectionDomainEvent.adoc  |   2 +-
 .../pages/DomainObject/propertyDomainEvent.adoc    |   2 +-
 .../modules/ant/pages/DomainObject/publishing.adoc |   4 +-
 .../modules/ant/pages/DomainObjectLayout.adoc      |  33 ++-
 .../ant/pages/DomainObjectLayout/bookmarking.adoc  |   4 +-
 .../ant/pages/DomainObjectLayout/cssClass.adoc     |  12 +-
 .../ant/pages/DomainObjectLayout/cssClassFa.adoc   |   6 +-
 .../pages/DomainObjectLayout/cssClassUiEvent.adoc  |   2 +-
 .../ant/pages/DomainObjectLayout/describedAs.adoc  |  10 +-
 .../ant/pages/DomainObjectLayout/iconUiEvent.adoc  |   2 +-
 .../pages/DomainObjectLayout/layoutUiEvent.adoc    |   2 +-
 .../ant/pages/DomainObjectLayout/named.adoc        |  14 +-
 .../ant/pages/DomainObjectLayout/paged.adoc        |   4 +-
 .../ant/pages/DomainObjectLayout/plural.adoc       |   2 +-
 .../ant/pages/DomainObjectLayout/titleUiEvent.adoc |   2 +-
 core/_adoc-rg/modules/ant/pages/DomainService.adoc |  13 +-
 .../modules/ant/pages/DomainService/nature.adoc    |   2 +-
 .../ant/pages/DomainService/repositoryFor.adoc     |   2 +-
 .../modules/ant/pages/DomainServiceLayout.adoc     |   9 +-
 .../ant/pages/DomainServiceLayout/menuBar.adoc     |   2 +-
 .../ant/pages/DomainServiceLayout/menuOrder.adoc   |   4 +-
 .../ant/pages/DomainServiceLayout/named.adoc       |  14 +-
 core/_adoc-rg/modules/ant/pages/Inject.adoc        |   2 +-
 core/_adoc-rg/modules/ant/pages/MemberOrder.adoc   |   4 +-
 core/_adoc-rg/modules/ant/pages/Mixin.adoc         |   5 +-
 core/_adoc-rg/modules/ant/pages/Nullable.adoc      |   6 +-
 core/_adoc-rg/modules/ant/pages/Parameter.adoc     |  15 +-
 .../modules/ant/pages/Parameter/fileAccept.adoc    |   2 +-
 .../modules/ant/pages/Parameter/maxLength.adoc     |   2 +-
 .../modules/ant/pages/Parameter/mustSatisfy.adoc   |   4 +-
 .../modules/ant/pages/Parameter/optionality.adoc   |   2 +-
 .../modules/ant/pages/Parameter/regexPattern.adoc  |   2 +-
 .../modules/ant/pages/ParameterLayout.adoc         |  25 ++-
 .../ant/pages/ParameterLayout/cssClass.adoc        |  12 +-
 .../ant/pages/ParameterLayout/describedAs.adoc     |   2 +-
 .../ant/pages/ParameterLayout/labelPosition.adoc   |   6 +-
 .../ant/pages/ParameterLayout/multiLine.adoc       |   4 +-
 .../modules/ant/pages/ParameterLayout/named.adoc   |  12 +-
 .../pages/ParameterLayout/renderedAsDayBefore.adoc |   2 +-
 .../ant/pages/ParameterLayout/typicalLength.adoc   |   2 +-
 core/_adoc-rg/modules/ant/pages/Property.adoc      |  36 ++--
 .../modules/ant/pages/Property/command.adoc        |   2 +-
 .../modules/ant/pages/Property/domainEvent.adoc    |   4 +-
 .../modules/ant/pages/Property/editing.adoc        |   4 +-
 .../modules/ant/pages/Property/fileAccept.adoc     |   2 +-
 .../modules/ant/pages/Property/hidden.adoc         |   6 +-
 .../modules/ant/pages/Property/maxLength.adoc      |   2 +-
 .../modules/ant/pages/Property/mustSatisfy.adoc    |   4 +-
 .../modules/ant/pages/Property/notPersisted.adoc   |   2 +-
 .../modules/ant/pages/Property/optionality.adoc    |   2 +-
 .../modules/ant/pages/Property/publishing.adoc     |   4 +-
 .../modules/ant/pages/Property/regexPattern.adoc   |   2 +-
 .../_adoc-rg/modules/ant/pages/PropertyLayout.adoc |  36 ++--
 .../modules/ant/pages/PropertyLayout/cssClass.adoc |  10 +-
 .../ant/pages/PropertyLayout/describedAs.adoc      |   2 +-
 .../modules/ant/pages/PropertyLayout/hidden.adoc   |   6 +-
 .../ant/pages/PropertyLayout/labelPosition.adoc    |   4 +-
 .../ant/pages/PropertyLayout/multiLine.adoc        |   4 +-
 .../modules/ant/pages/PropertyLayout/named.adoc    |  12 +-
 .../pages/PropertyLayout/renderedAsDayBefore.adoc  |   2 +-
 .../ant/pages/PropertyLayout/typicalLength.adoc    |   2 +-
 core/_adoc-rg/modules/ant/pages/ViewModel.adoc     |  10 +-
 .../modules/ant/pages/ViewModel/objectType.adoc    |   2 +-
 .../modules/ant/pages/ViewModelLayout.adoc         |  34 ++--
 .../ant/pages/ViewModelLayout/bookmarking.adoc     |   2 +-
 .../ant/pages/ViewModelLayout/cssClass.adoc        |   2 +-
 .../ant/pages/ViewModelLayout/cssClassFa.adoc      |   2 +-
 .../ant/pages/ViewModelLayout/cssClassUiEvent.adoc |   2 +-
 .../ant/pages/ViewModelLayout/describedAs.adoc     |   2 +-
 .../ant/pages/ViewModelLayout/iconUiEvent.adoc     |   2 +-
 .../ant/pages/ViewModelLayout/layoutUiEvent.adoc   |   2 +-
 .../modules/ant/pages/ViewModelLayout/named.adoc   |   2 +-
 .../modules/ant/pages/ViewModelLayout/paged.adoc   |   2 +-
 .../modules/ant/pages/ViewModelLayout/plural.adoc  |   2 +-
 .../ant/pages/ViewModelLayout/titleUiEvent.adoc    |   2 +-
 core/_adoc-rg/modules/ant/pages/aaa.adoc           |   5 +
 .../modules/cfg/pages/configuring-core.adoc        |  50 ++---
 .../modules/cfg/pages/deployment-types.adoc        |   2 +-
 .../modules/cms/pages/classes/domainevent.adoc     |   2 +-
 .../classes/domainevent/ActionDomainEvent.adoc     |   2 +-
 .../classes/domainevent/CollectionDomainEvent.adoc |   2 +-
 .../classes/domainevent/PropertyDomainEvent.adoc   |   2 +-
 .../classes/lifecycleevent/ObjectCreatedEvent.adoc |   2 +-
 .../lifecycleevent/ObjectPersistedEvent.adoc       |   2 +-
 .../lifecycleevent/ObjectPersistingEvent.adoc      |   2 +-
 .../lifecycleevent/ObjectRemovingEvent.adoc        |   2 +-
 .../classes/lifecycleevent/ObjectUpdatedEvent.adoc |   2 +-
 .../lifecycleevent/ObjectUpdatingEvent.adoc        |   2 +-
 core/_adoc-rg/modules/cms/pages/classes/spec.adoc  |   2 +-
 .../cms/pages/classes/super/AbstractService.adoc   |   2 +-
 .../pages/classes/super/AbstractSubscriber.adoc    |   2 +-
 .../modules/cms/pages/classes/uievent.adoc         |   2 +-
 .../modules/cms/pages/methods/prefixes.adoc        |   2 +-
 .../modules/cms/pages/methods/reserved/getId.adoc  |   2 +-
 core/_adoc-rg/modules/cms/pages/schema/chg.adoc    |   2 +-
 core/_adoc-rg/modules/cms/pages/schema/common.adoc |   2 +-
 .../modules/fis/pages/application-layer.adoc       |   4 +-
 .../PersistenceSessionServiceInternal.adoc         |  10 +-
 .../PublishingServiceInternal.adoc                 |   8 +-
 .../ContentNegotiationService.adoc                 |   2 +-
 .../presentation-layer/RepresentationService.adoc  |   2 +-
 .../ActionInvocationContext.adoc                   |   4 +-
 .../application-layer-api/BackgroundService.adoc   |   4 +-
 .../application-layer-api/CommandContext.adoc      |  12 +-
 .../application-layer-api/InteractionContext.adoc  |   4 +-
 .../application-layer-api/MessageService.adoc      |   2 +-
 .../SessionManagementService.adoc                  |   2 +-
 .../application-layer-api/WrapperFactory.adoc      |   2 +-
 .../BackgroundCommandService.adoc                  |   2 +-
 .../application-layer-spi/CommandService.adoc      |   2 +-
 .../bootstrapping-spi/ClassDiscoveryService.adoc   |   2 +-
 .../modules/svc/pages/core-domain-api.adoc         |   6 +-
 .../svc/pages/core-domain-api/EventBusService.adoc |  14 +-
 .../svc/pages/core-domain-api/Scratchpad.adoc      |   4 +-
 .../svc/pages/integration-api/BookmarkService.adoc |   4 +-
 .../svc/pages/integration-api/JaxbService.adoc     |   2 +-
 .../svc/pages/integration-api/MementoService.adoc  |   4 +-
 core/_adoc-rg/modules/svc/pages/intro.adoc         |  12 +-
 core/_adoc-rg/modules/svc/pages/metadata-api.adoc  |   5 +-
 .../svc/pages/metadata-api/MetamodelService.adoc   |   2 +-
 .../svc/pages/metadata-api/SwaggerService.adoc     |   8 +-
 .../persistence-layer-api/QueryResultsCache.adoc   |   4 +-
 .../persistence-layer-spi/AuditerService.adoc      |   2 +-
 .../persistence-layer-spi/PublisherService.adoc    |  10 +-
 .../AcceptHeaderService.adoc                       |   4 +-
 .../presentation-layer-api/GuiceBeanProvider.adoc  |   2 +-
 .../ContentMappingService.adoc                     |   4 +-
 .../presentation-layer-spi/GridSystemService.adoc  |   4 +-
 .../pages/presentation-layer-spi/HintStore.adoc    |   2 +-
 .../presentation-layer-spi/RoutingService.adoc     |   4 +-
 .../TableColumnOrderService.adoc                   |   4 +-
 .../presentation-layer-spi/UrlEncodingService.adoc |   2 +-
 core/_adoc-ug/modules/ROOT/pages/about.adoc        |  25 +--
 core/_adoc-ug/modules/btb/nav.adoc                 |  21 --
 core/_adoc-ug/modules/btb/pages/about.adoc         |   3 +-
 core/_adoc-ug/modules/btb/pages/deployment.adoc    |   7 +
 .../btb/pages/hints-and-tips/are-you-sure.adoc     |   2 +-
 .../how-to-implement-a-spellchecker.adoc           |   4 +-
 .../replacing-default-service-implementations.adoc |   2 +-
 .../modules/btb/pages/programming-model.adoc       |   2 +
 .../pages/programming-model/custom-validator.adoc  |  11 +-
 .../building-blocks/events/domain-events.adoc      |   2 +-
 .../building-blocks/events/lifecycle-events.adoc   |   4 +-
 .../pages/building-blocks/events/ui-events.adoc    |   4 +-
 .../modules/fun/pages/business-rules/validity.adoc |   2 +-
 .../modules/fun/pages/drop-downs-and-defaults.adoc |   4 +-
 .../fun/pages/programming-model/actions.adoc       |   6 +-
 .../programming-model/domain-services/menu.adoc    |   2 +-
 .../fun/pages/programming-model/mixins.adoc        |   2 +-
 .../pages/programming-model/view-models/dto.adoc   |   2 +-
 .../programming-model/view-models/non-jaxb.adoc    |   2 +-
 .../fun/pages/ui-hints/action-icons-and-css.adoc   |  10 +-
 .../fun/pages/ui-hints/eager-rendering.adoc        |   2 +-
 .../fun/pages/ui-hints/names-and-descriptions.adoc |  20 +-
 .../pages/ui-hints/object-titles-and-icons.adoc    |  10 +-
 .../ROOT/pages/configuration-properties.adoc       |   8 +-
 .../ROOT/pages/features/bookmarked-pages.adoc      |   2 +-
 .../ROOT/pages/layout/annotation-based.adoc        |   8 +-
 .../simpleapp/_adoc/modules/ROOT/pages/about.adoc  |   8 +-
 .../modules/simple/SimpleModuleManifest.java       |  37 ----
 197 files changed, 667 insertions(+), 848 deletions(-)

diff --git a/antora/components/toc/modules/ROOT/pages/about.adoc b/antora/components/toc/modules/ROOT/pages/about.adoc
index f76d68f..493b38c 100644
--- a/antora/components/toc/modules/ROOT/pages/about.adoc
+++ b/antora/components/toc/modules/ROOT/pages/about.adoc
@@ -17,12 +17,12 @@ include::_attributes.adoc[]
 * xref:what-is-apache-isis/screencasts.adoc[Screencasts]
 * xref:what-is-apache-isis/powered-by.adoc[Powered By]
 
-| *Starter Apps*
+| *xref:toc:ROOT:quick-start.adoc#starter-apps[Starter Apps]*
 
 * xref:helloworld:ROOT:about.adoc[HelloWorld]
 * xref:simpleapp:ROOT:about.adoc[SimpleApp]
 
-| *User Guides*
+| *xref:toc:ROOT:guides.adoc#user-guides[User Guides]*
 
 * *xref:ug:ROOT:about.adoc[Fundamentals & Beyond]*
 * *xref:demoapp:ROOT:about.adoc[Demo App]*
@@ -31,14 +31,14 @@ _Tutorials:_
 
 * link:https://danhaywood.gitlab.io/isis-petclinic-tutorial-docs/petclinic/1.16.2/intro.html[Petclinic]
 
-| *Reference Guides*
+| *xref:toc:ROOT:guides.adoc#reference-guides[Reference Guides]*
 
 * *xref:rg:ant:about.adoc[Annotations]*
 * *xref:rg:svc:about.adoc[Domain Services]*
 *  xref:rg:cfg:about.adoc[Core Config'n Properties]
 *  xref:rg:cms:about.adoc[Classes, Methods & Schema]
 
-| *Testing & Prototyping*
+| *xref:toc:ROOT:guides.adoc#testing-prototyping[Testing & Prototyping]*
 
 * *xref:testing:ROOT:about.adoc[Testing]*
 
@@ -50,7 +50,7 @@ _Extensions_
 
 
 
-| *Wicket Viewer*
+| *xref:toc:ROOT:components.adoc#wicket-viewer[Wicket Viewer]*
 
 * xref:vw:ROOT:about.adoc[User Guide]
 
@@ -60,7 +60,7 @@ _Extensions:_
 * xref:ext-asciidoc:ROOT:about.adoc[Asciidoc value type ]
 * xref:ext-markdown:ROOT:about.adoc[Markdown value type]
 
-| *Restful Objects Viewer*
+| *xref:toc:ROOT:components.adoc#restful-objects-viewer[Restful Objects Viewer]*
 
 * xref:vro:ROOT:about.adoc[User Guide]
 
@@ -69,11 +69,11 @@ _3rd Party (not ASF):_
 ** link:https://github/TODO/TODO[Seb's viewer]
 ** link:https://github/TODO/TODO[Joerg's viewer]
 
-*DataNucleus Object Store*
+*xref:toc:ROOT:components.adoc#datanucleus-object-store[DataNucleus Object Store]*
 
 *  xref:odn:ROOT:about.adoc[User Guide]
 
-| *Security*
+| *xref:toc:ROOT:components.adoc#security[Security]*
 
 *  xref:security:ROOT:about.adoc[User Guide]
 
@@ -81,7 +81,7 @@ _Extensions:_
 
 * xref:ext-secman:ROOT:about.adoc[Security Manager]
 
-| *Support Resources*
+| *xref:toc:ROOT:support.adoc#resources[Support Resources]*
 
 * xref:toc:devguide:about.adoc[Developers' Guide]
 ** xref:toc:devguide:about.adoc#intellij[IntelliJ] & xref:toc:devguide:about.adoc#eclipse[Eclipse]
@@ -90,14 +90,14 @@ _Extensions:_
 
 * xref:mavendeps:ROOT:about.adoc[Maven mixins]
 
-| *Help*
+| xref:toc:ROOT:support.adoc#help[*Help]*
 
 * xref:toc:ROOT:mailing-list/how-to-subscribe.adoc[How to subscribe]
 
 * link:https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=87[JIRA] +
 _for bug reports & feature requests_
 
-|*Releases*
+|*xref:toc:ROOT:support.adoc#releases[Releases]*
 
  * xref:toc:ROOT:downloads/how-to.adoc[Downloads]
  * xref:relnotes:ROOT:about.adoc[Release Notes]
@@ -106,14 +106,14 @@ _for bug reports & feature requests_
 
 
 
-|*Committers*
+|*xref:toc:ROOT:internal.adoc#committers[Committers]*
 
 *  xref:toc:comguide:about.adoc[Committers' Guide]
 ** xref:toc:comguide:about.adoc#cutting-a-release[Cutting a Release]
 ** xref:toc:comguide:about.adoc#verifying-releases[Verifying a Release]
 
 
-|*Implementation*
+|*xref:toc:ROOT:internal.adoc#implementation[Implementation]*
 
 *  xref:archdesign:ROOT:about.adoc[Architecture & Design]
 *  xref:rg:fis:about.adoc[Framework Internal Services]
diff --git a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
index 2c8dde6..bc2b658 100644
--- a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
+++ b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
@@ -103,7 +103,7 @@ Writing end-to-end xref:testing:ROOT:integ-test-support.adoc[integration tests]
 
 
 
-12+| [big]#*Swagger UI, Maven plugin*#
+11+| [big]#*Swagger UI*#
 
 include::partial$_screencasts-playlists.adoc[]
 
@@ -113,10 +113,10 @@ Using the Swagger UI to access the xref:vro:ROOT:about.adoc[REST API] automatica
 
 
 
-
-|link:https://www.youtube.com/watch?v=yOh3WphhR1E[010^] +
-Using the xref:rg:mvn:about.adoc[Apache Isis maven plugin] to validate domain object models during the build process (rather than at runtime).
-||||||||x|||
+// FIXME: currently removed in v2, may reinstate
+//|link:https://www.youtube.com/watch?v=yOh3WphhR1E[010^].
+//Using the xref:rg:mvn:about.adoc[Apache Isis maven plugin] to validate domain object models during the build process (rather than at runtime).
+//||||||||x|||
 
 
 
@@ -145,7 +145,7 @@ Implementing business logic using a (no-arg) action, and associating with a prop
 
 
 |link:https://www.youtube.com/watch?v=0naoVsWppuQ[013^] +
-Invoking (no-arg) action on multiple objects at once (using xref:rg:ant:Action/invokeOn.adoc[`@Action#invokeOn()`], and using the xref:rg:svc:application-layer-api/ActionInvocationContext.adoc[`ActionInvocationContext`] domain service for a smoother end-user experience.
+Invoking (no-arg) action on multiple objects at once (using xref:rg:ant:Action.adoc#invokeOn[`@Action#invokeOn()`], and using the xref:rg:svc:application-layer-api/ActionInvocationContext.adoc[`ActionInvocationContext`] domain service for a smoother end-user experience.
 |||x||||||x||
 
 
@@ -165,7 +165,7 @@ Using the xref:rg:cms:methods/reserved/title.adoc[`title()`], xref:rg:cms:method
 
 
 |link:https://www.youtube.com/watch?v=7ToRKBOeemM[015^] +
-Moving the responsibility to specify the icon for a domain object out and into a subscriber, using the xref:rg:cms:classes/uievent/IconUiEvent.adoc[`IconUiEvent`] as per the xref:rg:ant:DomainObjectLayout/iconUiEvent.adoc[`@DomainObjectLayout#iconUiEvent()`] annotation
+Moving the responsibility to specify the icon for a domain object out and into a subscriber, using the xref:rg:cms:classes/uievent/IconUiEvent.adoc[`IconUiEvent`] as per the xref:rg:ant:DomainObjectLayout.adoc#iconUiEvent[`@DomainObjectLayout#iconUiEvent()`] annotation
 ||||||x|||||
 
 
@@ -225,7 +225,7 @@ Demonstrates how the end-user can copy and share URLs for domain objects - inclu
 
 
 |link:https://www.youtube.com/watch?v=a0QQLT_16To[021^] +
-Demonstrates how the end-user can use bookmarks and breadcrumbs within Apache Isis' xref:vw:ROOT:about.adoc[Wicket viewer], and how the developer can ensure that xref:rg:ant:DomainObjectLayout/bookmarking.adoc[domain objects] and (xref:rg:ant:Action/semantics.adoc[query-only]) xref:rg:ant:ActionLayout/bookmarking.adoc[actions] can be bookmarked.
+Demonstrates how the end-user can use bookmarks and breadcrumbs within Apache Isis' xref:vw:ROOT:about.adoc[Wicket viewer], and how the developer can ensure that xref:rg:ant:DomainObjectLayout.adoc#bookmarking[domain objects] and (xref:rg:ant:Action.adoc#semantics[query-only]) xref:rg:ant:ActionLayout.adoc#bookmarking[actions] can be bookmarked.
 |||x||||||||
 
 
@@ -307,7 +307,7 @@ Using link:https://projectlombok.org/[Project Lombok] to remove boilerplate from
 
 
 |link:https://www.youtube.com/watch?v=AXuxULuRtm0[029^] +
-Using the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s paraname8 metamodel extension to remove boilerplate from your domain object (xref:rg:ant:ParameterLayout/named.adoc[`@ParameterLayout#named()`] annotation attribute on action parameters).
+Using the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s paraname8 metamodel extension to remove boilerplate from your domain object (xref:rg:ant:ParameterLayout.adoc#named[`@ParameterLayout#named()`] annotation attribute on action parameters).
 |||||x|||x|||
 
 
@@ -328,7 +328,7 @@ How to validate action parameters using a supporting xref:rg:cms:methods/prefixe
 
 
 |link:https://www.youtube.com/watch?v=1Vlzob89pYI[031^] +
-How to validate action parameters using the xref:rg:ant:Parameter/mustSatisfy.adoc[`@Parameter#mustSatisfy()`]  and the Specification interface.
+How to validate action parameters using the xref:rg:ant:Parameter.adoc#mustSatisfy[`@Parameter#mustSatisfy()`]  and the Specification interface.
 |||||||||x||
 
 
@@ -387,7 +387,7 @@ include::partial$_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=1SCyBlMM2Bo[037^] +
-How to hide properties as columns in tables (parented collections or standalone collections), using the dynamic XML layout (equivalent to xref:rg:ant:PropertyLayout/hidden.adoc[`@PropertyLayout#hidden()`]).
+How to hide properties as columns in tables (parented collections or standalone collections), using the dynamic XML layout (equivalent to xref:rg:ant:PropertyLayout.adoc#hidden[`@PropertyLayout#hidden()`]).
 ||||x|||||||
 
 
@@ -451,7 +451,7 @@ How to use the supporting xref:rg:cms:methods/prefixes/default.adoc[`defaultXxx(
 
 
 |link:https://www.youtube.com/watch?v=qAJDGxztWIQ[044^] +
-How to use xref:rg:ant:DomainObject/bounding.adoc[`@DomainObject#bounding()`] so that a drop-down list is automatically provided for any parameters to actions that are for (domain entity) reference types.
+How to use xref:rg:ant:DomainObject.adoc#bounding[`@DomainObject#bounding()`] so that a drop-down list is automatically provided for any parameters to actions that are for (domain entity) reference types.
 |||||||||x||
 
 
diff --git a/antora/theme/ui-bundle.zip b/antora/theme/ui-bundle.zip
index d8a967e..6ebe3e1 100644
Binary files a/antora/theme/ui-bundle.zip and b/antora/theme/ui-bundle.zip differ
diff --git a/core/_adoc-rg/modules/ROOT/pages/about.adoc b/core/_adoc-rg/modules/ROOT/pages/about.adoc
index 6584074..8c6b4b0 100644
--- a/core/_adoc-rg/modules/ROOT/pages/about.adoc
+++ b/core/_adoc-rg/modules/ROOT/pages/about.adoc
@@ -1,29 +1,10 @@
 = Reference Guides
 include::_attributes.adoc[]
 
-Apache Isis documentation is broken out into a number of user, reference and "supporting procedures" guides.
-
-The user guides available are:
-
-* xref:ug:fun:about.adoc[Fundamentals]
-* xref:vw:ROOT:about.adoc[Wicket viewer]
-* xref:vro:ROOT:about.adoc[Restful Objects viewer]
-* xref:odn:ROOT:about.adoc[DataNucleus object store]
-* xref:security:ROOT:about.adoc[Security] (this guide)
-* xref:testing:ROOT:about.adoc[Testing]
-* xref:ug:btb:about.adoc[Beyond the Basics]
-
 The reference guides are:
 
 * xref:rg:ant:about.adoc[Annotations]
 * xref:rg:svc:about.adoc[Domain Services]
 * xref:rg:cfg:about.adoc[Configuration Properties]
 * xref:rg:cms:about.adoc[Classes, Methods and Schema]
-* xref:rg:mvn:about.adoc[Apache Isis Maven plugin]
-* xref:rg:fis:about.adoc[Framework Internal Services]
-
-The remaining guides are:
-
-* xref:toc:devguide:about.adoc[Developers' Guide] (how to set up a development environment for Apache Isis and contribute back to the project)
-* xref:toc:comguide:about.adoc[Committers' Guide]
 
diff --git a/core/_adoc-rg/modules/ant/nav.adoc b/core/_adoc-rg/modules/ant/nav.adoc
index 1902dd5..837ee33 100644
--- a/core/_adoc-rg/modules/ant/nav.adoc
+++ b/core/_adoc-rg/modules/ant/nav.adoc
@@ -1,262 +1,40 @@
 * xref:about.adoc[Annotations]
 
 ** xref:aaa.adoc[Summary]
-*** xref:aaa/main.adoc[Main]
-*** xref:aaa/other.adoc[Other]
-*** xref:aaa/jdo.adoc[JDO]
-*** xref:aaa/jee.adoc[JEE]
-*** xref:aaa/partial.adoc[Partial]
-
-
-
 ** xref:Action.adoc[Action]
-*** xref:Action/associateWith.adoc[associateWith]
-*** xref:Action/command.adoc[command]
-*** xref:Action/domainEvent.adoc[domainEvent]
-*** xref:Action/hidden.adoc[hidden]
-*** xref:Action/invokeOn.adoc[invokeOn]
-*** xref:Action/publishing.adoc[publishing]
-*** xref:Action/restrictTo.adoc[restrictTo]
-*** xref:Action/semantics.adoc[semantics]
-*** xref:Action/typeOf.adoc[typeOf]
-
-
-
 ** xref:ActionLayout.adoc[ActionLayout]
-*** xref:ActionLayout/bookmarking.adoc[bookmarking]
-*** xref:ActionLayout/contributedAs.adoc[contributedAs]
-*** xref:ActionLayout/cssClass.adoc[cssClass]
-*** xref:ActionLayout/cssClassFa.adoc[cssClassFa]
-*** xref:ActionLayout/describedAs.adoc[describedAs]
-*** xref:ActionLayout/hidden.adoc[hidden]
-*** xref:ActionLayout/named.adoc[named]
-*** xref:ActionLayout/position.adoc[position]
-
-
-
 ** xref:Collection.adoc[Collection]
-*** xref:Collection/domainEvent.adoc[domainEvent]
-*** xref:Collection/editing.adoc[editing]
-*** xref:Collection/hidden.adoc[hidden]
-*** xref:Collection/notPersisted.adoc[notPersisted]
-*** xref:Collection/typeOf.adoc[typeOf]
-
-
-
 ** xref:CollectionLayout.adoc[CollectionLayout]
-*** xref:CollectionLayout/cssClass.adoc[cssClass]
-*** xref:CollectionLayout/defaultView.adoc[defaultView]
-*** xref:CollectionLayout/describedAs.adoc[describedAs]
-*** xref:CollectionLayout/hidden.adoc[hidden]
-*** xref:CollectionLayout/named.adoc[named]
-*** xref:CollectionLayout/paged.adoc[paged]
-*** xref:CollectionLayout/sortedBy.adoc[sortedBy]
-
-
-
 ** xref:Column.adoc[Column]
-
-
-
 ** xref:Digits.adoc[Digits]
-
-
-
 ** xref:Discriminator.adoc[Discriminator]
-
-
-
 ** xref:DomainObject.adoc[DomainObject]
-*** xref:DomainObject/auditing.adoc[auditing]
-*** xref:DomainObject/autoCompleteRepository.adoc[autoCompleteRepository]
-*** xref:DomainObject/bounding.adoc[bounding]
-*** xref:DomainObject/createdLifecycleEvent.adoc[createdLifecycleEvent]
-*** xref:DomainObject/editing.adoc[editing]
-*** xref:DomainObject/loadedLifecycleEvent.adoc[loadedLifecycleEvent]
-*** xref:DomainObject/mixinMethod.adoc[mixinMethod]
-*** xref:DomainObject/nature.adoc[nature]
-*** xref:DomainObject/persistedLifecycleEvent.adoc[persistedLifecycleEvent]
-*** xref:DomainObject/persistingLifecycleEvent.adoc[persistingLifecycleEvent]
-*** xref:DomainObject/objectType.adoc[objectType]
-*** xref:DomainObject/publishing.adoc[publishing]
-*** xref:DomainObject/removingLifecycleEvent.adoc[removingLifecycleEvent]
-*** xref:DomainObject/updatingLifecycleEvent.adoc[updatingLifecycleEvent]
-*** xref:DomainObject/updatedLifecycleEvent.adoc[updatedLifecycleEvent]
-
-
-
 ** xref:DomainObjectLayout.adoc[DomainObjectLayout]
-*** xref:DomainObjectLayout/bookmarking.adoc[bookmarking]
-*** xref:DomainObjectLayout/cssClass.adoc[cssClass]
-*** xref:DomainObjectLayout/cssClassFa.adoc[cssClassFa]
-*** xref:DomainObjectLayout/cssClassUiEvent.adoc[cssClassUiEvent]
-*** xref:DomainObjectLayout/describedAs.adoc[describedAs]
-*** xref:DomainObjectLayout/iconUiEvent.adoc[iconUiEvent]
-*** xref:DomainObjectLayout/layoutUiEvent.adoc[layoutUiEvent]
-*** xref:DomainObjectLayout/named.adoc[named]
-*** xref:DomainObjectLayout/paged.adoc[paged]
-*** xref:DomainObjectLayout/plural.adoc[plural]
-*** xref:DomainObjectLayout/titleUiEvent.adoc[titleUiEvent]
-
-
-
-
 ** xref:DomainService.adoc[DomainService]
-*** xref:DomainService/nature.adoc[nature]
-*** xref:DomainService/objectType.adoc[objectType]
-*** xref:DomainService/repositoryFor.adoc[repositoryFor]
-
-
-
 ** xref:DomainServiceLayout.adoc[DomainServiceLayout]
-*** xref:DomainServiceLayout/menuBar.adoc[menuBar]
-*** xref:DomainServiceLayout/menuOrder.adoc[menuOrder]
-*** xref:DomainServiceLayout/named.adoc[named]
-
-
-
 ** xref:Facets.adoc[Facets]
-
-
-
 ** xref:HomePage.adoc[HomePage]
-
-
-
 ** xref:Inject.adoc[Inject]
-
-
-
 ** xref:MemberGroupLayout.adoc[MemberGroupLayout]
-
-
-
 ** xref:MemberOrder.adoc[MemberOrder]
-
-
-
 ** xref:Mixin.adoc[Mixin]
-*** xref:Mixin/method.adoc[method]
-
-
-
 ** xref:NotPersistent.adoc[NotPersistent.]
-
-
-
 ** xref:Nullable.adoc[Nullable]
-
-
-
 ** xref:MinLength.adoc[MinLength]
-
-
-
 ** xref:Parameter.adoc[Parameter]
-*** xref:Parameter/fileAccept.adoc[fileAccept]
-*** xref:Parameter/maxLength.adoc[maxLength]
-*** xref:Parameter/mustSatisfy.adoc[mustSatisfy]
-*** xref:Parameter/optionality.adoc[optionality]
-*** xref:Parameter/regexPattern.adoc[regexPattern]
-
-
-
 ** xref:ParameterLayout.adoc[ParameterLayout]
-*** xref:ParameterLayout/cssClass.adoc[cssClass]
-*** xref:ParameterLayout/describedAs.adoc[describedAs]
-*** xref:ParameterLayout/labelPosition.adoc[labelPosition]
-*** xref:ParameterLayout/multiLine.adoc[multiLine]
-*** xref:ParameterLayout/named.adoc[named]
-*** xref:ParameterLayout/renderedAsDayBefore.adoc[renderedAsDayBefore]
-*** xref:ParameterLayout/typicalLength.adoc[typicalLength]
-
-
-
 ** xref:Pattern.adoc[Pattern]
-
-
-
 ** xref:PersistenceCapable.adoc[PersistenceCapable]
-
-
-
 ** xref:PostConstruct.adoc[PostConstruct]
-
-
-
 ** xref:PreDestroy.adoc[PreDestroy]
-
-
-
 ** xref:PrimaryKey.adoc[PrimaryKey]
-
-
-
 ** xref:Programmatic.adoc[Programmatic]
-
-
-
 ** xref:Property.adoc[Property]
-*** xref:Property/command.adoc[command]
-*** xref:Property/domainEvent.adoc[domainEvent]
-*** xref:Property/editing.adoc[editing]
-*** xref:Property/fileAccept.adoc[fileAccept]
-*** xref:Property/hidden.adoc[hidden]
-*** xref:Property/maxLength.adoc[maxLength]
-*** xref:Property/mustSatisfy.adoc[mustSatisfy]
-*** xref:Property/notPersisted.adoc[notPersisted]
-*** xref:Property/optionality.adoc[optionality]
-*** xref:Property/projecting.adoc[projecting]
-*** xref:Property/publishing.adoc[publishing]
-*** xref:Property/regexPattern.adoc[regexPattern]
-
-
-
 ** xref:PropertyLayout.adoc[PropertyLayout]
-*** xref:PropertyLayout/cssClass.adoc[cssClass]
-*** xref:PropertyLayout/describedAs.adoc[describedAs]
-*** xref:PropertyLayout/labelPosition.adoc[labelPosition]
-*** xref:PropertyLayout/multiLine.adoc[multiLine]
-*** xref:PropertyLayout/named.adoc[named]
-*** xref:PropertyLayout/navigable.adoc[navigable]
-*** xref:PropertyLayout/promptStyle.adoc[promptStyle]
-*** xref:PropertyLayout/renderedAsDayBefore.adoc[renderedAsDayBefore]
-*** xref:PropertyLayout/typicalLength.adoc[typicalLength]
-*** xref:PropertyLayout/unchanging.adoc[unchanging]
-
-
-
 ** xref:RequestScoped.adoc[RequestScoped]
-
-
-
 ** xref:Title.adoc[Title]
-
-
-
 ** xref:ViewModel.adoc[ViewModel]
-*** xref:ViewModel/objectType.adoc[objectType]
-
-
-
 ** xref:ViewModelLayout.adoc[ViewModelLayout]
-*** xref:ViewModelLayout/cssClass.adoc[cssClass]
-*** xref:ViewModelLayout/cssClassFa.adoc[cssClassFa]
-*** xref:ViewModelLayout/cssClassUiEvent.adoc[cssClassUiEvent]
-*** xref:ViewModelLayout/describedAs.adoc[describedAs]
-*** xref:ViewModelLayout/iconUiEvent.adoc[iconUiEvent]
-*** xref:ViewModelLayout/layoutUiEvent.adoc[layoutUiEvent]
-*** xref:ViewModelLayout/named.adoc[named]
-*** xref:ViewModelLayout/paged.adoc[paged]
-*** xref:ViewModelLayout/plural.adoc[plural]
-*** xref:ViewModelLayout/titleUiEvent.adoc[titleUiEvent]
-
-
-
 ** xref:XmlJavaTypeAdapter.adoc[XmlJavaTypeAdapter]
-
-
-
 ** xref:XmlRootElement.adoc[XmlRootElement]
 
-
diff --git a/core/_adoc-rg/modules/ant/pages/Action.adoc b/core/_adoc-rg/modules/ant/pages/Action.adoc
index cc6f625..40c61ee 100644
--- a/core/_adoc-rg/modules/ant/pages/Action.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Action.adoc
@@ -16,17 +16,17 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:Action/associateWith.adoc[`associateWith()`]
+|xref:rg:ant:Action.adoc#associateWith[`associateWith()`]
 |_memberId_ +
 ("")
 |associates an action with another property or collection of the action.
 
-|xref:rg:ant:Action/associateWith.adoc[`associateWith-Sequence()`]
+|xref:rg:ant:Action.adoc#associateWith[`associateWith-Sequence()`]
 |_memberId_ +
 ("")
 |associates an action with another property or collection of the action.
 
-|xref:rg:ant:Action/command.adoc[`command()`]
+|xref:rg:ant:Action.adoc#command[`command()`]
 |`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
 (`AS_CONFIGURED`)
 |whether the action invocation should be reified into a `o.a.i.applib.` +
@@ -51,7 +51,7 @@ The table below summarizes the annotation's attributes.
 |If the `Command` also implements `CommandWithDto` (meaning that it can return a `CommandDto`, in other words be converted into an XML memento), then optionally specifies a processor that can refine this XML.
 
 
-|xref:rg:ant:Action/domainEvent.adoc[`domainEvent()`]
+|xref:rg:ant:Action.adoc#domainEvent[`domainEvent()`]
 |subtype of `ActionDomainEvent` +
 (`ActionDomainEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to
@@ -59,13 +59,13 @@ broadcast the action's business rule checking (hide, disable, validate) and its
 post-execute).
 
 
-|xref:rg:ant:Action/hidden.adoc[`hidden()`]
+|xref:rg:ant:Action.adoc#hidden[`hidden()`]
 |`EVERYWHERE`, `NOWHERE` +
 (`NOWHERE`)
 |indicates where (in the UI) the action should be hidden from the user.
 
 
-|xref:rg:ant:Action/invokeOn.adoc[`invokeOn()`]
+|xref:rg:ant:Action.adoc#invokeOn[`invokeOn()`]
 |`OBJECT_ONLY`, `COLLECTION_ONLY`, `OBJECT_AND_COLLECTION` +
 (`OBJECT_ONLY`)
 |(deprecated - use view models and associated actions instead).
@@ -75,17 +75,17 @@ whether an action can be invoked on a single object and/or on many objects in a
 Currently this is only supported for no-arg actions.
 
 
-|xref:rg:ant:Action/publishing.adoc[`publishing()`]
+|xref:rg:ant:Action.adoc#publishing[`publishing()`]
 |`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
 (`AS_CONFIGURED`)
 |whether the action invocation should be published to the registered xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
 
-|xref:rg:ant:Action/restrictTo.adoc[`restrictTo()`]
+|xref:rg:ant:Action.adoc#restrictTo[`restrictTo()`]
 |`NO_RESTRICTIONS`,`PROTOTYPING` +
 (`NO_RESTRICTIONS`)
 |whether the action is only available in prototyping mode, or whether it is available also in production mode.
 
-|xref:rg:ant:Action/semantics.adoc[`semantics()`]
+|xref:rg:ant:Action.adoc#semantics[`semantics()`]
 |`SAFE_AND_REQUEST_CACHEABLE`, `SAFE`, +
 `IDEMPOTENT`, `IDEMPOTENT_ARE_YOU_SURE` +
 `NON_IDEMPOTENT`, `NON_IDEMPOTENT_ARE_YOU_SURE` + +
@@ -94,7 +94,7 @@ Currently this is only supported for no-arg actions.
 
 The `...ARE_YOU_SURE` variants cause a confirmation dialog to be displayed in the xref:vw:ROOT:about.adoc[Wicket viewer].
 
-|xref:rg:ant:Action/typeOf.adoc[`typeOf()`]
+|xref:rg:ant:Action.adoc#typeOf[`typeOf()`]
 |(none)
 |if the action returns a collection, hints as to the run-time type of the objects within that collection (as a fallback)
 
@@ -133,3 +133,12 @@ public class ToDoItem {
 
 
 
+include::Action/associateWith.adoc[leveloffset=+1]
+include::Action/command.adoc[leveloffset=+1]
+include::Action/domainEvent.adoc[leveloffset=+1]
+include::Action/hidden.adoc[leveloffset=+1]
+include::Action/invokeOn.adoc[leveloffset=+1]
+include::Action/publishing.adoc[leveloffset=+1]
+include::Action/restrictTo.adoc[leveloffset=+1]
+include::Action/semantics.adoc[leveloffset=+1]
+include::Action/typeOf.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/Action/domainEvent.adoc b/core/_adoc-rg/modules/ant/pages/Action/domainEvent.adoc
index 63ecb76..92b15c2 100644
--- a/core/_adoc-rg/modules/ant/pages/Action/domainEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Action/domainEvent.adoc
@@ -182,8 +182,8 @@ However, events can be raised programmatically either by calling the xref:rg:svc
 
 This attribute is also supported for:
 
-* xref:rg:ant:Collection/domainEvent.adoc[collections] and
-* xref:rg:ant:Property/domainEvent.adoc[properties].
+* xref:rg:ant:Collection.adoc#domainEvent[collections] and
+* xref:rg:ant:Property.adoc#domainEvent[properties].
 
 
 
diff --git a/core/_adoc-rg/modules/ant/pages/Action/hidden.adoc b/core/_adoc-rg/modules/ant/pages/Action/hidden.adoc
index e16ce28..60544c5 100644
--- a/core/_adoc-rg/modules/ant/pages/Action/hidden.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Action/hidden.adoc
@@ -9,7 +9,7 @@ Actions can be hidden at the domain-level, indicating that they are not visible
 
 [TIP]
 ====
-It is also possible to use xref:rg:ant:ActionLayout/hidden.adoc[`@ActionLayout#hidden()`] or xref:vw:ROOT:layout/file-based.adoc[file-based layouts] such that the action can be hidden at the view layer.
+It is also possible to use xref:rg:ant:ActionLayout.adoc#hidden[`@ActionLayout#hidden()`] or xref:vw:ROOT:layout/file-based.adoc[file-based layouts] such that the action can be hidden at the view layer.
 Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
 ====
 
@@ -41,7 +41,7 @@ The other values of the `Where` enum have no meaning for a collection.
 
 [NOTE]
 ====
-For actions of domain services the visibility is dependent upon its xref:rg:ant:DomainService/nature.adoc[`@DomainService#nature()`] and also on whether it is contributed (as per  xref:rg:ant:ActionLayout/contributedAs.adoc[`@ActionLayout#contributedAs()`]).
+For actions of domain services the visibility is dependent upon its xref:rg:ant:DomainService.adoc#nature[`@DomainService#nature()`] and also on whether it is contributed (as per  xref:rg:ant:ActionLayout.adoc#contributedAs[`@ActionLayout#contributedAs()`]).
 ====
 
 
@@ -50,6 +50,6 @@ For actions of domain services the visibility is dependent upon its xref:rg:ant:
 
 This attribute can also be applied to:
 
-* xref:rg:ant:Property/hidden.adoc[properties]
-* xref:rg:ant:Collection/hidden.adoc[collections].
+* xref:rg:ant:Property.adoc#hidden[properties]
+* xref:rg:ant:Collection.adoc#hidden[collections].
 
diff --git a/core/_adoc-rg/modules/ant/pages/Action/publishing.adoc b/core/_adoc-rg/modules/ant/pages/Action/publishing.adoc
index 3c5a3a7..93218b9 100644
--- a/core/_adoc-rg/modules/ant/pages/Action/publishing.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Action/publishing.adoc
@@ -45,10 +45,10 @@ public class Order {
 
 This attribute is also supported for:
 
-* xref:rg:ant:DomainObject/publishing.adoc[domain objects]
+* xref:rg:ant:DomainObject.adoc#publishing[domain objects]
 + where it controls whether changed objects are published as events, and for
 
-* xref:rg:ant:Property/publishing.adoc[properties]
+* xref:rg:ant:Property.adoc#publishing[properties]
 +
 where it controls whether property edits are published as events.
 
diff --git a/core/_adoc-rg/modules/ant/pages/Action/typeOf.adoc b/core/_adoc-rg/modules/ant/pages/Action/typeOf.adoc
index 78152f1..5c7d7df 100644
--- a/core/_adoc-rg/modules/ant/pages/Action/typeOf.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Action/typeOf.adoc
@@ -31,5 +31,5 @@ In general we recommend that you use generics instead, eg `List<Customer>`.
 
 == See also
 
-This attribute can also be specified for xref:rg:ant:Collection/typeOf.adoc[collections].
+This attribute can also be specified for xref:rg:ant:Collection.adoc#typeOf[collections].
 
diff --git a/core/_adoc-rg/modules/ant/pages/ActionLayout.adoc b/core/_adoc-rg/modules/ant/pages/ActionLayout.adoc
index 03fc9d5..c986d89 100644
--- a/core/_adoc-rg/modules/ant/pages/ActionLayout.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ActionLayout.adoc
@@ -16,28 +16,28 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:ActionLayout/bookmarking.adoc[`bookmarking()`]
+|xref:rg:ant:ActionLayout.adoc#bookmarking[`bookmarking()`]
 |`AS_ROOT`, `NEVER` +
 (`NEVER`)
-|indicates if an action (with safe xref:rg:ant:Action/semantics.adoc[action semantics]) is automatically bookmarked.
+|indicates if an action (with safe xref:rg:ant:Action.adoc#semantics[action semantics]) is automatically bookmarked.
 
 
-|xref:rg:ant:ActionLayout/contributedAs.adoc[`contributedAs()`]
+|xref:rg:ant:ActionLayout.adoc#contributedAs[`contributedAs()`]
 |`AS_BOTH`, `AS_ACTION`, `AS_ASSOCIATION`, `AS_NEITHER` +
 (`AS_BOTH`)
 |for a domain service action that can be contributed, whether to contribute as an action or as an association (ie a property or collection). +
 
-For a domain service action to be contributed, the domain services must have a xref:rg:ant:DomainService/nature.adoc[nature] nature of either `VIEW` or `VIEW_CONTRIBUTIONS_ONLY`, and the action must have xref:rg:ant:Action/semantics.adoc[safe action semantics], and takes a single argument, namely the contributee domain object.
+For a domain service action to be contributed, the domain services must have a xref:rg:ant:DomainService.adoc#nature[nature] nature of either `VIEW` or `VIEW_CONTRIBUTIONS_ONLY`, and the action must have xref:rg:ant:Action.adoc#semantics[safe action semantics], and takes a single argument, namely the contributee domain object.
 
 
-|xref:rg:ant:ActionLayout/cssClass.adoc[`cssClass()`]
+|xref:rg:ant:ActionLayout.adoc#cssClass[`cssClass()`]
 |Any string valid as a CSS class
 |an additional CSS class around the HTML that represents for the action, to allow targetted styling in xref:rg:cfg:application-specific/application-css.adoc[`application.css`]. +
 
 Supported by the xref:vw:ROOT:about.adoc[Wicket viewer] but currently ignored by the xref:vro:ROOT:about.adoc[RestfulObjects viewer].
 
 
-|xref:rg:ant:ActionLayout/cssClassFa.adoc[`cssClassFa()`]
+|xref:rg:ant:ActionLayout.adoc#cssClassFa[`cssClassFa()`]
 |Any valid link:http://fortawesome.github.io/Font-Awesome/[Font awesome] icon name
 |specify a font awesome icon for the action's menu link or icon. +
 
@@ -48,24 +48,24 @@ Supported by the xref:vw:ROOT:about.adoc[Wicket viewer] but currently ignored by
 |Positioning of the icon on the button/menu item.
 
 
-|xref:rg:ant:ActionLayout/describedAs.adoc[`describedAs()`]
+|xref:rg:ant:ActionLayout.adoc#describedAs[`describedAs()`]
 |String.
 |provides a short description of the action, eg for rendering as a 'tool tip'.
 
 
-|xref:rg:ant:ActionLayout/hidden.adoc[`hidden()`]
+|xref:rg:ant:ActionLayout.adoc#hidden[`hidden()`]
 |`EVERYWHERE`, `NOWHERE` +
 (`NOWHERE`)
 |indicates where (in the UI) the action should be hidden from the user.
 
 
-|xref:rg:ant:ActionLayout/named.adoc[`named()`]
+|xref:rg:ant:ActionLayout.adoc#named[`named()`]
 |String.
 |to override the name inferred from the action's name in code. +
 
 A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
 
-|xref:rg:ant:ActionLayout/position.adoc[`position()`]
+|xref:rg:ant:ActionLayout.adoc#position[`position()`]
 |`BELOW`, `RIGHT`, `PANEL`, `PANEL_DROPDOWN` (`BELOW`)
 |for actions associated (using xref:rg:ant:MemberOrder.adoc[`@MemberOrder#named()`]) with properties, the positioning of the action's button with respect to the property
 
@@ -111,3 +111,11 @@ As an alternative to using the `@ActionLayout` annotation, a xref:vw:ROOT:layout
 
 
 
+include::ActionLayout/bookmarking.adoc[leveloffset=+1]
+include::ActionLayout/contributedAs.adoc[leveloffset=+1]
+include::ActionLayout/cssClass.adoc[leveloffset=+1]
+include::ActionLayout/cssClassFa.adoc[leveloffset=+1]
+include::ActionLayout/describedAs.adoc[leveloffset=+1]
+include::ActionLayout/hidden.adoc[leveloffset=+1]
+include::ActionLayout/named.adoc[leveloffset=+1]
+include::ActionLayout/position.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/ActionLayout/bookmarking.adoc b/core/_adoc-rg/modules/ant/pages/ActionLayout/bookmarking.adoc
index e8fa049..ddbcd2f 100644
--- a/core/_adoc-rg/modules/ant/pages/ActionLayout/bookmarking.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ActionLayout/bookmarking.adoc
@@ -4,7 +4,7 @@ include::_attributes.adoc[]
 
 
 
-The `bookmarking()` attribute indicates if an action (with safe xref:rg:ant:Action/semantics.adoc[action semantics]) is automatically bookmarked.
+The `bookmarking()` attribute indicates if an action (with safe xref:rg:ant:Action.adoc#semantics[action semantics]) is automatically bookmarked.
 
 
 
@@ -44,7 +44,7 @@ indicates that the `notYetComplete()` action is bookmarkable.
 
 [NOTE]
 ====
-The enum value `AS_CHILD` has no meaning for actions; it relates only to bookmarked xref:rg:ant:DomainObject/bookmarking.adoc[domain object]s.
+The enum value `AS_CHILD` has no meaning for actions; it relates only to bookmarked xref:rg:ant:DomainObject.adoc#bookmarking[domain object]s.
 ====
 
 
@@ -55,4 +55,4 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 == See also
 
-This attribute is also supported for xref:rg:ant:DomainObjectLayout/bookmarking.adoc[domain objects].
\ No newline at end of file
+This attribute is also supported for xref:rg:ant:DomainObjectLayout.adoc#bookmarking[domain objects].
\ No newline at end of file
diff --git a/core/_adoc-rg/modules/ant/pages/ActionLayout/contributedAs.adoc b/core/_adoc-rg/modules/ant/pages/ActionLayout/contributedAs.adoc
index ed08a53..c2e260d 100644
--- a/core/_adoc-rg/modules/ant/pages/ActionLayout/contributedAs.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ActionLayout/contributedAs.adoc
@@ -8,7 +8,7 @@ For a domain service action that _can_ be contributed, the `contributedAs()` att
 
 The distinction between property or collection is automatic: if the action returns a `java.util.Collection` (or subtype) then the action is contributed as a collection; otherwise it is contributed as a property.
 
-For a domain service action to be contributed, the domain services must have a xref:rg:ant:DomainService/nature.adoc[nature] nature of either `VIEW` or `VIEW_CONTRIBUTIONS_ONLY`, and the action must have xref:rg:ant:Action/semantics.adoc[safe action semantics], and takes a single argument, namely the contributee domain object.
+For a domain service action to be contributed, the domain services must have a xref:rg:ant:DomainService.adoc#nature[nature] nature of either `VIEW` or `VIEW_CONTRIBUTIONS_ONLY`, and the action must have xref:rg:ant:Action.adoc#semantics[safe action semantics], and takes a single argument, namely the contributee domain object.
 
 For example:
 
@@ -41,7 +41,7 @@ public class OrderContributions {
 }
 ----
 
-In such cases, though, it would probably make more sense to annotate the action as either xref:rg:ant:Action/hidden.adoc[hidden] or indeed xref:rg:ant:Programmatic.adoc[`@Programmatic`].
+In such cases, though, it would probably make more sense to annotate the action as either xref:rg:ant:Action.adoc#hidden[hidden] or indeed xref:rg:ant:Programmatic.adoc[`@Programmatic`].
 
 
 
diff --git a/core/_adoc-rg/modules/ant/pages/ActionLayout/cssClass.adoc b/core/_adoc-rg/modules/ant/pages/ActionLayout/cssClass.adoc
index 26d48fa..b4e2c5a 100644
--- a/core/_adoc-rg/modules/ant/pages/ActionLayout/cssClass.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ActionLayout/cssClass.adoc
@@ -20,7 +20,7 @@ public class ToDoItem {
 
 [NOTE]
 ====
-The similar xref:rg:ant:ActionLayout/cssClassFa.adoc[`@ActionLayout#cssClassFa()`] annotation attribute is also used as a hint
+The similar xref:rg:ant:ActionLayout.adoc#cssClassFa[`@ActionLayout#cssClassFa()`] annotation attribute is also used as a hint
 to apply CSS, specifically to add http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icons] on action menu items or buttons.
 ====
 
@@ -34,9 +34,9 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 This attribute can also be applied to:
 
-* xref:rg:ant:DomainObjectLayout/cssClass.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/cssClass.adoc[view models]
-* xref:rg:ant:PropertyLayout/cssClass.adoc[properties]
-* xref:rg:ant:CollectionLayout/cssClass.adoc[collections]
-* xref:rg:ant:ParameterLayout/cssClass.adoc[parameters].
+* xref:rg:ant:DomainObjectLayout.adoc#cssClass[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#cssClass[view models]
+* xref:rg:ant:PropertyLayout.adoc#cssClass[properties]
+* xref:rg:ant:CollectionLayout.adoc#cssClass[collections]
+* xref:rg:ant:ParameterLayout.adoc#cssClass[parameters].
 
diff --git a/core/_adoc-rg/modules/ant/pages/ActionLayout/cssClassFa.adoc b/core/_adoc-rg/modules/ant/pages/ActionLayout/cssClassFa.adoc
index 1677880..3d08323 100644
--- a/core/_adoc-rg/modules/ant/pages/ActionLayout/cssClassFa.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ActionLayout/cssClassFa.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 
 The `cssClassFa()` attribute is used to specify the name of a link:http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icon] name, to be rendered on the action's representation as a button or menu item.    The related `cssClassFaPosition()` attribute specifies the positioning of the icon, to the left or the right of the text.
 
-These attributes can also be applied to xref:rg:ant:DomainObjectLayout/cssClassFa.adoc[domain objects] and to xref:rg:ant:ViewModelLayout/cssClassFa.adoc[view models] to specify the object's icon.
+These attributes can also be applied to xref:rg:ant:DomainObjectLayout.adoc#cssClassFa[domain objects] and to xref:rg:ant:ViewModelLayout.adoc#cssClassFa[view models] to specify the object's icon.
 
 
 For example:
@@ -36,6 +36,6 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 [NOTE]
 ====
-The similar xref:rg:ant:ActionLayout/cssClass.adoc[`@ActionLayout#cssClass()`] annotation attribute is also used as a hint to apply CSS, but for wrapping the representation of an object or object member so that it can be styled in an application-specific way.
+The similar xref:rg:ant:ActionLayout.adoc#cssClass[`@ActionLayout#cssClass()`] annotation attribute is also used as a hint to apply CSS, but for wrapping the representation of an object or object member so that it can be styled in an application-specific way.
 ====
 
diff --git a/core/_adoc-rg/modules/ant/pages/ActionLayout/describedAs.adoc b/core/_adoc-rg/modules/ant/pages/ActionLayout/describedAs.adoc
index b3fb416..24e4586 100644
--- a/core/_adoc-rg/modules/ant/pages/ActionLayout/describedAs.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ActionLayout/describedAs.adoc
@@ -30,9 +30,9 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 This attribute can also be specified for:
 
-* xref:rg:ant:CollectionLayout/describedAs.adoc[collections]
-* xref:rg:ant:PropertyLayout/describedAs.adoc[properties]
-* xref:rg:ant:ParameterLayout/describedAs.adoc[parameters]
-* xref:rg:ant:DomainObjectLayout/describedAs.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/describedAs.adoc[view models].
+* xref:rg:ant:CollectionLayout.adoc#describedAs[collections]
+* xref:rg:ant:PropertyLayout.adoc#describedAs[properties]
+* xref:rg:ant:ParameterLayout.adoc#describedAs[parameters]
+* xref:rg:ant:DomainObjectLayout.adoc#describedAs[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#describedAs[view models].
 
diff --git a/core/_adoc-rg/modules/ant/pages/ActionLayout/hidden.adoc b/core/_adoc-rg/modules/ant/pages/ActionLayout/hidden.adoc
index 014ff18..4ceedc6 100644
--- a/core/_adoc-rg/modules/ant/pages/ActionLayout/hidden.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ActionLayout/hidden.adoc
@@ -8,7 +8,7 @@ The `hidden()` attribute indicates where (in the UI) the action should be hidden
 
 [TIP]
 ====
-It is also possible to use xref:rg:ant:Action/hidden.adoc[`@Action#hidden()`] to hide an action at the domain layer.
+It is also possible to use xref:rg:ant:Action.adoc#hidden[`@Action#hidden()`] to hide an action at the domain layer.
 Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
 ====
 
@@ -39,7 +39,7 @@ The other values of the `Where` enum have no meaning for a collection.
 
 [NOTE]
 ====
-For actions of domain services the visibility is dependent upon its xref:rg:ant:DomainService/nature.adoc[`@DomainService#nature()`] and also on whether it is contributed (as per  xref:rg:ant:ActionLayout/contributedAs.adoc[`@ActionLayout#contributedAs()`]).
+For actions of domain services the visibility is dependent upon its xref:rg:ant:DomainService.adoc#nature[`@DomainService#nature()`] and also on whether it is contributed (as per  xref:rg:ant:ActionLayout.adoc#contributedAs[`@ActionLayout#contributedAs()`]).
 ====
 
 
@@ -55,5 +55,5 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 == See also
 
 This attribute can also be applied to:
-* xref:rg:ant:PropertyLayout/hidden.adoc[properties]
-* xref:rg:ant:CollectionLayout/hidden.adoc[collections].
+* xref:rg:ant:PropertyLayout.adoc#hidden[properties]
+* xref:rg:ant:CollectionLayout.adoc#hidden[collections].
diff --git a/core/_adoc-rg/modules/ant/pages/ActionLayout/named.adoc b/core/_adoc-rg/modules/ant/pages/ActionLayout/named.adoc
index 261c7d5..7c34a17 100644
--- a/core/_adoc-rg/modules/ant/pages/ActionLayout/named.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ActionLayout/named.adoc
@@ -38,9 +38,9 @@ The framework also provides a separate, powerful mechanism for xref:ug:btb:i18n.
 
 This attribute can also be specified for:
 
-* xref:rg:ant:CollectionLayout/named.adoc[collections]
-* xref:rg:ant:PropertyLayout/named.adoc[properties]
-* xref:rg:ant:ParameterLayout/named.adoc[parameters]
-* xref:rg:ant:DomainObjectLayout/named.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/named.adoc[view models]
-* xref:rg:ant:DomainServiceLayout/named.adoc[domain services].
+* xref:rg:ant:CollectionLayout.adoc#named[collections]
+* xref:rg:ant:PropertyLayout.adoc#named[properties]
+* xref:rg:ant:ParameterLayout.adoc#named[parameters]
+* xref:rg:ant:DomainObjectLayout.adoc#named[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#named[view models]
+* xref:rg:ant:DomainServiceLayout.adoc#named[domain services].
diff --git a/core/_adoc-rg/modules/ant/pages/ActionLayout/redirect.adoc b/core/_adoc-rg/modules/ant/pages/ActionLayout/redirect.adoc
index b5b8bd5..5471611 100644
--- a/core/_adoc-rg/modules/ant/pages/ActionLayout/redirect.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ActionLayout/redirect.adoc
@@ -14,7 +14,7 @@ This makes for a smoother UI.
 +
 [NOTE]
 ====
-Any properties with xref:rg:ant:PropertyLayout/unchanging.adoc[`@PropertyLayout#unchanging`] are _not_ updated.
+Any properties with xref:rg:ant:PropertyLayout.adoc#unchanging[`@PropertyLayout#unchanging`] are _not_ updated.
 ====
 
 * if set to `EVEN_IF_SAME`, then a redirect occurs and a new web page is rendered.
diff --git a/core/_adoc-rg/modules/ant/pages/Collection.adoc b/core/_adoc-rg/modules/ant/pages/Collection.adoc
index b68b460..f91df4e 100644
--- a/core/_adoc-rg/modules/ant/pages/Collection.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Collection.adoc
@@ -16,13 +16,13 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:Collection/domainEvent.adoc[`domainEvent()`]
+|xref:rg:ant:Collection.adoc#domainEvent[`domainEvent()`]
 |subtype of `CollectionDomainEvent` +
 (`CollectionDomainEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to broadcast the collection's business rule checking (hide, disable, validate) and its modification (before and after).
 
 
-|xref:rg:ant:Collection/editing.adoc[`editing()`]
+|xref:rg:ant:Collection.adoc#editing[`editing()`]
 |`ENABLED`, `DISABLED`, `AS_CONFIGURED` +
 (`AS_CONFIGURED`)
 |whether a collection can be added to or removed from within the UI
@@ -33,13 +33,13 @@ The table below summarizes the annotation's attributes.
 |if `editing()` is `DISABLED`, provides a reason as to why.
 
 
-|xref:rg:ant:Collection/hidden.adoc[`hidden()`]
+|xref:rg:ant:Collection.adoc#hidden[`hidden()`]
 |`EVERYWHERE`, `OBJECT_FORMS`, `NOWHERE` +
 (`NOWHERE`)
 |indicates where (in the UI) the collection should be hidden from the user.
 
 
-|xref:rg:ant:Collection/notPersisted.adoc[`notPersisted()`]
+|xref:rg:ant:Collection.adoc#notPersisted[`notPersisted()`]
 |`true`, `false` +
 (`false`)
 |whether to exclude from snapshots. +
@@ -51,7 +51,7 @@ Collection must also be annotated with `@javax.jdo.annotations.NotPersistent` in
 
 
 
-|xref:rg:ant:Collection/typeOf.adoc[`typeOf()`]
+|xref:rg:ant:Collection.adoc#typeOf[`typeOf()`]
 |
 |hints as to the run-time type of the objects within that collection (as a fallback)
 
@@ -96,3 +96,8 @@ so that boilerplate-busting tools such as link:https://projectlombok.org/[Projec
 
 
 
+include::Collection/domainEvent.adoc[leveloffset=+1]
+include::Collection/editing.adoc[leveloffset=+1]
+include::Collection/hidden.adoc[leveloffset=+1]
+include::Collection/notPersisted.adoc[leveloffset=+1]
+include::Collection/typeOf.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/Collection/domainEvent.adoc b/core/_adoc-rg/modules/ant/pages/Collection/domainEvent.adoc
index 8d7bd7c..f32db71 100644
--- a/core/_adoc-rg/modules/ant/pages/Collection/domainEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Collection/domainEvent.adoc
@@ -168,8 +168,8 @@ However, events can be raised programmatically either by calling the xref:rg:svc
 
 This attribute is also supported for:
 
-* xref:rg:ant:Action/domainEvent.adoc[actions] and
-* xref:rg:ant:Property/domainEvent.adoc[properties].
+* xref:rg:ant:Action.adoc#domainEvent[actions] and
+* xref:rg:ant:Property.adoc#domainEvent[properties].
 
 
 
diff --git a/core/_adoc-rg/modules/ant/pages/Collection/editing.adoc b/core/_adoc-rg/modules/ant/pages/Collection/editing.adoc
index d8cb978..a2cce1c 100644
--- a/core/_adoc-rg/modules/ant/pages/Collection/editing.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Collection/editing.adoc
@@ -17,7 +17,7 @@ The workaround is to create add/remove actions and use xref:rg:ant:MemberOrder.a
 
 Whether a collection is enabled or disabled depends upon these factors:
 
-* whether the domain object has been configured as immutable through the xref:rg:ant:DomainObject/editing.adoc[`@DomainObject#editing()`] attribute
+* whether the domain object has been configured as immutable through the xref:rg:ant:DomainObject.adoc#editing[`@DomainObject#editing()`] attribute
 
 * else (that is, if the domain object's editability is specified as being `AS_CONFIGURED`), then the value of the xref:rg:cfg:configuring-core.adoc[configuration property] `isis.objects.editing`.
 If set to `false`, then the object's collections (and properties) are *not* editable
@@ -51,6 +51,6 @@ To reiterate, it is _not_ possible to enable editing for a collection if editing
 
 This attribute can also be specified for:
 
-* xref:rg:ant:Property/editing.adoc[properties]
-* xref:rg:ant:DomainObject/editing.adoc[domain object]
+* xref:rg:ant:Property.adoc#editing[properties]
+* xref:rg:ant:DomainObject.adoc#editing[domain object]
 
diff --git a/core/_adoc-rg/modules/ant/pages/Collection/hidden.adoc b/core/_adoc-rg/modules/ant/pages/Collection/hidden.adoc
index f03daa7..1e22832 100644
--- a/core/_adoc-rg/modules/ant/pages/Collection/hidden.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Collection/hidden.adoc
@@ -8,7 +8,7 @@ Collections can be hidden at the domain-level, indicating that they are not visi
 
 [TIP]
 ====
-It is also possible to use xref:rg:ant:CollectionLayout/hidden.adoc[`@CollectionLayout#hidden()`] or using xref:vw:ROOT:layout/file-based.adoc[file-based layout] such that the collection can be hidden at the view layer.
+It is also possible to use xref:rg:ant:CollectionLayout.adoc#hidden[`@CollectionLayout#hidden()`] or using xref:vw:ROOT:layout/file-based.adoc[file-based layout] such that the collection can be hidden at the view layer.
 Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
 ====
 
@@ -57,5 +57,5 @@ The xref:vro:ROOT:about.adoc[RestfulObjects viewer] by default suppress collecti
 
 This attribute can also be applied to:
 
-* xref:rg:ant:Action/hidden.adoc[actions]
-* xref:rg:ant:Property/hidden.adoc[properties].
+* xref:rg:ant:Action.adoc#hidden[actions]
+* xref:rg:ant:Property.adoc#hidden[properties].
diff --git a/core/_adoc-rg/modules/ant/pages/Collection/notPersisted.adoc b/core/_adoc-rg/modules/ant/pages/Collection/notPersisted.adoc
index 03911d3..4785680 100644
--- a/core/_adoc-rg/modules/ant/pages/Collection/notPersisted.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Collection/notPersisted.adoc
@@ -57,5 +57,5 @@ public class Customer {
 
 == See also
 
-This attribute is also supported for xref:rg:ant:Property/notPersisted.adoc[properties].
+This attribute is also supported for xref:rg:ant:Property.adoc#notPersisted[properties].
 
diff --git a/core/_adoc-rg/modules/ant/pages/Collection/typeOf.adoc b/core/_adoc-rg/modules/ant/pages/Collection/typeOf.adoc
index 1389468..5a81fc2 100644
--- a/core/_adoc-rg/modules/ant/pages/Collection/typeOf.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Collection/typeOf.adoc
@@ -25,4 +25,4 @@ In general we recommend that you use generics instead, eg `SortedSet<Order>`.
 
 == See also
 
-This attribute can also be specified for xref:rg:ant:Action/typeOf.adoc[actions].
+This attribute can also be specified for xref:rg:ant:Action.adoc#typeOf[actions].
diff --git a/core/_adoc-rg/modules/ant/pages/CollectionLayout.adoc b/core/_adoc-rg/modules/ant/pages/CollectionLayout.adoc
index 140059c..9d65574 100644
--- a/core/_adoc-rg/modules/ant/pages/CollectionLayout.adoc
+++ b/core/_adoc-rg/modules/ant/pages/CollectionLayout.adoc
@@ -17,12 +17,12 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:CollectionLayout/cssClass.adoc[`cssClass()`]
+|xref:rg:ant:CollectionLayout.adoc#cssClass[`cssClass()`]
 |Any string valid as a CSS class
 |the css class that a collection should have, to allow more targetted styling in xref:rg:cfg:application-specific/application-css.adoc[`application.css`]
 
 
-|xref:rg:ant:CollectionLayout/defaultView.adoc[`defaultView()`]
+|xref:rg:ant:CollectionLayout.adoc#defaultView[`defaultView()`]
 |`table`, `excel`, `calendar`, `map`, ...
 |Which view is selected by default, if multiple views are available.
 
@@ -30,18 +30,18 @@ See the (non-ASF) link:https://platform.incode.org[Incode Platform^] for further
 
 
 
-|xref:rg:ant:CollectionLayout/describedAs.adoc[`describedAs()`]
+|xref:rg:ant:CollectionLayout.adoc#describedAs[`describedAs()`]
 |String.
 |description of this collection, eg to be rendered in a tooltip.
 
 
-|xref:rg:ant:CollectionLayout/hidden.adoc[`hidden()`]
+|xref:rg:ant:CollectionLayout.adoc#hidden[`hidden()`]
 |`EVERYWHERE`, `OBJECT_FORMS`, `NOWHERE` +
 (`NOWHERE`)
 |indicates where (in the UI) the collection should be hidden from the user.
 
 
-|xref:rg:ant:CollectionLayout/named.adoc[named()]
+|xref:rg:ant:CollectionLayout.adoc#named[named()]
 |String.
 |to override the name inferred from the collection's name in code. +
 
@@ -53,12 +53,12 @@ A typical use case is if the desired name is a reserved Java keyword, such as `d
 |whether to HTML escape the name of this property.
 
 
-|xref:rg:ant:CollectionLayout/paged.adoc[`paged()`]
+|xref:rg:ant:CollectionLayout.adoc#paged[`paged()`]
 |Positive integer
 |the page size for instances of this class when rendered within a table.
 
 
-|xref:rg:ant:CollectionLayout/sortedBy.adoc[`sortedBy()`]
+|xref:rg:ant:CollectionLayout.adoc#sortedBy[`sortedBy()`]
 |Subclass of `java.util.Comparator` for element type
 |indicates that the elements in the `java.util.SortedSet` collection should be sorted according to a specified `Comparator` rather than their natural sort order.
 
@@ -108,3 +108,10 @@ so that boilerplate-busting tools such as link:https://projectlombok.org/[Projec
 
 
 
+include::CollectionLayout/cssClass.adoc[leveloffset=+1]
+include::CollectionLayout/defaultView.adoc[leveloffset=+1]
+include::CollectionLayout/describedAs.adoc[leveloffset=+1]
+include::CollectionLayout/hidden.adoc[leveloffset=+1]
+include::CollectionLayout/named.adoc[leveloffset=+1]
+include::CollectionLayout/paged.adoc[leveloffset=+1]
+include::CollectionLayout/sortedBy.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/CollectionLayout/cssClass.adoc b/core/_adoc-rg/modules/ant/pages/CollectionLayout/cssClass.adoc
index d996319..ac07170 100644
--- a/core/_adoc-rg/modules/ant/pages/CollectionLayout/cssClass.adoc
+++ b/core/_adoc-rg/modules/ant/pages/CollectionLayout/cssClass.adoc
@@ -32,8 +32,8 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 This attribute can also be applied to:
 
-* xref:rg:ant:DomainObjectLayout/cssClass.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/cssClass.adoc[view models]
-* xref:rg:ant:ActionLayout/cssClass.adoc[actions]
-* xref:rg:ant:PropertyLayout/cssClass.adoc[properties]
-* xref:rg:ant:ParameterLayout/cssClass.adoc[parameters].
+* xref:rg:ant:DomainObjectLayout.adoc#cssClass[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#cssClass[view models]
+* xref:rg:ant:ActionLayout.adoc#cssClass[actions]
+* xref:rg:ant:PropertyLayout.adoc#cssClass[properties]
+* xref:rg:ant:ParameterLayout.adoc#cssClass[parameters].
diff --git a/core/_adoc-rg/modules/ant/pages/CollectionLayout/defaultView.adoc b/core/_adoc-rg/modules/ant/pages/CollectionLayout/defaultView.adoc
index 9054fa9..40b6d14 100644
--- a/core/_adoc-rg/modules/ant/pages/CollectionLayout/defaultView.adoc
+++ b/core/_adoc-rg/modules/ant/pages/CollectionLayout/defaultView.adoc
@@ -25,7 +25,7 @@ public class BusRoute {
 
 [NOTE]
 ====
-This attribute takes precedence over any value for the xref:rg:ant:CollectionLayout/render.adoc[`@CollectionLayout#render()`] attribute.  For example, if the
+This attribute takes precedence over any value for the xref:rg:ant:CollectionLayout.adoc#render[`@CollectionLayout#render()`] attribute.  For example, if the
 `defaultView` attribute is defined to "table", then the table will be show even if `render` is set to `LAZILY`.
 ====
 
diff --git a/core/_adoc-rg/modules/ant/pages/CollectionLayout/describedAs.adoc b/core/_adoc-rg/modules/ant/pages/CollectionLayout/describedAs.adoc
index 0920874..645e32a 100644
--- a/core/_adoc-rg/modules/ant/pages/CollectionLayout/describedAs.adoc
+++ b/core/_adoc-rg/modules/ant/pages/CollectionLayout/describedAs.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 
 The `describedAs()` attribute is used to provide a short description of the collection to the user.  In the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'.
 
-The `describedAs()` attribute can also be specified for xref:rg:ant:PropertyLayout/describedAs.adoc[properties], xref:rg:ant:ActionLayout/describedAs.adoc[actions], xref:rg:ant:ParameterLayout/describedAs.adoc[parameters], xref:rg:ant:DomainObjectLayout/describedAs.adoc[domain objects] and xref:rg:ant:ViewModelLayout/describedAs.adoc[view models].
+The `describedAs()` attribute can also be specified for xref:rg:ant:PropertyLayout.adoc#describedAs[properties], xref:rg:ant:ActionLayout.adoc#describedAs[actions], xref:rg:ant:ParameterLayout.adoc#describedAs[parameters], xref:rg:ant:DomainObjectLayout.adoc#describedAs[domain objects] and xref:rg:ant:ViewModelLayout.adoc#describedAs[view models].
 
 
 For example:
diff --git a/core/_adoc-rg/modules/ant/pages/CollectionLayout/hidden.adoc b/core/_adoc-rg/modules/ant/pages/CollectionLayout/hidden.adoc
index c2633ee..687ca41 100644
--- a/core/_adoc-rg/modules/ant/pages/CollectionLayout/hidden.adoc
+++ b/core/_adoc-rg/modules/ant/pages/CollectionLayout/hidden.adoc
@@ -9,7 +9,7 @@ The `hidden()` attribute indicates where (in the UI) the collection should be hi
 
 [TIP]
 ====
-It is also possible to use xref:rg:ant:Collection/hidden.adoc[`@Collection#hidden()`] to hide an action at the domain layer.
+It is also possible to use xref:rg:ant:Collection.adoc#hidden[`@Collection#hidden()`] to hide an action at the domain layer.
 Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
 ====
 
@@ -57,5 +57,5 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 This attribute can also be applied to:
 
-* xref:rg:ant:ActionLayout/hidden.adoc[actions]
-* xref:rg:ant:PropertyLayout/hidden.adoc[properties].
+* xref:rg:ant:ActionLayout.adoc#hidden[actions]
+* xref:rg:ant:PropertyLayout.adoc#hidden[properties].
diff --git a/core/_adoc-rg/modules/ant/pages/CollectionLayout/named.adoc b/core/_adoc-rg/modules/ant/pages/CollectionLayout/named.adoc
index dc32069..68ede32 100644
--- a/core/_adoc-rg/modules/ant/pages/CollectionLayout/named.adoc
+++ b/core/_adoc-rg/modules/ant/pages/CollectionLayout/named.adoc
@@ -45,9 +45,9 @@ The framework also provides a separate, powerful mechanism for xref:ug:btb:i18n.
 
 This attribute can also be specified for:
 
-* xref:rg:ant:ActionLayout/named.adoc[actions]
-* xref:rg:ant:PropertyLayout/named.adoc[properties]
-* xref:rg:ant:ParameterLayout/named.adoc[parameters]
-* xref:rg:ant:DomainObjectLayout/named.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/named.adoc[view models]
-* xref:rg:ant:DomainServiceLayout/named.adoc[domain services].
+* xref:rg:ant:ActionLayout.adoc#named[actions]
+* xref:rg:ant:PropertyLayout.adoc#named[properties]
+* xref:rg:ant:ParameterLayout.adoc#named[parameters]
+* xref:rg:ant:DomainObjectLayout.adoc#named[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#named[view models]
+* xref:rg:ant:DomainServiceLayout.adoc#named[domain services].
diff --git a/core/_adoc-rg/modules/ant/pages/CollectionLayout/paged.adoc b/core/_adoc-rg/modules/ant/pages/CollectionLayout/paged.adoc
index 83035f0..5f3866c 100644
--- a/core/_adoc-rg/modules/ant/pages/CollectionLayout/paged.adoc
+++ b/core/_adoc-rg/modules/ant/pages/CollectionLayout/paged.adoc
@@ -40,5 +40,5 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 This attribute can also be applied to:
 
-* xref:rg:ant:DomainObjectLayout/paged.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/paged.adoc[view models].
+* xref:rg:ant:DomainObjectLayout.adoc#paged[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#paged[view models].
diff --git a/core/_adoc-rg/modules/ant/pages/Column.adoc b/core/_adoc-rg/modules/ant/pages/Column.adoc
index 25326b2..f66ce24 100644
--- a/core/_adoc-rg/modules/ant/pages/Column.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Column.adoc
@@ -31,11 +31,11 @@ public class Customer {
     public void setMiddleInitial(String middleInitial) { /* ... */ }
 ----
 
-Isis also provides xref:rg:ant:Property/optionality.adoc[`@Property#optionality()`] attribute.  If both are specified, Apache Isis will check when it initializes for any contradictions, and will fail-fast with an appropriate error message in the log if there are.
+Isis also provides xref:rg:ant:Property.adoc#optionality[`@Property#optionality()`] attribute.  If both are specified, Apache Isis will check when it initializes for any contradictions, and will fail-fast with an appropriate error message in the log if there are.
 
 You should also be aware that in the lack of either the `@Column#allowsNull()` or the `@Property#optionality()` attributes, that the JDO and Apache Isis defaults differ.  Apache Isis rule is straight-forward: properties are assumed to be required.  JDO on the other hand specifies that only primitive types are mandatory; everything else is assumed to be optional.  Therefore a lack of either annotation can also trigger the fail-fast validation check.
 
-In the vast majority of cases you should be fine just to add the `@Column#allowsNull()` attribute to the getter.  But see the documentation for xref:rg:ant:Property/optionality.adoc[`@Property#optionality()`] attribute for discussion on one or two minor edge cases.
+In the vast majority of cases you should be fine just to add the `@Column#allowsNull()` attribute to the getter.  But see the documentation for xref:rg:ant:Property.adoc#optionality[`@Property#optionality()`] attribute for discussion on one or two minor edge cases.
 
 
 == Length for ``String``s
@@ -58,7 +58,7 @@ public class Customer {
     public void setLastName(String lastName) { /* ... */ }
 ----
 
-Isis also provides xref:rg:ant:Property/maxLength.adoc[`@Property#maxLength()`] attribute.  If both are specified, Apache Isis will check when it initializes for any contradictions, and will fail-fast with an appropriate error message in the log if there are.
+Isis also provides xref:rg:ant:Property.adoc#maxLength[`@Property#maxLength()`] attribute.  If both are specified, Apache Isis will check when it initializes for any contradictions, and will fail-fast with an appropriate error message in the log if there are.
 
 
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObject.adoc b/core/_adoc-rg/modules/ant/pages/DomainObject.adoc
index 55887c7..c61664f 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObject.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObject.adoc
@@ -17,14 +17,14 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:DomainObject/auditing.adoc[`auditing()`]
+|xref:rg:ant:DomainObject.adoc#auditing[`auditing()`]
 |`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
 (`AS_CONFIGURED`)
 |indicates whether each of the changed properties of an object should be submitted to the registered
 xref:rg:svc:persistence-layer-spi/AuditerService.adoc[`AuditerService`](s)
 
 
-|xref:rg:ant:DomainObject/autoCompleteRepository.adoc[`autoCompleteRepository()`]
+|xref:rg:ant:DomainObject.adoc#autoCompleteRepository[`autoCompleteRepository()`]
 |Domain service class
 |nominate a method on a domain service to be used for looking up instances of the domain object
 
@@ -35,72 +35,72 @@ xref:rg:svc:persistence-layer-spi/AuditerService.adoc[`AuditerService`](s)
 |override the method name to use on the auto-complete repository
 
 
-|xref:rg:ant:DomainObject/bounding.adoc[`bounding()`]
+|xref:rg:ant:DomainObject.adoc#bounding[`bounding()`]
 |`true`, `false` +
 (`false`)
 |Whether the number of instances of this domain class is relatively small (a "bounded" set), such that instances could be selected from a drop-down list box or similar.
 
-|xref:rg:ant:DomainObject/createdLifecycleEvent.adoc[`created-` +
+|xref:rg:ant:DomainObject.adoc#createdLifecycleEvent[`created-` +
 `LifecycleEvent()`]
 |subtype of `ObjectCreatedEvent` +
 (`ObjectCreatedEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance is created
 
-|xref:rg:ant:DomainObject/editing.adoc[`editing()`]
+|xref:rg:ant:DomainObject.adoc#editing[`editing()`]
 |`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
 (`AS_CONFIGURED`)
 |whether the object's properties and collections can be edited or not (ie whether the instance should be considered to be immutable)
 
 
-|xref:rg:ant:DomainObject/mixinMethod.adoc[`mixinMethod()`]
+|xref:rg:ant:DomainObject.adoc#mixinMethod[`mixinMethod()`]
 |Method name within the mixin
 |How to recognize the "reserved" method name, meaning that the mixin's own name will be inferred from the mixin type.
 Typical examples are "exec", "execute", "invoke", "apply" and so on.
 The default "reserved" method name is `$$`.
 
 
-|xref:rg:ant:DomainObject/nature.adoc[`nature()`]
+|xref:rg:ant:DomainObject.adoc#nature[`nature()`]
 |`NOT_SPECIFIED`, `JDO_ENTITY`, `EXTERNAL_ENTITY`, `INMEMORY_ENTITY`, `MIXIN`, `VIEW_MODEL` (`NOT_SPECIFIED`)
 |whether the domain object logically is an entity (part of the domain layer) or is a view model (part of the application layer); or is a mixin.
 If an entity, indicates how its persistence is managed.
 
 
-|xref:rg:ant:DomainObject/objectType.adoc[`objectType()`]
+|xref:rg:ant:DomainObject.adoc#objectType[`objectType()`]
 |(none, which implies fully qualified class name)
 |specify an alias for the domain class used to uniquely identify the object both within the Apache Isis runtime and externally
 
 
-|xref:rg:ant:DomainObject/persistedLifecycleEvent.adoc[`persisted-` +
+|xref:rg:ant:DomainObject.adoc#persistedLifecycleEvent[`persisted-` +
 `LifecycleEvent()`]
 |subtype of `ObjectPersistedEvent` +
 (`ObjectPersistedEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance has just been persisted
 
-|xref:rg:ant:DomainObject/persistingLifecycleEvent.adoc[`persisting-` +
+|xref:rg:ant:DomainObject.adoc#persistingLifecycleEvent[`persisting-` +
 `LifecycleEvent()`]
 |subtype of `ObjectPersistingEvent` +
 (`ObjectPersistingEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance is about to be persisted
 
-|xref:rg:ant:DomainObject/publishing.adoc[`publishing()`]
+|xref:rg:ant:DomainObject.adoc#publishing[`publishing()`]
 |`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
 (`AS_CONFIGURED`)
 |whether changes to the object should be published to the registered xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
 
 
-|xref:rg:ant:DomainObject/removingLifecycleEvent.adoc[`removing-` +
+|xref:rg:ant:DomainObject.adoc#removingLifecycleEvent[`removing-` +
 `LifecycleEvent()`]
 |subtype of `ObjectRemovingEvent` +
 (`ObjectRemovingEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance is about to be deleted
 
-|xref:rg:ant:DomainObject/updatedLifecycleEvent.adoc[`updated-` +
+|xref:rg:ant:DomainObject.adoc#updatedLifecycleEvent[`updated-` +
 `LifecycleEvent()`]
 |subtype of `ObjectUpdatedEvent` +
 (`ObjectUpdatedEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance has just been updated
 
-|xref:rg:ant:DomainObject/updatingLifecycleEvent.adoc[`updating-` +
+|xref:rg:ant:DomainObject.adoc#updatingLifecycleEvent[`updating-` +
 `LifecycleEvent()`]
 |subtype of `ObjectUpdatingEvent` +
 (`ObjectUpdatingEvent.Default`)
@@ -134,3 +134,18 @@ public class Customer {
 
 
 
+include::DomainObject/auditing.adoc[leveloffset=+1]
+include::DomainObject/autoCompleteRepository.adoc[leveloffset=+1]
+include::DomainObject/bounding.adoc[leveloffset=+1]
+include::DomainObject/createdLifecycleEvent.adoc[leveloffset=+1]
+include::DomainObject/editing.adoc[leveloffset=+1]
+include::DomainObject/loadedLifecycleEvent.adoc[leveloffset=+1]
+include::DomainObject/mixinMethod.adoc[leveloffset=+1]
+include::DomainObject/nature.adoc[leveloffset=+1]
+include::DomainObject/persistedLifecycleEvent.adoc[leveloffset=+1]
+include::DomainObject/persistingLifecycleEvent.adoc[leveloffset=+1]
+include::DomainObject/objectType.adoc[leveloffset=+1]
+include::DomainObject/publishing.adoc[leveloffset=+1]
+include::DomainObject/removingLifecycleEvent.adoc[leveloffset=+1]
+include::DomainObject/updatingLifecycleEvent.adoc[leveloffset=+1]
+include::DomainObject/updatedLifecycleEvent.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObject/actionDomainEvent.adoc b/core/_adoc-rg/modules/ant/pages/DomainObject/actionDomainEvent.adoc
index a23e4de..c3c3163 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObject/actionDomainEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObject/actionDomainEvent.adoc
@@ -4,7 +4,7 @@ include::_attributes.adoc[]
 
 
 Whenever an action of a domain object is interacted with then a domain event will be fired, for each of the various phases (hidden, disabled, validated, executing, executed).
-Using xref:rg:ant:Action/domainEvent.adoc[`@Action#domainEvent()`], the actual domain event class fired can be customised.
+Using xref:rg:ant:Action.adoc#domainEvent[`@Action#domainEvent()`], the actual domain event class fired can be customised.
 the `@DomainObject#actionDomainEvent()` attribute allows a common event domain class to be fired for all of the actions of the domain object.
 
 For example:
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObject/autoCompleteRepository.adoc b/core/_adoc-rg/modules/ant/pages/DomainObject/autoCompleteRepository.adoc
index f38796e..88561ff 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObject/autoCompleteRepository.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObject/autoCompleteRepository.adoc
@@ -95,6 +95,6 @@ public class Customers {
 ====
 The method specified must be an action, that is, part of the Isis metamodel.
 Said another way: it must not be annotated with xref:rg:ant:Programmatic.adoc[`@Programmatic`].
-However, it *can* be hidden or placed on a domain service with xref:rg:ant:DomainService/nature.adoc[nature] of `DOMAIN`, such that the action would not be rendered otherwise in the UI.
-Also, the action cannot be xref:rg:ant:Action/restrictTo.adoc[restricted to] prototyping only.
+However, it *can* be hidden or placed on a domain service with xref:rg:ant:DomainService.adoc#nature[nature] of `DOMAIN`, such that the action would not be rendered otherwise in the UI.
+Also, the action cannot be xref:rg:ant:Action.adoc#restrictTo[restricted to] prototyping only.
 ====
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObject/bounding.adoc b/core/_adoc-rg/modules/ant/pages/DomainObject/bounding.adoc
index c51633e..6ec089e 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObject/bounding.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObject/bounding.adoc
@@ -30,7 +30,7 @@ public class Currency {
 [TIP]
 ====
 There is nothing to prevent you from using this attribute for regular mutable entities, and indeed this is sometimes worth doing during early prototyping.
-However, if there is no realistic upper bound to the number of instances of an entity that might be created, generally you should use xref:rg:cms:methods/prefixes/autoComplete.adoc[`autoComplete...()`] supporting method or the xref:rg:ant:DomainObject/autoCompleteRepository.adoc[`@DomainObject#autoCompleteRepository()`] attribute instead.
+However, if there is no realistic upper bound to the number of instances of an entity that might be created, generally you should use xref:rg:cms:methods/prefixes/autoComplete.adoc[`autoComplete...()`] supporting method or the xref:rg:ant:DomainObject.adoc#autoCompleteRepository[`@DomainObject#autoCompleteRepository()`] attribute instead.
 ====
 
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObject/collectionDomainEvent.adoc b/core/_adoc-rg/modules/ant/pages/DomainObject/collectionDomainEvent.adoc
index 5bd25d0..a5e319f 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObject/collectionDomainEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObject/collectionDomainEvent.adoc
@@ -4,7 +4,7 @@ include::_attributes.adoc[]
 
 
 Whenever a collection of a domain object is interacted with then a domain event will be fired, for each of the various phases (hidden, disabled, validated, executing, executed).
-Using xref:rg:ant:Collection/domainEvent.adoc[`@Collection#domainEvent()`], the actual domain event class fired can be customised.
+Using xref:rg:ant:Collection.adoc#domainEvent[`@Collection#domainEvent()`], the actual domain event class fired can be customised.
 the `@DomainObject#collectionDomainEvent()` attribute allows a common event domain class to be fired for all of the collections of the domain object.
 
 For example:
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObject/propertyDomainEvent.adoc b/core/_adoc-rg/modules/ant/pages/DomainObject/propertyDomainEvent.adoc
index 6859166..12f472d 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObject/propertyDomainEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObject/propertyDomainEvent.adoc
@@ -4,7 +4,7 @@ include::_attributes.adoc[]
 
 
 Whenever a property of a domain object is interacted with then a domain event will be fired, for each of the various phases (hidden, disabled, validated, executing, executed).
-Using xref:rg:ant:Property/domainEvent.adoc[`@Property#domainEvent()`], the actual domain event class fired can be customised.
+Using xref:rg:ant:Property.adoc#domainEvent[`@Property#domainEvent()`], the actual domain event class fired can be customised.
 the `@DomainObject#propertyDomainEvent()` attribute allows a common event domain class to be fired for all of the properties of the domain object.
 
 For example:
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObject/publishing.adoc b/core/_adoc-rg/modules/ant/pages/DomainObject/publishing.adoc
index b87d416..b8eca03 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObject/publishing.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObject/publishing.adoc
@@ -43,10 +43,10 @@ public class InterestRate {
 
 This attribute is also supported for:
 
-* xref:rg:ant:Action/publishing.adoc[actions]
+* xref:rg:ant:Action.adoc#publishing[actions]
 +
 where it controls whether action invocations are published as events, and for
 
-* xref:rg:ant:Property/publishing.adoc[properties]
+* xref:rg:ant:Property.adoc#publishing[properties]
 +
 where it controls whether property edits are published as events.
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout.adoc
index 5556d30..52526a2 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout.adoc
@@ -24,18 +24,18 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:DomainObjectLayout/bookmarking.adoc[`bookmarking()`]
+|xref:rg:ant:DomainObjectLayout.adoc#bookmarking[`bookmarking()`]
 |`AS_ROOT`, `AS_CHILD`, `NEVER` +
 (`NEVER`)
 |whether (and how) this domain object should be automatically bookmarked
 
 
-|xref:rg:ant:DomainObjectLayout/cssclass.adoc[`cssClass()`]
+|xref:rg:ant:DomainObjectLayout.adoc#cssclass[`cssClass()`]
 |Any string valid as a CSS class
 |the css class that a domain class (type) should have, to allow more targetted styling in xref:rg:cfg:application-specific/application-css.adoc[`application.css`]
 
 
-|xref:rg:ant:DomainObjectLayout/cssClassFa.adoc[`cssClassFa()`]
+|xref:rg:ant:DomainObjectLayout.adoc#cssClassFa[`cssClassFa()`]
 |Any valid link:http://fortawesome.github.io/Font-Awesome/[Font awesome] icon name
 |specify a font awesome icon for the action's menu link or icon. +
 
@@ -46,43 +46,43 @@ The table below summarizes the annotation's attributes.
 |Currently unused.
 
 
-|xref:rg:ant:DomainObjectLayout/cssClassUiEvent.adoc[`cssClassUiEvent()`]
+|xref:rg:ant:DomainObjectLayout.adoc#cssClassUiEvent[`cssClassUiEvent()`]
 |subtype of `CssClassUiEvent` +
 (`CssClassUiEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain a CSS class for the domain object.
 
-|xref:rg:ant:DomainObjectLayout/describedAs.adoc[`describedAs()`]
+|xref:rg:ant:DomainObjectLayout.adoc#describedAs[`describedAs()`]
 |String.
 |description of this class, eg to be rendered in a tooltip.
 
-|xref:rg:ant:DomainObjectLayout/iconUiEvent.adoc[`iconUiEvent()`]
+|xref:rg:ant:DomainObjectLayout.adoc#iconUiEvent[`iconUiEvent()`]
 |subtype of `IconUiEvent` +
 (`IconUiEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain the icon (name) for the domain object.
 
-|xref:rg:ant:DomainObjectLayout/layoutUiEvent.adoc[`layoutUiEvent()`]
+|xref:rg:ant:DomainObjectLayout.adoc#layoutUiEvent[`layoutUiEvent()`]
 |subtype of `LayoutUiEvent` +
 (`LayoutUiEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain the layout (name) for the domain object.
 
-|xref:rg:ant:DomainObjectLayout/named.adoc[`named()`]
+|xref:rg:ant:DomainObjectLayout.adoc#named[`named()`]
 |String.
 |to override the name inferred from the action's name in code. +
 
 A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
 
 
-|xref:rg:ant:DomainObjectLayout/paged.adoc[`paged()`]
+|xref:rg:ant:DomainObjectLayout.adoc#paged[`paged()`]
 |Positive integer
 |the page size for instances of this class when rendered within a table (as returned from an action invocation)
 
 
-|xref:rg:ant:DomainObjectLayout/plural.adoc[`plural()`]
+|xref:rg:ant:DomainObjectLayout.adoc#plural[`plural()`]
 |String.
 |the plural name of the class
 
 
-|xref:rg:ant:DomainObjectLayout/titleUiEvent.adoc[`titleUiEvent()`]
+|xref:rg:ant:DomainObjectLayout.adoc#titleUiEvent[`titleUiEvent()`]
 |subtype of `TitleUiEvent` +
 (`TitleUiEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain the title for the domain object.
@@ -122,3 +122,14 @@ Note that there is (currently) no support for specifying UI hints for domain obj
 
 
 
+include:DomainObjectLayout/bookmarking.adoc[leveloffset=+1]
+include:DomainObjectLayout/cssClass.adoc[leveloffset=+1]
+include:DomainObjectLayout/cssClassFa.adoc[leveloffset=+1]
+include:DomainObjectLayout/cssClassUiEvent.adoc[leveloffset=+1]
+include:DomainObjectLayout/describedAs.adoc[leveloffset=+1]
+include:DomainObjectLayout/iconUiEvent.adoc[leveloffset=+1]
+include:DomainObjectLayout/layoutUiEvent.adoc[leveloffset=+1]
+include:DomainObjectLayout/named.adoc[leveloffset=+1]
+include:DomainObjectLayout/paged.adoc[leveloffset=+1]
+include:DomainObjectLayout/plural.adoc[leveloffset=+1]
+include:DomainObjectLayout/titleUiEvent.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/bookmarking.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/bookmarking.adoc
index dd40799..3d0a1f8 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/bookmarking.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/bookmarking.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 
 
 The `bookmarking()` attribute indicates that an entity is automatically bookmarked.
-This attribute is also supported for  xref:rg:ant:Action/bookmarking.adoc[domain objects].
+This attribute is also supported for  xref:rg:ant:Action.adoc#bookmarking[domain objects].
 
 (In the Wicket viewer), a link to a bookmarked object is shown in the bookmarks panel:
 
@@ -65,5 +65,5 @@ The nesting can be done to any level; the Estatio screenshot also shows a bookma
 
 == See also
 
-This attribute can also be applied to xref:rg:ant:ViewModelLayout/bookmarking.adoc[view models].
+This attribute can also be applied to xref:rg:ant:ViewModelLayout.adoc#bookmarking[view models].
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClass.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClass.adoc
index d1ce9bf..e78e9ff 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClass.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClass.adoc
@@ -24,7 +24,7 @@ public class ToDoItem { /* ... */ }
 
 [NOTE]
 ====
-The similar xref:rg:ant:DomainObjectLayout/cssClassFa.adoc[`@DomainObjectLayout#cssClassFa()`] annotation attribute is also used as a hint to apply CSS, but in particular to allow http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icons] to be rendered as the icon for classes.
+The similar xref:rg:ant:DomainObjectLayout.adoc#cssClassFa[`@DomainObjectLayout#cssClassFa()`] annotation attribute is also used as a hint to apply CSS, but in particular to allow http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icons] to be rendered as the icon for classes.
 ====
 
 
@@ -33,9 +33,9 @@ The similar xref:rg:ant:DomainObjectLayout/cssClassFa.adoc[`@DomainObjectLayout#
 
 This attribute can also be applied to:
 
-* xref:rg:ant:ViewModelLayout/cssClass.adoc[view models]
-* xref:rg:ant:ActionLayout/cssClass.adoc[actions]
-* xref:rg:ant:PropertyLayout/cssClass.adoc[properties],
-* xref:rg:ant:CollectionLayout/cssClass.adoc[collections]
-* xref:rg:ant:ParameterLayout/cssClass.adoc[parameters].
+* xref:rg:ant:ViewModelLayout.adoc#cssClass[view models]
+* xref:rg:ant:ActionLayout.adoc#cssClass[actions]
+* xref:rg:ant:PropertyLayout.adoc#cssClass[properties],
+* xref:rg:ant:CollectionLayout.adoc#cssClass[collections]
+* xref:rg:ant:ParameterLayout.adoc#cssClass[parameters].
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClassFa.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClassFa.adoc
index 5a5e5e0..15c4b88 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClassFa.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClassFa.adoc
@@ -30,7 +30,7 @@ The related `cssClassFaPosition()` attribute is currently unused for domain obje
 
 [TIP]
 ====
-The similar xref:rg:ant:DomainObjectLayout/cssClass.adoc[`@DomainObjectLayout#cssClass()`] annotation attribute is also used as a hint to apply CSS, but for wrapping the representation of an object or object member so that it can be styled in an application-specific way.
+The similar xref:rg:ant:DomainObjectLayout.adoc#cssClass[`@DomainObjectLayout#cssClass()`] annotation attribute is also used as a hint to apply CSS, but for wrapping the representation of an object or object member so that it can be styled in an application-specific way.
 ====
 
 
@@ -38,6 +38,6 @@ The similar xref:rg:ant:DomainObjectLayout/cssClass.adoc[`@DomainObjectLayout#cs
 
 These attributes can also be applied to:
 
-* xref:rg:ant:ViewModelLayout/cssClassFa.adoc[view models] to specify the object's icon, and
-* xref:rg:ant:ActionLayout/cssClassFa.adoc[actions] to specify an icon for the action's representation as a button or menu item.
+* xref:rg:ant:ViewModelLayout.adoc#cssClassFa[view models] to specify the object's icon, and
+* xref:rg:ant:ActionLayout.adoc#cssClassFa[actions] to specify an icon for the action's representation as a button or menu item.
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClassUiEvent.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClassUiEvent.adoc
index e8579df..f36b995 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClassUiEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/cssClassUiEvent.adoc
@@ -118,5 +118,5 @@ However, events can be raised programmatically either by calling the xref:rg:svc
 
 == See also
 
-This attribute can also be applied to xref:rg:ant:ViewModelLayout/cssClassUiEvent.adoc[view models].
+This attribute can also be applied to xref:rg:ant:ViewModelLayout.adoc#cssClassUiEvent[view models].
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/describedAs.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/describedAs.adoc
index 093286c..e70b7aa 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/describedAs.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/describedAs.adoc
@@ -24,9 +24,9 @@ public class ProspectiveSale {
 
 The attribute can also be specified for:
 
-* xref:rg:ant:CollectionLayout/describedAs.adoc[collections]
-* xref:rg:ant:PropertyLayout/describedAs.adoc[properties]
-* xref:rg:ant:ActionLayout/describedAs.adoc[actions]
-* xref:rg:ant:ParameterLayout/describedAs.adoc[parameters] and
-* xref:rg:ant:ViewModelLayout/describedAs.adoc[view models].
+* xref:rg:ant:CollectionLayout.adoc#describedAs[collections]
+* xref:rg:ant:PropertyLayout.adoc#describedAs[properties]
+* xref:rg:ant:ActionLayout.adoc#describedAs[actions]
+* xref:rg:ant:ParameterLayout.adoc#describedAs[parameters] and
+* xref:rg:ant:ViewModelLayout.adoc#describedAs[view models].
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/iconUiEvent.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/iconUiEvent.adoc
index e7f92e5..b156ba3 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/iconUiEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/iconUiEvent.adoc
@@ -113,5 +113,5 @@ However, events can be raised programmatically by calling the xref:rg:svc:core-d
 
 == See also
 
-This attribute can also be applied to xref:rg:ant:ViewModelLayout/iconNameUiEvent.adoc[view models].
+This attribute can also be applied to xref:rg:ant:ViewModelLayout.adoc#iconNameUiEvent[view models].
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/layoutUiEvent.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/layoutUiEvent.adoc
index c96dfdb..20e6e5e 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/layoutUiEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/layoutUiEvent.adoc
@@ -112,5 +112,5 @@ However, events can be raised programmatically by calling the xref:rg:svc:core-d
 
 == See also
 
-This attribute can also be applied to xref:rg:ant:ViewModelLayout/layoutUiEvent.adoc[view models].
+This attribute can also be applied to xref:rg:ant:ViewModelLayout.adoc#layoutUiEvent[view models].
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/named.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/named.adoc
index 227f4ee..50d77d5 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/named.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/named.adoc
@@ -26,7 +26,7 @@ public class CustomerImpl implements Customer{
 }
 ----
 
-It's also possible to specify a xref:rg:ant:DomainObjectLayout/plural.adoc[plural form] of the name, used by the framework when rendering a standalone collection of the domain object.
+It's also possible to specify a xref:rg:ant:DomainObjectLayout.adoc#plural[plural form] of the name, used by the framework when rendering a standalone collection of the domain object.
 
 
 [TIP]
@@ -39,9 +39,9 @@ The framework also provides a separate, powerful mechanism for xref:ug:btb:i18n.
 
 The attribute can also be specified for:
 
-* xref:rg:ant:ActionLayout/named.adoc[actions]
-* xref:rg:ant:CollectionLayout/named.adoc[collections]
-* xref:rg:ant:PropertyLayout/named.adoc[properties]
-* xref:rg:ant:ParameterLayout/named.adoc[parameters]
-* xref:rg:ant:ViewModelLayout/named.adoc[view models]
-* xref:rg:ant:DomainServiceLayout/named.adoc[domain services].
+* xref:rg:ant:ActionLayout.adoc#named[actions]
+* xref:rg:ant:CollectionLayout.adoc#named[collections]
+* xref:rg:ant:PropertyLayout.adoc#named[properties]
+* xref:rg:ant:ParameterLayout.adoc#named[parameters]
+* xref:rg:ant:ViewModelLayout.adoc#named[view models]
+* xref:rg:ant:DomainServiceLayout.adoc#named[domain services].
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/paged.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/paged.adoc
index 339e444..59326e3 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/paged.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/paged.adoc
@@ -36,5 +36,5 @@ It is also possible to specify a global default for the page size of standalone
 
 This attribute can also be applied to:
 
-* xref:rg:ant:ViewModelLayout/paged.adoc[view models], and
-* xref:rg:ant:CollectionLayout/paged.adoc[collections]
+* xref:rg:ant:ViewModelLayout.adoc#paged[view models], and
+* xref:rg:ant:CollectionLayout.adoc#paged[collections]
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/plural.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/plural.adoc
index 2d6e67a..8043d6c 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/plural.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/plural.adoc
@@ -21,5 +21,5 @@ public class Child {
 
 == See also
 
-This attribute is also supported for xref:rg:ant:ViewModelLayout/plural.adoc[view models].
+This attribute is also supported for xref:rg:ant:ViewModelLayout.adoc#plural[view models].
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/titleUiEvent.adoc b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/titleUiEvent.adoc
index 7acb03b..0c501c3 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/titleUiEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainObjectLayout/titleUiEvent.adoc
@@ -112,4 +112,4 @@ However, events can be raised programmatically either by calling the xref:rg:svc
 
 == See also
 
-This attribute can also be applied to xref:rg:ant:ViewModelLayout/titleUiEvent.adoc[view models].
+This attribute can also be applied to xref:rg:ant:ViewModelLayout.adoc#titleUiEvent[view models].
diff --git a/core/_adoc-rg/modules/ant/pages/DomainService.adoc b/core/_adoc-rg/modules/ant/pages/DomainService.adoc
index bda1567..344496f 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainService.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainService.adoc
@@ -20,26 +20,26 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:DomainService/nature.adoc[`nature()`]
+|xref:rg:ant:DomainService.adoc#nature[`nature()`]
 |`VIEW`, `VIEW_MENU_ONLY`, `VIEW_CONTRIBUTIONS_ONLY`, `VIEW_REST_ONLY`, `DOMAIN` (`VIEW`)
 |the nature of this service: providing actions for menus, or as contributed actions, or for the xref:vro:ROOT:about.adoc[RestfulObjects REST API], or neither
 
 
-|xref:rg:ant:DomainService/objectType.adoc[`objectType()`]
+|xref:rg:ant:DomainService.adoc#objectType[`objectType()`]
 |
-|equivalent to xref:rg:ant:DomainObject/objectType.adoc[`@DomainObject#objectType()`], specifies the objectType of the service.
+|equivalent to xref:rg:ant:DomainObject.adoc#objectType[`@DomainObject#objectType()`], specifies the objectType of the service.
 
 The instanceId for services is always "1".
 
 
-|xref:rg:ant:DomainService/repositoryFor.adoc[`repositoryFor()`]
+|xref:rg:ant:DomainService.adoc#repositoryFor[`repositoryFor()`]
 |
 |if this domain service acts as a repository for an entity type, specify that entity type.  This is used to determine an icon to use for the service (eg as shown in action prompts).
 
 
 |`menuOrder()`
 |
-|Deprecated in 1.8.0; use instead xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`]
+|Deprecated in 1.8.0; use instead xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]
 
 |===
 
@@ -65,3 +65,6 @@ public class LoanRepository {
 
 
 
+include::DomainService/nature.adoc[leveloffset=+1]
+include::DomainService/objectType.adoc[leveloffset=+1]
+include::DomainService/repositoryFor.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/DomainService/nature.adoc b/core/_adoc-rg/modules/ant/pages/DomainService/nature.adoc
index 087c21d..6e961ed 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainService/nature.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainService/nature.adoc
@@ -21,7 +21,7 @@ The service's actions appear on menus and in the REST API, but are not contribut
 +
 The service's actions are intended only to be used as contributed actions/associations to domain objects and view model
 +
-The related xref:rg:ant:ActionLayout/contributedAs.adoc[`@ActionLayout#contributedAs()`] determines whether any given (1-arg) action is contributed as an association rather than an action.
+The related xref:rg:ant:ActionLayout.adoc#contributedAs[`@ActionLayout#contributedAs()`] determines whether any given (1-arg) action is contributed as an association rather than an action.
 
 * `VIEW_REST_ONLY` +
 +
diff --git a/core/_adoc-rg/modules/ant/pages/DomainService/repositoryFor.adoc b/core/_adoc-rg/modules/ant/pages/DomainService/repositoryFor.adoc
index a2cdbf6..2daf7f0 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainService/repositoryFor.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainService/repositoryFor.adoc
@@ -3,7 +3,7 @@
 include::_attributes.adoc[]
 
 
-The `repositoryFor()` attribute is intended for domain services (probably with a xref:rg:ant:DomainService/nature.adoc[`nature=DOMAIN`]) that are intended to act as repositories for domain entities.
+The `repositoryFor()` attribute is intended for domain services (probably with a xref:rg:ant:DomainService.adoc#nature[`nature=DOMAIN`]) that are intended to act as repositories for domain entities.
 
 For example:
 
diff --git a/core/_adoc-rg/modules/ant/pages/DomainServiceLayout.adoc b/core/_adoc-rg/modules/ant/pages/DomainServiceLayout.adoc
index 283c6a6..7aebf7b 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainServiceLayout.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainServiceLayout.adoc
@@ -23,17 +23,17 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:DomainServiceLayout/menuBar.adoc[`menuBar()`]
+|xref:rg:ant:DomainServiceLayout.adoc#menuBar[`menuBar()`]
 |`PRIMARY`, `SECONDARY`, `TERTIARY` (`PRIMARY`).
 |the menubar in which the menu that holds this service's actions should reside.
 
 
-|xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`menuOrder()`]
+|xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`menuOrder()`]
 |
 |the order of the service's menu with respect to other service's.
 
 
-|xref:rg:ant:DomainServiceLayout/named.adoc[`named()`]
+|xref:rg:ant:DomainServiceLayout.adoc#named[`named()`]
 |string, eg "Customers"
 |name of this class (overriding the name derived from its name in code)
 
@@ -71,3 +71,6 @@ Note that there is (currently) no support for specifying UI hints for domain ser
 
 
 
+include::DomainServiceLayout/menuBar.adoc[leveloffset=+1]
+include::DomainServiceLayout/menuOrder.adoc[leveloffset=+1]
+include::DomainServiceLayout/named.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/menuBar.adoc b/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/menuBar.adoc
index 00e3154..f998a34 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/menuBar.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/menuBar.adoc
@@ -31,7 +31,7 @@ Domain services placed on the `TERTIARY` appear in the menu bar associated with
 image::reference-annotations/DomainServiceLayout/menuBar-tertiary.png[width="720px",link="{imagesdir}/reference-annotations/DomainServiceLayout/menuBar-tertiary.png"]
 
 
-The grouping of multiple domain services actions within a single drop-down is managed by the xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] attribute.
+The grouping of multiple domain services actions within a single drop-down is managed by the xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
 
 
 [NOTE]
diff --git a/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/menuOrder.adoc b/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/menuOrder.adoc
index 8936210..f0cca3c 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/menuOrder.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/menuOrder.adoc
@@ -9,8 +9,8 @@ The `menuOrder()` attribute determines the ordering of a domain service's action
 
 The algorithm works as follows:
 
-* first, the xref:rg:ant:DomainServiceLayout/menuBar.adoc[`menuBar()`] determines which of the three menu bars the service's actions should be rendered
-* then, the domain service's top-level name (typically explicitly specified using xref:rg:ant:DomainServiceLayout/named.adoc[`named()`]) is used to determine the top-level menu item to be rendered on the menu bar
+* first, the xref:rg:ant:DomainServiceLayout.adoc#menuBar[`menuBar()`] determines which of the three menu bars the service's actions should be rendered
+* then, the domain service's top-level name (typically explicitly specified using xref:rg:ant:DomainServiceLayout.adoc#named[`named()`]) is used to determine the top-level menu item to be rendered on the menu bar
 * finally, if there is more than domain service that has the same name, then the `menuOrder` attribute is used to order those actions on the menu item drop-down.
 
 For example, the screenshot below shows the "prototyping" menu from the (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp]:
diff --git a/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/named.adoc b/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/named.adoc
index 07ec987..6795fdc 100644
--- a/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/named.adoc
+++ b/core/_adoc-rg/modules/ant/pages/DomainServiceLayout/named.adoc
@@ -10,7 +10,7 @@ The `named()` attribute explicitly specifies the domain service's name, overridi
 [TIP]
 ====
 The value of this attribute also has an important role to play in the positioning of the domain service's actions relative to the actions of other domain services.
-See xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`menuOrder()`] for a full discussion with examples.
+See xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`menuOrder()`] for a full discussion with examples.
 ====
 
 For example:
@@ -31,9 +31,9 @@ public class CustomerRepository {
 
 This attribute can also be specified for:
 
-* xref:rg:ant:ActionLayout/named.adoc[actions]
-* xref:rg:ant:CollectionLayout/named.adoc[collections]
-* xref:rg:ant:PropertyLayout/named.adoc[properties]
-* xref:rg:ant:ParameterLayout/named.adoc[parameters]
-* xref:rg:ant:DomainObjectLayout/named.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/named.adoc[view models].
+* xref:rg:ant:ActionLayout.adoc#named[actions]
+* xref:rg:ant:CollectionLayout.adoc#named[collections]
+* xref:rg:ant:PropertyLayout.adoc#named[properties]
+* xref:rg:ant:ParameterLayout.adoc#named[parameters]
+* xref:rg:ant:DomainObjectLayout.adoc#named[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#named[view models].
diff --git a/core/_adoc-rg/modules/ant/pages/Inject.adoc b/core/_adoc-rg/modules/ant/pages/Inject.adoc
index 57a55e8..5812367 100644
--- a/core/_adoc-rg/modules/ant/pages/Inject.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Inject.adoc
@@ -9,7 +9,7 @@ In fact, it also injects domain services into xref:testing:ROOT:integ-test-suppo
 
 [NOTE]
 ====
-One omission: Apache Isis (currently) does not inject services into `o.a.i.applib.spec.Specification` instances (as used by xref:rg:ant:Property/mustSatisfy.adoc[`@Property#mustSatisfy()`] and xref:rg:ant:Parameter/mustSatisfy.adoc[`@Parameter#mustSatisfy()`] annotations.
+One omission: Apache Isis (currently) does not inject services into `o.a.i.applib.spec.Specification` instances (as used by xref:rg:ant:Property.adoc#mustSatisfy[`@Property#mustSatisfy()`] and xref:rg:ant:Parameter.adoc#mustSatisfy[`@Parameter#mustSatisfy()`] annotations.
 ====
 
 Apache Isis supports several syntaxes for injecting domain services.
diff --git a/core/_adoc-rg/modules/ant/pages/MemberOrder.adoc b/core/_adoc-rg/modules/ant/pages/MemberOrder.adoc
index e46a550..0103e25 100644
--- a/core/_adoc-rg/modules/ant/pages/MemberOrder.adoc
+++ b/core/_adoc-rg/modules/ant/pages/MemberOrder.adoc
@@ -10,8 +10,8 @@ It works in conjunction with the xref:rg:ant:MemberGroupLayout.adoc[`@MemberGrou
 
 The annotation defines two attributes:
 
-* xref:rg:ant:MemberOrder/name.adoc[`name()`]
-* xref:rg:ant:MemberOrder/sequence.adoc[`sequence()`]
+* xref:rg:ant:MemberOrder.adoc#name[`name()`]
+* xref:rg:ant:MemberOrder.adoc#sequence[`sequence()`]
 
 As this is an important topic, there is a xref:vw:ROOT:layout.adoc[separate chapter] that discussed object layout in full.
 
diff --git a/core/_adoc-rg/modules/ant/pages/Mixin.adoc b/core/_adoc-rg/modules/ant/pages/Mixin.adoc
index 634898b..443e26e 100644
--- a/core/_adoc-rg/modules/ant/pages/Mixin.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Mixin.adoc
@@ -23,7 +23,7 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:Mixin/method.adoc[`method()`]
+|xref:rg:ant:Mixin.adoc#method[`method()`]
 |Method name within the mixin
 |How to recognize the "reserved" method name, meaning that the mixin's own name will be inferred from the mixin type.
 Typical examples are "exec", "execute", "invoke", "apply" and so on.
@@ -32,6 +32,7 @@ The default "reserved" method name is `$$`.
 |===
 
 An alternative and equivalent approach is to use the
-xref:rg:ant:DomainObject/nature.adoc[`@DomainObject#nature()`] annotation with a nature of `MIXIN`.
+xref:rg:ant:DomainObject.adoc#nature[`@DomainObject#nature()`] annotation with a nature of `MIXIN`.
 
 
+include::Mixin/method.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/Nullable.adoc b/core/_adoc-rg/modules/ant/pages/Nullable.adoc
index 672a93d..c111225 100644
--- a/core/_adoc-rg/modules/ant/pages/Nullable.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Nullable.adoc
@@ -32,14 +32,14 @@ public Customer updateName(@javax.annotation.Nullable final String name) {
 ----
 
 Apache Isis does provide several other ways to specify optionality: using the
-xref:rg:ant:Property/optionality.adoc[`@Property#optionality()`] /
-xref:rg:ant:Parameter/optionality.adoc[`@Parameter#optionality()`] annotation.  For properties, the optionality
+xref:rg:ant:Property.adoc#optionality[`@Property#optionality()`] /
+xref:rg:ant:Parameter.adoc#optionality[`@Parameter#optionality()`] annotation.  For properties, the optionality
 can also be inferred from the xref:rg:ant:Column#allowsNull.adoc[`@Column#allowsNull()`] attribute.
 
 [TIP]
 ====
 See the
-xref:rg:ant:Property/optionality.adoc[`@Property#optionality()`] documentation for a much fuller discussion on
+xref:rg:ant:Property.adoc#optionality[`@Property#optionality()`] documentation for a much fuller discussion on
 the relationship between using the Apache Isis annotations vs
 xref:rg:ant:Column#allowsNull.adoc[`@Column#allowsNull()`].
 ====
diff --git a/core/_adoc-rg/modules/ant/pages/Parameter.adoc b/core/_adoc-rg/modules/ant/pages/Parameter.adoc
index 9ff2db2..b09bad6 100644
--- a/core/_adoc-rg/modules/ant/pages/Parameter.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Parameter.adoc
@@ -16,7 +16,7 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:Parameter/fileAccept.adoc[`fileAccept()`]
+|xref:rg:ant:Parameter.adoc#fileAccept[`fileAccept()`]
 |Media type or file extension
 |Hints the file type to be uploaded for xref:rg:cms:classes/value-types/Blob.adoc[`Blob`]
  or xref:rg:cms:classes/value-types/Clob.adoc[`Clob`]. +
@@ -25,23 +25,23 @@ The table below summarizes the annotation's attributes.
 
 
 
-|xref:rg:ant:Parameter/maxLength.adoc[`maxLength()`]
+|xref:rg:ant:Parameter.adoc#maxLength[`maxLength()`]
 |Positive integer
 |maximum number of characters for string parameters; ignored otherwise
 
 
 
-|xref:rg:ant:Parameter/mustSatisfy.adoc[`mustSatisfy()`]
+|xref:rg:ant:Parameter.adoc#mustSatisfy[`mustSatisfy()`]
 |implementation of `o.a.i.applib.spec.Specification`
 |allows arbitrary validation to be applied
 
 
-|xref:rg:ant:Parameter/optionality.adoc[`optionality()`]
+|xref:rg:ant:Parameter.adoc#optionality[`optionality()`]
 |`MANDATORY`, `OPTIONAL` (`MANDATORY`)
 |specifies a parameter is optional rather than mandatory
 
 
-|xref:rg:ant:Parameter/regexPattern.adoc[regexPattern()]
+|xref:rg:ant:Parameter.adoc#regexPattern[regexPattern()]
 |regular expression
 |validates the contents of a string parameter against the regular expression pattern
 
@@ -91,3 +91,8 @@ public class Customer {
 
 
 
+include:Parameter/fileAccept.adoc[leveloffset=+1]
+include:Parameter/maxLength.adoc[leveloffset=+1]
+include:Parameter/mustSatisfy.adoc[leveloffset=+1]
+include:Parameter/optionality.adoc[leveloffset=+1]
+include:Parameter/regexPattern.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/Parameter/fileAccept.adoc b/core/_adoc-rg/modules/ant/pages/Parameter/fileAccept.adoc
index 5039d9c..5e0a7f4 100644
--- a/core/_adoc-rg/modules/ant/pages/Parameter/fileAccept.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Parameter/fileAccept.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 The `fileAccept()` attribute applies only to xref:rg:cms:classes/value-types/Blob.adoc[`Blob`]
 or xref:rg:cms:classes/value-types/Clob.adoc[`Clob`] parameters, indicating the type of file to accept when
-uploading a new value.   The attribute is also supported on xref:rg:ant:Property/fileAccept.adoc[properties].
+uploading a new value.   The attribute is also supported on xref:rg:ant:Property.adoc#fileAccept[properties].
 
 For example:
 
diff --git a/core/_adoc-rg/modules/ant/pages/Parameter/maxLength.adoc b/core/_adoc-rg/modules/ant/pages/Parameter/maxLength.adoc
index df15e3d..7d997f1 100644
--- a/core/_adoc-rg/modules/ant/pages/Parameter/maxLength.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Parameter/maxLength.adoc
@@ -30,4 +30,4 @@ public class CustomerRepository {
 
 == See also
 
-This attribute can also be applied to xref:rg:ant:Property/maxLength.adoc[properties].
+This attribute can also be applied to xref:rg:ant:Property.adoc#maxLength[properties].
diff --git a/core/_adoc-rg/modules/ant/pages/Parameter/mustSatisfy.adoc b/core/_adoc-rg/modules/ant/pages/Parameter/mustSatisfy.adoc
index ee68be3..4e0afe0 100644
--- a/core/_adoc-rg/modules/ant/pages/Parameter/mustSatisfy.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Parameter/mustSatisfy.adoc
@@ -4,11 +4,11 @@ include::_attributes.adoc[]
 
 
 
-The `mustSatisfy()` attribute allows arbitrary validation to be applied to parameters using an (implementation of a) `org.apache.isis.applib.spec.Specification` object.  The attribute is also supported on xref:rg:ant:Property/mustSatisfy.adoc[properties].
+The `mustSatisfy()` attribute allows arbitrary validation to be applied to parameters using an (implementation of a) `org.apache.isis.applib.spec.Specification` object.  The attribute is also supported on xref:rg:ant:Property.adoc#mustSatisfy[properties].
 
 [TIP]
 ====
-The specification implementations can (of course) be reused between parameters and xref:rg:ant:Property/mustSatisfy.adoc[properties].
+The specification implementations can (of course) be reused between parameters and xref:rg:ant:Property.adoc#mustSatisfy[properties].
 ====
 
 The `Specification` is consulted during validation, being passed the proposed value.  If the proposed value fails, then the value returned is the used as the invalidity reason.
diff --git a/core/_adoc-rg/modules/ant/pages/Parameter/optionality.adoc b/core/_adoc-rg/modules/ant/pages/Parameter/optionality.adoc
index 5bfe2ec..4074612 100644
--- a/core/_adoc-rg/modules/ant/pages/Parameter/optionality.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Parameter/optionality.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 
 
 
-By default, Apache Isis assumes that all parameters of an action are required (mandatory).  The `optionality()` attribute allows this to be relaxed.  The attribute is also supported for xref:rg:ant:Property/optionality.adoc[properties].
+By default, Apache Isis assumes that all parameters of an action are required (mandatory).  The `optionality()` attribute allows this to be relaxed.  The attribute is also supported for xref:rg:ant:Property.adoc#optionality[properties].
 
 
 [TIP]
diff --git a/core/_adoc-rg/modules/ant/pages/Parameter/regexPattern.adoc b/core/_adoc-rg/modules/ant/pages/Parameter/regexPattern.adoc
index d8a07ad..be426bf 100644
--- a/core/_adoc-rg/modules/ant/pages/Parameter/regexPattern.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Parameter/regexPattern.adoc
@@ -37,4 +37,4 @@ public class Customer {
 
 == See also
 
-This attribute can also be specified for xref:rg:ant:Property/regexPattern.adoc[properties].
+This attribute can also be specified for xref:rg:ant:Property.adoc#regexPattern[properties].
diff --git a/core/_adoc-rg/modules/ant/pages/ParameterLayout.adoc b/core/_adoc-rg/modules/ant/pages/ParameterLayout.adoc
index afb6900..9f49077 100644
--- a/core/_adoc-rg/modules/ant/pages/ParameterLayout.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ParameterLayout.adoc
@@ -17,33 +17,33 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:ParameterLayout/cssClass.adoc[`cssClass()`]
+|xref:rg:ant:ParameterLayout.adoc#cssClass[`cssClass()`]
 |Any string valid as a CSS class
 |the css class that a parameter should have, to allow more targetted styling in xref:rg:cfg:application-specific/application-css.adoc[`application.css`]
 
 
-|xref:rg:ant:ParameterLayout/describedAs.adoc[`describedAs()`]
+|xref:rg:ant:ParameterLayout.adoc#describedAs[`describedAs()`]
 |String
 |description of this parameter, eg to be rendered in a tooltip.
 
 
-|xref:rg:ant:ParameterLayout/labelPosition.adoc[`labelPosition()`]
+|xref:rg:ant:ParameterLayout.adoc#labelPosition[`labelPosition()`]
 |`LEFT`, `TOP`, `RIGHT`, `NONE` +
 (`LEFT`)
 |in forms, the positioning of the label relative to the property value. +
 
-Default is `LEFT`, unless xref:rg:ant:ParameterLayout/multiLine.adoc[`multiLine`] in which case `TOP`.
+Default is `LEFT`, unless xref:rg:ant:ParameterLayout.adoc#multiLine[`multiLine`] in which case `TOP`.
 The value `RIGHT` is only supported for boolean parameters.
 
 
-|xref:rg:ant:ParameterLayout/multiLine.adoc[`multiLine()`]
+|xref:rg:ant:ParameterLayout.adoc#multiLine[`multiLine()`]
 |Positive integer
 |for string parameters, render as a text area over multiple lines. +
 
-If set > 1, then then xref:rg:ant:ParameterLayout/labelPosition.adoc[`labelPosition`] defaults to `TOP`.
+If set > 1, then then xref:rg:ant:ParameterLayout.adoc#labelPosition[`labelPosition`] defaults to `TOP`.
 
 
-|xref:rg:ant:ParameterLayout/named.adoc[`named()`]
+|xref:rg:ant:ParameterLayout.adoc#named[`named()`]
 |String
 |the name of this parameter.
 
@@ -61,12 +61,12 @@ The only reason then to name the parameter is if the desired name is a reserved
 |whether to HTML escape the name of this parameter.
 
 
-|xref:rg:ant:ParameterLayout/renderedAsDayBefore.adoc[`renderedAsDayBefore()`]
+|xref:rg:ant:ParameterLayout.adoc#renderedAsDayBefore[`renderedAsDayBefore()`]
 |
 |for date parameters only, render the date as one day prior to the actually stored date (eg the end date of an open interval into a closed interval)
 
 
-|xref:rg:ant:ParameterLayout/typicalLength.adoc[`typicalLength()`]
+|xref:rg:ant:ParameterLayout.adoc#typicalLength[`typicalLength()`]
 |
 |the typical entry length of a field, use to determine the optimum width for display
 
@@ -108,3 +108,10 @@ Note that there is (currently) no support for specifying UI hints for domain ser
 
 
 
+include::ParameterLayout/cssClass.adoc[leveloffset=+1]
+include::ParameterLayout/describedAs.adoc[leveloffset=+1]
+include::ParameterLayout/labelPosition.adoc[leveloffset=+1]
+include::ParameterLayout/multiLine.adoc[leveloffset=+1]
+include::ParameterLayout/named.adoc[leveloffset=+1]
+include::ParameterLayout/renderedAsDayBefore.adoc[leveloffset=+1]
+include::ParameterLayout/typicalLength.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/ParameterLayout/cssClass.adoc b/core/_adoc-rg/modules/ant/pages/ParameterLayout/cssClass.adoc
index cae5105..d04d8d3 100644
--- a/core/_adoc-rg/modules/ant/pages/ParameterLayout/cssClass.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ParameterLayout/cssClass.adoc
@@ -30,9 +30,9 @@ public class ToDoItem {
 
 This attribute can also be applied to:
 
-* xref:rg:ant:DomainObjectLayout/cssClass.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/cssClass.adoc[view models]
-* xref:rg:ant:ActionLayout/cssClass.adoc[actions]
-* xref:rg:ant:PropertyLayout/cssClass.adoc[properties],
-* xref:rg:ant:CollectionLayout/cssClass.adoc[collections]
-* xref:rg:ant:ParameterLayout/cssClass.adoc[parameters].
+* xref:rg:ant:DomainObjectLayout.adoc#cssClass[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#cssClass[view models]
+* xref:rg:ant:ActionLayout.adoc#cssClass[actions]
+* xref:rg:ant:PropertyLayout.adoc#cssClass[properties],
+* xref:rg:ant:CollectionLayout.adoc#cssClass[collections]
+* xref:rg:ant:ParameterLayout.adoc#cssClass[parameters].
diff --git a/core/_adoc-rg/modules/ant/pages/ParameterLayout/describedAs.adoc b/core/_adoc-rg/modules/ant/pages/ParameterLayout/describedAs.adoc
index 8824f79..4c49898 100644
--- a/core/_adoc-rg/modules/ant/pages/ParameterLayout/describedAs.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ParameterLayout/describedAs.adoc
@@ -3,7 +3,7 @@
 include::_attributes.adoc[]
 
 
-The `describedAs()` attribute is used to provide a short description of the action parameter to the user.  In the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'.  The `describedAs()` attribute can also be specified for xref:rg:ant:CollectionLayout/describedAs.adoc[collections],  xref:rg:ant:PropertyLayout/describedAs.adoc[properties], xref:rg:ant:ActionLayout/describedAs.adoc[actions], xref:rg:ant:DomainObjectLayout/describedAs.adoc[domain objects] and xref:rg:ant [...]
+The `describedAs()` attribute is used to provide a short description of the action parameter to the user.  In the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'.  The `describedAs()` attribute can also be specified for xref:rg:ant:CollectionLayout.adoc#describedAs[collections],  xref:rg:ant:PropertyLayout.adoc#describedAs[properties], xref:rg:ant:ActionLayout.adoc#describedAs[actions], xref:rg:ant:DomainObjectLayout.adoc#describedAs[domain objects] and xref:rg:ant [...]
 
 Descriptions may be provided for objects, members (properties, collections and actions), and for individual parameters within an action method.
 
diff --git a/core/_adoc-rg/modules/ant/pages/ParameterLayout/labelPosition.adoc b/core/_adoc-rg/modules/ant/pages/ParameterLayout/labelPosition.adoc
index 7897e08..5c4490e 100644
--- a/core/_adoc-rg/modules/ant/pages/ParameterLayout/labelPosition.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ParameterLayout/labelPosition.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 The `labelPosition()` attribute determines the positioning of labels for parameters.
 
-The positioning of labels is typically `LEFT`, but can be positioned to the `TOP`.  The one exception is xref:rg:ant:ParameterLayout/multiLine.adoc[`multiLine()`] string parameters, where the label defaults to `TOP` automatically (to provide as much real-estate for the multiline text field as possible).
+The positioning of labels is typically `LEFT`, but can be positioned to the `TOP`.  The one exception is xref:rg:ant:ParameterLayout.adoc#multiLine[`multiLine()`] string parameters, where the label defaults to `TOP` automatically (to provide as much real-estate for the multiline text field as possible).
 
 For boolean parameters a positioning of `RIGHT` is also allowed; this is ignored for all other types.
 
@@ -34,10 +34,10 @@ public class Order {
 ----
 
 
-To get an idea of how these are rendered (in the xref:vw:ROOT:about.adoc[Wicket viewer]), see xref:rg:ant:PropertyLayout/labelPosition.adoc[PropertyLayout#labelPosition()].
+To get an idea of how these are rendered (in the xref:vw:ROOT:about.adoc[Wicket viewer]), see xref:rg:ant:PropertyLayout.adoc#labelPosition[PropertyLayout#labelPosition()].
 
 
 == See also
 
-This attribute can also be specified for xref:rg:ant:PropertyLayout/labelPosition.adoc[properties].
+This attribute can also be specified for xref:rg:ant:PropertyLayout.adoc#labelPosition[properties].
 
diff --git a/core/_adoc-rg/modules/ant/pages/ParameterLayout/multiLine.adoc b/core/_adoc-rg/modules/ant/pages/ParameterLayout/multiLine.adoc
index 71ba8df..72f5b63 100644
--- a/core/_adoc-rg/modules/ant/pages/ParameterLayout/multiLine.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ParameterLayout/multiLine.adoc
@@ -4,7 +4,7 @@ include::_attributes.adoc[]
 
 
 
-The `multiLine()` attribute specifies that the text field for a string parameter should span multiple lines.  It is ignored for other parameter types.  The attribute is also supported for xref:rg:ant:PropertyLayout/multiLine.adoc[properties].
+The `multiLine()` attribute specifies that the text field for a string parameter should span multiple lines.  It is ignored for other parameter types.  The attribute is also supported for xref:rg:ant:PropertyLayout.adoc#multiLine[properties].
 
 For example:
 
@@ -25,6 +25,6 @@ public class BugReport {
 
 [NOTE]
 ====
-If set > 1 (as would normally be the case), then the default xref:rg:ant:ParameterLayout/labelPosition.adoc[`labelPosition`] defaults to `TOP` (rather than `LEFT`, as would normally be the case).
+If set > 1 (as would normally be the case), then the default xref:rg:ant:ParameterLayout.adoc#labelPosition[`labelPosition`] defaults to `TOP` (rather than `LEFT`, as would normally be the case).
 ====
 
diff --git a/core/_adoc-rg/modules/ant/pages/ParameterLayout/named.adoc b/core/_adoc-rg/modules/ant/pages/ParameterLayout/named.adoc
index 8870a7b..f34afaa 100644
--- a/core/_adoc-rg/modules/ant/pages/ParameterLayout/named.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ParameterLayout/named.adoc
@@ -49,10 +49,10 @@ The framework also provides a separate, powerful mechanism for xref:ug:btb:i18n.
 
 This attribute can also be specified for:
 
-* xref:rg:ant:ActionLayout/named.adoc[actions]
-* xref:rg:ant:CollectionLayout/named.adoc[collections]
-* xref:rg:ant:PropertyLayout/named.adoc[properties]
-* xref:rg:ant:DomainObjectLayout/named.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/named.adoc[view models]
-* xref:rg:ant:DomainServiceLayout/named.adoc[domain services].
+* xref:rg:ant:ActionLayout.adoc#named[actions]
+* xref:rg:ant:CollectionLayout.adoc#named[collections]
+* xref:rg:ant:PropertyLayout.adoc#named[properties]
+* xref:rg:ant:DomainObjectLayout.adoc#named[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#named[view models]
+* xref:rg:ant:DomainServiceLayout.adoc#named[domain services].
 
diff --git a/core/_adoc-rg/modules/ant/pages/ParameterLayout/renderedAsDayBefore.adoc b/core/_adoc-rg/modules/ant/pages/ParameterLayout/renderedAsDayBefore.adoc
index 26cb83c..ff5cd45 100644
--- a/core/_adoc-rg/modules/ant/pages/ParameterLayout/renderedAsDayBefore.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ParameterLayout/renderedAsDayBefore.adoc
@@ -36,5 +36,5 @@ public class Tenancy {
 
 == See also
 
-This attribute is also supported for xref:rg:ant:PropertyLayout/renderedAsDayBefore.adoc[properties].
+This attribute is also supported for xref:rg:ant:PropertyLayout.adoc#renderedAsDayBefore[properties].
 
diff --git a/core/_adoc-rg/modules/ant/pages/ParameterLayout/typicalLength.adoc b/core/_adoc-rg/modules/ant/pages/ParameterLayout/typicalLength.adoc
index f901f53..d61906d 100644
--- a/core/_adoc-rg/modules/ant/pages/ParameterLayout/typicalLength.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ParameterLayout/typicalLength.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 The `typicalLength()` attribute indicates the typical length of a string parameter.
 It is ignored for parameters of other types.
-The attribute is also supported for xref:rg:ant:PropertyLayout/typicalLength.adoc[properties].
+The attribute is also supported for xref:rg:ant:PropertyLayout.adoc#typicalLength[properties].
 
 The information is intended as a hint to the UI to determine the space that should be given to render a particular string parameter.
 That said, note that the xref:vw:ROOT:about.adoc[Wicket viewer] uses the maximum space available for all fields, so in effect ignores this attribute.
diff --git a/core/_adoc-rg/modules/ant/pages/Property.adoc b/core/_adoc-rg/modules/ant/pages/Property.adoc
index c98c194..c3f98f1 100644
--- a/core/_adoc-rg/modules/ant/pages/Property.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property.adoc
@@ -18,7 +18,7 @@ It is also possible to apply the annotation to actions of domain services that a
 | Description
 
 
-|xref:rg:ant:Property/command.adoc[`command()`]
+|xref:rg:ant:Property.adoc#command[`command()`]
 |`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
 (`AS_CONFIGURED`)
 |whether the property edit should be reified into a `o.a.i.applib.` +
@@ -45,19 +45,19 @@ It is also possible to apply the annotation to actions of domain services that a
 
 
 
-|xref:rg:ant:Property/domainEvent.adoc[`domainEvent()`]
+|xref:rg:ant:Property.adoc#domainEvent[`domainEvent()`]
 |subtype of `PropertyDomainEvent` +
 (`PropertyDomainEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to broadcast the property's business rule checking (hide, disable, validate) and its modification (before and after).
 
 
-|xref:rg:ant:Property/editing.adoc[`editing()`]
+|xref:rg:ant:Property.adoc#editing[`editing()`]
 |`ENABLED`, `DISABLED`, `AS_CONFIGURED` +
 (`AS_CONFIGURED`)
 |whether a property can be modified or cleared from within the UI
 
 
-|xref:rg:ant:Property/fileAccept.adoc[`fileAccept()`]
+|xref:rg:ant:Property.adoc#fileAccept[`fileAccept()`]
 |Media type or file extension
 |Hints the files to be uploaded to a xref:rg:cms:classes/value-types/Blob.adoc[`Blob`]
  or xref:rg:cms:classes/value-types/Clob.adoc[`Clob`]. +
@@ -65,25 +65,25 @@ It is also possible to apply the annotation to actions of domain services that a
 Note that this does not prevent the user from uploading some other file type; rather it merely defaults the file type in the file open dialog.
 
 
-|xref:rg:ant:Property/hidden.adoc[`hidden()`]
+|xref:rg:ant:Property.adoc#hidden[`hidden()`]
 |`EVERYWHERE`, `OBJECT_FORMS`, `PARENTED_TABLES`, `STANDALONE_TABLES`, `ALL_TABLES`, `NOWHERE` +
 (`NOWHERE`)
 |indicates where (in the UI) the property should be hidden from the user.
 
 
-|xref:rg:ant:Property/maxLength.adoc[`maxLength()`]
+|xref:rg:ant:Property.adoc#maxLength[`maxLength()`]
 |
 |maximum number of characters for string parameters; ignored otherwise +
 
 In many/most cases you should however use xref:rg:ant:Column.adoc[`@Column#length()`]
 
 
-|xref:rg:ant:Property/mustSatisfy.adoc[`mustSatisfy()`]
+|xref:rg:ant:Property.adoc#mustSatisfy[`mustSatisfy()`]
 |implementation of `o.a.i.applib.spec.Specification`
 |allows arbitrary validation to be applied
 
 
-|xref:rg:ant:Property/notPersisted.adoc[`notPersisted()`]
+|xref:rg:ant:Property.adoc#notPersisted[`notPersisted()`]
 |`true`, `false` +
 (`false`)
 |whether to exclude from snapshots. +
@@ -94,7 +94,7 @@ Property must also be annotated with `@javax.jdo.annotations.NotPersistent` in o
 ====
 
 
-|xref:rg:ant:Property/optionality.adoc[`optionality()`]
+|xref:rg:ant:Property.adoc#optionality[`optionality()`]
 |
 |specifies a property is optional rather than mandatory +
 
@@ -102,20 +102,20 @@ In many/most cases you should however use xref:rg:ant:Column.adoc[`@Column#allow
 
 
 
-|xref:rg:ant:Property/projecting.adoc[`projecting()`]
+|xref:rg:ant:Property.adoc#projecting[`projecting()`]
 |
 |indicates that owning object is a view model that is acting as a projection of the underlying entity referenced by this property.
 
 
 
-|xref:rg:ant:Property/publishing.adoc[`publishing()`]
+|xref:rg:ant:Property.adoc#publishing[`publishing()`]
 |
 |determines whether the editing of a property should be published.
 
 
 
 
-|xref:rg:ant:Property/regexPattern.adoc[`regexPattern()`]
+|xref:rg:ant:Property.adoc#regexPattern[`regexPattern()`]
 |regular expression
 |validates the contents of a string parameter against the regular expression pattern
 
@@ -169,3 +169,15 @@ so that boilerplate-busting tools such as link:https://projectlombok.org/[Projec
 
 
 
+include:Property/command.adoc[leveloffset=+1]
+include:Property/domainEvent.adoc[leveloffset=+1]
+include:Property/editing.adoc[leveloffset=+1]
+include:Property/fileAccept.adoc[leveloffset=+1]
+include:Property/hidden.adoc[leveloffset=+1]
+include:Property/maxLength.adoc[leveloffset=+1]
+include:Property/mustSatisfy.adoc[leveloffset=+1]
+include:Property/notPersisted.adoc[leveloffset=+1]
+include:Property/optionality.adoc[leveloffset=+1]
+include:Property/projecting.adoc[leveloffset=+1]
+include:Property/publishing.adoc[leveloffset=+1]
+include:Property/regexPattern.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/Property/command.adoc b/core/_adoc-rg/modules/ant/pages/Property/command.adoc
index fafe56d..59d7aea 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/command.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/command.adoc
@@ -261,6 +261,6 @@ If `commandDtoProcessor()` is specified, then `command()` is assumed to be ENABL
 
 
 
-For an example application, see xref:rg:ant:Action/command.adoc[`Action#command()`].
+For an example application, see xref:rg:ant:Action.adoc#command[`Action#command()`].
 
 
diff --git a/core/_adoc-rg/modules/ant/pages/Property/domainEvent.adoc b/core/_adoc-rg/modules/ant/pages/Property/domainEvent.adoc
index 90c9afd..08a5979 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/domainEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/domainEvent.adoc
@@ -154,6 +154,6 @@ However, events can be raised programmatically by wrapping the target object usi
 
 This attribute is also supported for:
 
-* xref:rg:ant:Action/domainEvent.adoc[actions] and
-* xref:rg:ant:Property/domainEvent.adoc[properties].
+* xref:rg:ant:Action.adoc#domainEvent[actions] and
+* xref:rg:ant:Property.adoc#domainEvent[properties].
 
diff --git a/core/_adoc-rg/modules/ant/pages/Property/editing.adoc b/core/_adoc-rg/modules/ant/pages/Property/editing.adoc
index 4c60546..b94b8e9 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/editing.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/editing.adoc
@@ -43,5 +43,5 @@ To reiterate, it is _not_ possible to enable editing for a property if editing h
 
 This attribute can also be specified for:
 
-* xref:rg:ant:Collection/editing.adoc[collections]
-* xref:rg:ant:DomainObject/editing.adoc[domain object].
+* xref:rg:ant:Collection.adoc#editing[collections]
+* xref:rg:ant:DomainObject.adoc#editing[domain object].
diff --git a/core/_adoc-rg/modules/ant/pages/Property/fileAccept.adoc b/core/_adoc-rg/modules/ant/pages/Property/fileAccept.adoc
index 1383981..a20db20 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/fileAccept.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/fileAccept.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 
 
 The `fileAccept()` attribute applies only to xref:rg:cms:classes/value-types/Blob.adoc[`Blob`] or xref:rg:cms:classes/value-types/Clob.adoc[`Clob`] parameters, indicating the type of file to accept when uploading a new value.
-The attribute is also supported on xref:rg:ant:Parameter/fileAccept.adoc[parameters].
+The attribute is also supported on xref:rg:ant:Parameter.adoc#fileAccept[parameters].
 
 
 For example:
diff --git a/core/_adoc-rg/modules/ant/pages/Property/hidden.adoc b/core/_adoc-rg/modules/ant/pages/Property/hidden.adoc
index 763099e..0de7369 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/hidden.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/hidden.adoc
@@ -9,7 +9,7 @@ Properties can be hidden at the domain-level, indicating that they are not visib
 
 [TIP]
 ====
-It is also possible to use xref:rg:ant:Property/hidden.adoc[`@Property#hidden()`] to hide an action at the domain layer.
+It is also possible to use xref:rg:ant:Property.adoc#hidden[`@Property#hidden()`] to hide an action at the domain layer.
 Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
 ====
 
@@ -71,5 +71,5 @@ The xref:vro:ROOT:about.adoc[RestfulObjects viewer] has only partial support for
 
 This attribute can also be applied to:
 
-* xref:rg:ant:ActionLayout/hidden.adoc[actions]
-* xref:rg:ant:CollectionLayout/hidden.adoc[collections].
+* xref:rg:ant:ActionLayout.adoc#hidden[actions]
+* xref:rg:ant:CollectionLayout.adoc#hidden[collections].
diff --git a/core/_adoc-rg/modules/ant/pages/Property/maxLength.adoc b/core/_adoc-rg/modules/ant/pages/Property/maxLength.adoc
index 1994916..2eac7a4 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/maxLength.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/maxLength.adoc
@@ -51,5 +51,5 @@ public class Customer {
 
 == See also
 
-This attribute can also be applied to xref:rg:ant:Parameter/maxLength.adoc[parameters].
+This attribute can also be applied to xref:rg:ant:Parameter.adoc#maxLength[parameters].
 
diff --git a/core/_adoc-rg/modules/ant/pages/Property/mustSatisfy.adoc b/core/_adoc-rg/modules/ant/pages/Property/mustSatisfy.adoc
index 8196633..187209f 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/mustSatisfy.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/mustSatisfy.adoc
@@ -6,11 +6,11 @@ include::_attributes.adoc[]
 
 
 The `mustSatisfy()` attribute allows arbitrary validation to be applied to properties using an (implementation of a) `org.apache.isis.applib.spec.Specification` object.
- The attribute is also supported on xref:rg:ant:Parameter/mustSatisfy.adoc[parameters].
+ The attribute is also supported on xref:rg:ant:Parameter.adoc#mustSatisfy[parameters].
 
 [TIP]
 ====
-The specification implementations can (of course) be reused between properties and xref:rg:ant:Parameter/mustSatisfy.adoc[parameters].
+The specification implementations can (of course) be reused between properties and xref:rg:ant:Parameter.adoc#mustSatisfy[parameters].
 ====
 
 The `Specification` is consulted during validation, being passed the proposed value.  If the proposed value fails, then the value returned is the used as the invalidity reason.
diff --git a/core/_adoc-rg/modules/ant/pages/Property/notPersisted.adoc b/core/_adoc-rg/modules/ant/pages/Property/notPersisted.adoc
index b741633..b43f870 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/notPersisted.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/notPersisted.adoc
@@ -63,5 +63,5 @@ public class Order {
 
 == See also
 
-This attribute is also supported for xref:rg:ant:Collection/notPersisted.adoc[collections].
+This attribute is also supported for xref:rg:ant:Collection.adoc#notPersisted[collections].
 
diff --git a/core/_adoc-rg/modules/ant/pages/Property/optionality.adoc b/core/_adoc-rg/modules/ant/pages/Property/optionality.adoc
index ba639bc..41b2905 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/optionality.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/optionality.adoc
@@ -8,7 +8,7 @@ include::_attributes.adoc[]
 
 By default, Apache Isis assumes that all properties of an domain object or view model are required (mandatory).
 The `optionality()` attribute allows this to be relaxed.
-The attribute is also supported for xref:rg:ant:Parameter/optionality.adoc[parameters].
+The attribute is also supported for xref:rg:ant:Parameter.adoc#optionality[parameters].
 
 That said, properties are most commonly defined on persistent domain objects (entities), in which case the JDO xref:rg:ant:Column.adoc[`@Column`] should be specified.
 Apache Isis can infer the maxLength directly from the equivalent @Column#length() annotation.
diff --git a/core/_adoc-rg/modules/ant/pages/Property/publishing.adoc b/core/_adoc-rg/modules/ant/pages/Property/publishing.adoc
index 9dea8b8..60c1a09 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/publishing.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/publishing.adoc
@@ -43,10 +43,10 @@ public class Order {
 
 This attribute can also be specified for:
 
-* xref:rg:ant:DomainObject/publishing.adoc[domain objects]
+* xref:rg:ant:DomainObject.adoc#publishing[domain objects]
 +
 where it controls whether changed objects are published as events, and for
 
-* xref:rg:ant:Action/publishing.adoc[actions]
+* xref:rg:ant:Action.adoc#publishing[actions]
 +
 where it controls whether action invocations are published as events.
diff --git a/core/_adoc-rg/modules/ant/pages/Property/regexPattern.adoc b/core/_adoc-rg/modules/ant/pages/Property/regexPattern.adoc
index b501e5e..2c95195 100644
--- a/core/_adoc-rg/modules/ant/pages/Property/regexPattern.adoc
+++ b/core/_adoc-rg/modules/ant/pages/Property/regexPattern.adoc
@@ -33,5 +33,5 @@ public class Customer {
 
 == See also
 
-This attribute can also be specified for xref:rg:ant:Parameter/regexPattern.adoc[parameters].
+This attribute can also be specified for xref:rg:ant:Parameter.adoc#regexPattern[parameters].
 
diff --git a/core/_adoc-rg/modules/ant/pages/PropertyLayout.adoc b/core/_adoc-rg/modules/ant/pages/PropertyLayout.adoc
index e970e99..a0e94a4 100644
--- a/core/_adoc-rg/modules/ant/pages/PropertyLayout.adoc
+++ b/core/_adoc-rg/modules/ant/pages/PropertyLayout.adoc
@@ -17,40 +17,40 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:PropertyLayout/cssClass.adoc[`cssClass()`]
+|xref:rg:ant:PropertyLayout.adoc#cssClass[`cssClass()`]
 |Any string valid as a CSS class
 |the css class that a property should have, to allow more targetted styling in xref:rg:cfg:application-specific/application-css.adoc[`application.css`]
 
 
-|xref:rg:ant:PropertyLayout/describedAs.adoc[`describedAs()`]
+|xref:rg:ant:PropertyLayout.adoc#describedAs[`describedAs()`]
 |String
 |description of this property, eg to be rendered in a tooltip.
 
 
-|xref:rg:ant:PropertyLayout/hidden.adoc[`hidden()`]
+|xref:rg:ant:PropertyLayout.adoc#hidden[`hidden()`]
 |`EVERYWHERE`, `OBJECT_FORMS`, `PARENTED_TABLES`, `STANDALONE_TABLES`, `ALL_TABLES`, `NOWHERE` +
 (`NOWHERE`)
 |indicates where (in the UI) the property should be hidden from the user.
 
 
-|xref:rg:ant:PropertyLayout/labelPosition.adoc[`labelPosition()`]
+|xref:rg:ant:PropertyLayout.adoc#labelPosition[`labelPosition()`]
 |`LEFT`, `TOP`, `RIGHT`, `NONE` +
 (`LEFT`)
 |in forms, the positioning of the label relative to the property value. +
 
-Defaults is `LEFT`, unless xref:rg:ant:PropertyLayout/multiLine.adoc[`multiLine`] in which case `TOP`.  The value `RIGHT` is only supported for boolean properties. +
+Defaults is `LEFT`, unless xref:rg:ant:PropertyLayout.adoc#multiLine[`multiLine`] in which case `TOP`.  The value `RIGHT` is only supported for boolean properties. +
 
 It is also possible to change the default through a xref:rg:cfg:configuring-core.adoc#isis-viewers-propertyLayout-labelPosition[configuration property]
 
 
-|xref:rg:ant:PropertyLayout/multiLine.adoc[`multiLine()`]
+|xref:rg:ant:PropertyLayout.adoc#multiLine[`multiLine()`]
 |Positive integer
 |for string properties, render as a text area over multiple lines.  +
 
-If set > 1, then xref:rg:ant:PropertyLayout/labelPosition.adoc[`labelPosition`] defaults to TOP.
+If set > 1, then xref:rg:ant:PropertyLayout.adoc#labelPosition[`labelPosition`] defaults to TOP.
 
 
-|xref:rg:ant:PropertyLayout/named.adoc[`named()`]
+|xref:rg:ant:PropertyLayout.adoc#named[`named()`]
 |String
 |to override the name inferred from the collection's name in code. +
 
@@ -63,29 +63,29 @@ A typical use case is if the desired name is a reserved Java keyword, such as `d
 |whether to HTML escape the name of this property.
 
 
-|xref:rg:ant:PropertyLayout/navigable.adoc[`navigable()`]
+|xref:rg:ant:PropertyLayout.adoc#navigable[`navigable()`]
 |`PARENT`, `IGNORE`, `NOT_CONFIGURED` +
 (`NOT_CONFIGURED`)
 |whether a property should be used as the navigable parent (parent breadcrumb) of this object
 
 
-|xref:rg:ant:PropertyLayout/promptStyle.adoc[`promptStyle()`]
+|xref:rg:ant:PropertyLayout.adoc#promptStyle[`promptStyle()`]
 |`DIALOG`, `INLINE`, `AS_CONFIGURED` +
 (`AS_CONFIGURED`)
 |how a property prompt should be displayed within the UI
 
 
-|xref:rg:ant:PropertyLayout/renderedAsDayBefore.adoc[`renderedAsDayBefore()`]
+|xref:rg:ant:PropertyLayout.adoc#renderedAsDayBefore[`renderedAsDayBefore()`]
 |`true`, `false` +
 (`false`)
 |for date properties only, render the date as one day prior to the actually stored date.
 
 
-|xref:rg:ant:PropertyLayout/typicalLength.adoc[`typicalLength()`]
+|xref:rg:ant:PropertyLayout.adoc#typicalLength[`typicalLength()`]
 |Positive integer.
 |the typical entry length of a field, use to determine the optimum width for display
 
-|xref:rg:ant:PropertyLayout/unchanging.adoc[`unchanging()`]
+|xref:rg:ant:PropertyLayout.adoc#unchanging[`unchanging()`]
 |`false`, `true` +
 (`false`)
 |indicates that the value held by the property never changes over time (even if other properties of the object do change).
@@ -141,3 +141,13 @@ so that boilerplate-busting tools such as link:https://projectlombok.org/[Projec
 
 
 
+include::PropertyLayout/cssClass.adoc[leveloffset=+1]
+include::PropertyLayout/describedAs.adoc[leveloffset=+1]
+include::PropertyLayout/labelPosition.adoc[leveloffset=+1]
+include::PropertyLayout/multiLine.adoc[leveloffset=+1]
+include::PropertyLayout/named.adoc[leveloffset=+1]
+include::PropertyLayout/navigable.adoc[leveloffset=+1]
+include::PropertyLayout/promptStyle.adoc[leveloffset=+1]
+include::PropertyLayout/renderedAsDayBefore.adoc[leveloffset=+1]
+include::PropertyLayout/typicalLength.adoc[leveloffset=+1]
+include::PropertyLayout/unchanging.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/PropertyLayout/cssClass.adoc b/core/_adoc-rg/modules/ant/pages/PropertyLayout/cssClass.adoc
index 55265f5..377dfb6 100644
--- a/core/_adoc-rg/modules/ant/pages/PropertyLayout/cssClass.adoc
+++ b/core/_adoc-rg/modules/ant/pages/PropertyLayout/cssClass.adoc
@@ -28,10 +28,10 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 This attribute can also be applied to:
 
-* xref:rg:ant:DomainObjectLayout/cssClass.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/cssClass.adoc[view models]
-* xref:rg:ant:ActionLayout/cssClass.adoc[actions]
-* xref:rg:ant:CollectionLayout/cssClass.adoc[collections]
-* xref:rg:ant:ParameterLayout/cssClass.adoc[parameters].
+* xref:rg:ant:DomainObjectLayout.adoc#cssClass[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#cssClass[view models]
+* xref:rg:ant:ActionLayout.adoc#cssClass[actions]
+* xref:rg:ant:CollectionLayout.adoc#cssClass[collections]
+* xref:rg:ant:ParameterLayout.adoc#cssClass[parameters].
 
 
diff --git a/core/_adoc-rg/modules/ant/pages/PropertyLayout/describedAs.adoc b/core/_adoc-rg/modules/ant/pages/PropertyLayout/describedAs.adoc
index 8bad975..4ccfd88 100644
--- a/core/_adoc-rg/modules/ant/pages/PropertyLayout/describedAs.adoc
+++ b/core/_adoc-rg/modules/ant/pages/PropertyLayout/describedAs.adoc
@@ -4,7 +4,7 @@ include::_attributes.adoc[]
 
 
 
-The `describedAs()` attribute is used to provide a short description of the property to the user.  In the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'. The attribute can also be specified for xref:rg:ant:CollectionLayout/describedAs.adoc[collections],  xref:rg:ant:ActionLayout/describedAs.adoc[actions], xref:rg:ant:ParameterLayout/describedAs.adoc[parameters], xref:rg:ant:DomainObjectLayout/describedAs.adoc[domain objects] and xref:rg:ant:ViewModelLayout/describ [...]
+The `describedAs()` attribute is used to provide a short description of the property to the user.  In the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'. The attribute can also be specified for xref:rg:ant:CollectionLayout.adoc#describedAs[collections],  xref:rg:ant:ActionLayout.adoc#describedAs[actions], xref:rg:ant:ParameterLayout.adoc#describedAs[parameters], xref:rg:ant:DomainObjectLayout.adoc#describedAs[domain objects] and xref:rg:ant:ViewModelLayout.adoc#de [...]
 
 For example:
 
diff --git a/core/_adoc-rg/modules/ant/pages/PropertyLayout/hidden.adoc b/core/_adoc-rg/modules/ant/pages/PropertyLayout/hidden.adoc
index 2d9a620..3f791f0 100644
--- a/core/_adoc-rg/modules/ant/pages/PropertyLayout/hidden.adoc
+++ b/core/_adoc-rg/modules/ant/pages/PropertyLayout/hidden.adoc
@@ -8,7 +8,7 @@ The `hidden()` attribute indicates where (in the UI) the property should be hidd
 
 [TIP]
 ====
-It is also possible to use xref:rg:ant:PropertyLayout/hidden.adoc[`@PropertyLayout#hidden()`] or a xref:vw:ROOT:layout/file-based.adoc[file-based layout] such that the property can be hidden at the view layer.
+It is also possible to use xref:rg:ant:PropertyLayout.adoc#hidden[`@PropertyLayout#hidden()`] or a xref:vw:ROOT:layout/file-based.adoc[file-based layout] such that the property can be hidden at the view layer.
 Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
 ====
 
@@ -74,6 +74,6 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 This attribute can also be applied to:
 
-* xref:rg:ant:Action/hidden.adoc[actions]
-* xref:rg:ant:Collection/hidden.adoc[collections].
+* xref:rg:ant:Action.adoc#hidden[actions]
+* xref:rg:ant:Collection.adoc#hidden[collections].
 
diff --git a/core/_adoc-rg/modules/ant/pages/PropertyLayout/labelPosition.adoc b/core/_adoc-rg/modules/ant/pages/PropertyLayout/labelPosition.adoc
index b28b46b..39f349e 100644
--- a/core/_adoc-rg/modules/ant/pages/PropertyLayout/labelPosition.adoc
+++ b/core/_adoc-rg/modules/ant/pages/PropertyLayout/labelPosition.adoc
@@ -8,7 +8,7 @@ include::_attributes.adoc[]
 The `labelPosition()` attribute determines the positioning of labels for properties.
 
 The positioning of labels is typically `LEFT`, but can be positioned to the `TOP`.
-The one exception is xref:rg:ant:ParameterLayout/multiLine.adoc[`multiLine()`] string properties, where the label defaults to `TOP` automatically (to provide as much real-estate for the multiline text field as possible).
+The one exception is xref:rg:ant:ParameterLayout.adoc#multiLine[`multiLine()`] string properties, where the label defaults to `TOP` automatically (to provide as much real-estate for the multiline text field as possible).
 
 For boolean properties a positioning of `RIGHT` is also allowed; this is ignored for all other types.
 
@@ -88,5 +88,5 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 == See also
 
-This attribute can also be specified for xref:rg:ant:ParameterLayout/labelPosition.adoc[parameters].
+This attribute can also be specified for xref:rg:ant:ParameterLayout.adoc#labelPosition[parameters].
 
diff --git a/core/_adoc-rg/modules/ant/pages/PropertyLayout/multiLine.adoc b/core/_adoc-rg/modules/ant/pages/PropertyLayout/multiLine.adoc
index b2ecb37..82205cc 100644
--- a/core/_adoc-rg/modules/ant/pages/PropertyLayout/multiLine.adoc
+++ b/core/_adoc-rg/modules/ant/pages/PropertyLayout/multiLine.adoc
@@ -3,7 +3,7 @@
 include::_attributes.adoc[]
 
 
-The `multiLine()` attribute specifies that the text field for a string property should span multiple lines.  It is ignored for other property types.  The attribute is also supported for xref:rg:ant:ParameterLayout/multiLine.adoc[parameters].
+The `multiLine()` attribute specifies that the text field for a string property should span multiple lines.  It is ignored for other property types.  The attribute is also supported for xref:rg:ant:ParameterLayout.adoc#multiLine[parameters].
 
 For example:
 
@@ -24,7 +24,7 @@ Here the `stepsToReproduce` will be displayed in a text area of 10 rows.
 
 [NOTE]
 ====
-If set > 1 (as would normally be the case), then the default xref:rg:ant:PropertyLayout/labelPosition.adoc[`labelPosition`] defaults to `TOP` (rather than `LEFT`, as would normally be the case).
+If set > 1 (as would normally be the case), then the default xref:rg:ant:PropertyLayout.adoc#labelPosition[`labelPosition`] defaults to `TOP` (rather than `LEFT`, as would normally be the case).
 ====
 
 == Alternatives
diff --git a/core/_adoc-rg/modules/ant/pages/PropertyLayout/named.adoc b/core/_adoc-rg/modules/ant/pages/PropertyLayout/named.adoc
index cd79249..2f739a2 100644
--- a/core/_adoc-rg/modules/ant/pages/PropertyLayout/named.adoc
+++ b/core/_adoc-rg/modules/ant/pages/PropertyLayout/named.adoc
@@ -43,10 +43,10 @@ The framework also provides a separate, powerful mechanism for xref:ug:btb:i18n.
 
 This attribute can also be specified for:
 
-* xref:rg:ant:ActionLayout/named.adoc[actions]
-* xref:rg:ant:CollectionLayout/named.adoc[collections]
-* xref:rg:ant:ParameterLayout/named.adoc[parameters]
-* xref:rg:ant:DomainObjectLayout/named.adoc[domain objects]
-* xref:rg:ant:ViewModelLayout/named.adoc[view models]
-* xref:rg:ant:DomainServiceLayout/named.adoc[domain services].
+* xref:rg:ant:ActionLayout.adoc#named[actions]
+* xref:rg:ant:CollectionLayout.adoc#named[collections]
+* xref:rg:ant:ParameterLayout.adoc#named[parameters]
+* xref:rg:ant:DomainObjectLayout.adoc#named[domain objects]
+* xref:rg:ant:ViewModelLayout.adoc#named[view models]
+* xref:rg:ant:DomainServiceLayout.adoc#named[domain services].
 
diff --git a/core/_adoc-rg/modules/ant/pages/PropertyLayout/renderedAsDayBefore.adoc b/core/_adoc-rg/modules/ant/pages/PropertyLayout/renderedAsDayBefore.adoc
index 66664e3..1fb0d05 100644
--- a/core/_adoc-rg/modules/ant/pages/PropertyLayout/renderedAsDayBefore.adoc
+++ b/core/_adoc-rg/modules/ant/pages/PropertyLayout/renderedAsDayBefore.adoc
@@ -40,5 +40,5 @@ As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-
 
 == See also
 
-This attribute is also supported for xref:rg:ant:ParameterLayout/renderedAsDayBefore.adoc[parameters].
+This attribute is also supported for xref:rg:ant:ParameterLayout.adoc#renderedAsDayBefore[parameters].
 
diff --git a/core/_adoc-rg/modules/ant/pages/PropertyLayout/typicalLength.adoc b/core/_adoc-rg/modules/ant/pages/PropertyLayout/typicalLength.adoc
index 32e1c32..753802b 100644
--- a/core/_adoc-rg/modules/ant/pages/PropertyLayout/typicalLength.adoc
+++ b/core/_adoc-rg/modules/ant/pages/PropertyLayout/typicalLength.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 The `typicalLength()` attribute indicates the typical length of a string property.
 It is ignored for properties of other types.
-The attribute is also supported for xref:rg:ant:ParameterLayout/typicalLength.adoc[parameters].
+The attribute is also supported for xref:rg:ant:ParameterLayout.adoc#typicalLength[parameters].
 
 The information is intended as a hint to the UI to determine the space that should be given to render a particular string property.
 That said, note that the xref:vw:ROOT:about.adoc[Wicket viewer] uses the maximum space available for all fields, so in effect ignores this attribute.
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModel.adoc b/core/_adoc-rg/modules/ant/pages/ViewModel.adoc
index 9cfbbb1..9c1c0f6 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModel.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModel.adoc
@@ -43,8 +43,8 @@ See this xref:ug:btb:about.adoc#view-model-instantiation[tip] for further discus
 View models must have a no-arg constructor; this is used internally by the framework for subsequent "recreation".
 
 The view model's memento will be derived from the value of the view model object's properties.
-Any xref:rg:ant:Property/notPersisted.adoc[`@Property#notPersisted()`] properties will be excluded from the memento, as will any xref:rg:ant:Programmatic.adoc[`@Programmatic`] properties.
-Properties that are merely xref:rg:ant:Property/hidden.adoc[hidden] _are_ included in the memento.
+Any xref:rg:ant:Property.adoc#notPersisted[`@Property#notPersisted()`] properties will be excluded from the memento, as will any xref:rg:ant:Programmatic.adoc[`@Programmatic`] properties.
+Properties that are merely xref:rg:ant:Property.adoc#hidden[hidden] _are_ included in the memento.
 
 Only properties supported by the configured xref:rg:svc:integration-api/MementoService.adoc[`MementoService`] can be used. The default implementation supports all the value types and persisted entities.
 
@@ -62,5 +62,9 @@ If you are using view models heavily, you may wish to restrict yourself to just
 ====
 The `@ViewModel` does not allow the objectType to be specified, meaning that it is incompatible with the metamodel validation check ennabled by the xref:rg:cfg:configuring-core.adoc#metamodel-validation[`explicitObjectType`] configuration property.
 
-Instead, use xref:rg:ant:DomainObject/nature.adoc[`@DomainObject#nature()`] with `Nature.VIEW_MODEL`, and specify xref:rg:ant:DomainObject/objectType.adoc[`@DomainObject#objectType()`].
+Instead, use xref:rg:ant:DomainObject.adoc#nature[`@DomainObject#nature()`] with `Nature.VIEW_MODEL`, and specify xref:rg:ant:DomainObject.adoc#objectType[`@DomainObject#objectType()`].
 ====
+
+
+
+include::ViewModel/objectType.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModel/objectType.adoc b/core/_adoc-rg/modules/ant/pages/ViewModel/objectType.adoc
index f430c32..1e227e4 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModel/objectType.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModel/objectType.adoc
@@ -38,7 +38,7 @@ public class Order {
 The rules of precedence are:
 
 1. xref:rg:ant:Discriminator.adoc[`@Discriminator`]
-2. `@DomainObject#objectType`, or xref:rg:ant:ViewModel/objectType.adoc[`@ViewModel#objectType()`]
+2. `@DomainObject#objectType`, or xref:rg:ant:ViewModel.adoc#objectType[`@ViewModel#objectType()`]
 3. xref:rg:ant:PersistenceCapable.adoc[`@PersistenceCapable`], if at least the `schema` attribute is defined.
 +
 If both `schema` and `table` are defined, then the value is "`schema.table`".
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout.adoc
index 86143fe..1a3b13d 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout.adoc
@@ -4,7 +4,7 @@ include::_attributes.adoc[]
 
 
 The `@ViewModelLayout` annotation is identical to the xref:rg:ant:DomainObjectLayout.adoc[`@DomainObjectLayout`], but is provided
-for symmetry with domain objects that have been annotated using xref:rg:ant:ViewModel.adoc[`@ViewModel`] (rather than xref:rg:ant:DomainObject/nature.adoc[`@DomainObject(nature=VIEW_MODEL)`]).
+for symmetry with domain objects that have been annotated using xref:rg:ant:ViewModel.adoc[`@ViewModel`] (rather than xref:rg:ant:DomainObject.adoc#nature[`@DomainObject(nature=VIEW_MODEL)`]).
 
 
 The table below summarizes the annotation's attributes.
@@ -18,12 +18,12 @@ The table below summarizes the annotation's attributes.
 | Description
 
 
-|xref:rg:ant:ViewModelLayout/cssclass.adoc[`cssClass()`]
+|xref:rg:ant:ViewModelLayout.adoc#cssclass[`cssClass()`]
 |Any string valid as a CSS class
 |the css class that a domain class (type) should have, to allow more targetted styling in xref:rg:cfg:application-specific/application-css.adoc[`application.css`]
 
 
-|xref:rg:ant:ViewModelLayout/cssClassFa.adoc[`cssClassFa()`]
+|xref:rg:ant:ViewModelLayout.adoc#cssClassFa[`cssClassFa()`]
 |Any valid link:http://fortawesome.github.io/Font-Awesome/[Font awesome] icon name
 |specify a font awesome icon for the action's menu link or icon. +
 
@@ -34,44 +34,44 @@ The table below summarizes the annotation's attributes.
 |Currently unused.
 
 
-|xref:rg:ant:ViewModelLayout/cssClassUiEvent.adoc[`cssClassUiEvent()`]
+|xref:rg:ant:ViewModelLayout.adoc#cssClassUiEvent[`cssClassUiEvent()`]
 |subtype of `CssClassUiEvent` +
 (`CssClassUiEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain a CSS class for the domain object.
 
 
-|xref:rg:ant:ViewModelLayout/describedAs.adoc[`describedAs()`]
+|xref:rg:ant:ViewModelLayout.adoc#describedAs[`describedAs()`]
 |String.
 |description of this class, eg to be rendered in a tooltip.
 
-|xref:rg:ant:ViewModelLayout/iconUiEvent.adoc[`iconUiEvent()`]
+|xref:rg:ant:ViewModelLayout.adoc#iconUiEvent[`iconUiEvent()`]
 |subtype of `IconUiEvent` +
 (`IconUiEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain the icon (name) for the domain object.
 
-|xref:rg:ant:ViewModelLayout/layoutUiEvent.adoc[`layoutUiEvent()`]
+|xref:rg:ant:ViewModelLayout.adoc#layoutUiEvent[`layoutUiEvent()`]
 |subtype of `LayoutUiEvent` +
 (`LayoutUiEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain the layout (name) for the domain object.
 
-|xref:rg:ant:ViewModelLayout/named.adoc[`named()`]
+|xref:rg:ant:ViewModelLayout.adoc#named[`named()`]
 |String.
 |to override the name inferred from the action's name in code. +
 
 A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
 
 
-|xref:rg:ant:ViewModelLayout/paged.adoc[`paged()`]
+|xref:rg:ant:ViewModelLayout.adoc#paged[`paged()`]
 |Positive integer
 |the page size for instances of this class when rendered within a table (as returned from an action invocation)
 
 
-|xref:rg:ant:ViewModelLayout/plural.adoc[`plural()`]
+|xref:rg:ant:ViewModelLayout.adoc#plural[`plural()`]
 |String.
 |the plural name of the class
 
 
-|xref:rg:ant:ViewModelLayout/titleUiEvent.adoc[`titleUiEvent()`]
+|xref:rg:ant:ViewModelLayout.adoc#titleUiEvent[`titleUiEvent()`]
 |subtype of `TitleUiEvent` +
 (`TitleUiEvent.Default`)
 |the event type to be posted to the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain the title for the domain object.
@@ -95,7 +95,7 @@ For example:
 public class CategoryPieChart { /* ... */ }
 ----
 <1> this annotation is intended for use with `@ViewModel`.
-If a view model has been specified using the equivalent xref:rg:ant:DomainObject/nature.adoc[`@DomainObject(nature=Nature.VIEW_MODEL)`], then we recommend you use xref:rg:ant:DomainObjectLayout.adoc[`@DomainObjectLayout`] instead.
+If a view model has been specified using the equivalent xref:rg:ant:DomainObject.adoc#nature[`@DomainObject(nature=Nature.VIEW_MODEL)`], then we recommend you use xref:rg:ant:DomainObjectLayout.adoc[`@DomainObjectLayout`] instead.
 
 
 [NOTE]
@@ -111,3 +111,13 @@ Note that there is (currently) no support for specifying UI hints for view model
 
 
 
+include::ViewModelLayout/cssClass.adoc[leveloffset=+1]
+include::ViewModelLayout/cssClassFa.adoc[leveloffset=+1]
+include::ViewModelLayout/cssClassUiEvent.adoc[leveloffset=+1]
+include::ViewModelLayout/describedAs.adoc[leveloffset=+1]
+include::ViewModelLayout/iconUiEvent.adoc[leveloffset=+1]
+include::ViewModelLayout/layoutUiEvent.adoc[leveloffset=+1]
+include::ViewModelLayout/named.adoc[leveloffset=+1]
+include::ViewModelLayout/paged.adoc[leveloffset=+1]
+include::ViewModelLayout/plural.adoc[leveloffset=+1]
+include::ViewModelLayout/titleUiEvent.adoc[leveloffset=+1]
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/bookmarking.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/bookmarking.adoc
index 81cd5e5..be2cf45 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/bookmarking.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/bookmarking.adoc
@@ -6,5 +6,5 @@ include::_attributes.adoc[]
 
 The `bookmarking()` attribute indicates that a view model is automatically bookmarked.
 
-This is equivalent to xref:rg:ant:DomainObjectLayout/bookmarking.adoc[`@DomainObjectLayout#bookmarking()`], but for view models instead of entities.
+This is equivalent to xref:rg:ant:DomainObjectLayout.adoc#bookmarking[`@DomainObjectLayout#bookmarking()`], but for view models instead of entities.
 
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClass.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClass.adoc
index ac30f84..39b6477 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClass.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClass.adoc
@@ -6,4 +6,4 @@ include::_attributes.adoc[]
 
 The `cssClass()` attribute can be used to render additional CSS classes in the HTML (a wrapping `<div>`) that represents the view model.   xref:rg:cfg:application-specific/application-css.adoc[Application-specific CSS] can then be used to target and adjust the UI representation of that particular element.
 
-This is equivalent to xref:rg:ant:DomainObjectLayout/cssClass.adoc[`@DomainObjectLayout#cssClass()`], but for view models instead of entities.
+This is equivalent to xref:rg:ant:DomainObjectLayout.adoc#cssClass[`@DomainObjectLayout#cssClass()`], but for view models instead of entities.
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClassFa.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClassFa.adoc
index 9cf239d..a4c9358 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClassFa.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClassFa.adoc
@@ -7,5 +7,5 @@ include::_attributes.adoc[]
 
 The `cssClassFa()` attribute is used to specify the name of a link:http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icon] name, to be rendered as the domain object's icon.
 
-This is equivalent to xref:rg:ant:DomainObjectLayout/cssClassFa.adoc[`@DomainObjectLayout#cssClassFa()`], but for view models instead of entities.
+This is equivalent to xref:rg:ant:DomainObjectLayout.adoc#cssClassFa[`@DomainObjectLayout#cssClassFa()`], but for view models instead of entities.
 
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClassUiEvent.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClassUiEvent.adoc
index 2234596..713149e 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClassUiEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/cssClassUiEvent.adoc
@@ -5,6 +5,6 @@ include::_attributes.adoc[]
 
 Whenever a view model is to be rendered, the framework fires off an CSS class UI event to obtain a CSS class to use in any wrapping ``<div>``s and ``<span>``s that render the domain object.
 
-This attribute is the same as xref:rg:ant:DomainObjectLayout/cssClass.adoc[`@DomainObjectLayout#cssClass()`], but for view models instead of entities.
+This attribute is the same as xref:rg:ant:DomainObjectLayout.adoc#cssClass[`@DomainObjectLayout#cssClass()`], but for view models instead of entities.
 
 A default event that is emitted if none specified, unless the `isis.reflector.facet.viewModelLayoutAnnotation.cssClassUiEvent.postForDefault` configuration property is set to "false".
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/describedAs.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/describedAs.adoc
index 7da8a42..d011a5d 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/describedAs.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/describedAs.adoc
@@ -5,5 +5,5 @@ include::_attributes.adoc[]
 
 The `describedAs()` attribute is used to provide a short description of the view model to the user; in the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'.
 
-This attribute is the same as xref:rg:ant:DomainObjectLayout/describedAs.adoc[`@DomainObjectLayout#describedAs()`], but for view models instead of entities.
+This attribute is the same as xref:rg:ant:DomainObjectLayout.adoc#describedAs[`@DomainObjectLayout#describedAs()`], but for view models instead of entities.
 
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/iconUiEvent.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/iconUiEvent.adoc
index 0a4d854..314ce63 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/iconUiEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/iconUiEvent.adoc
@@ -7,7 +7,7 @@ Whenever a view model is to be rendered, the framework fires off an icon UI even
 This is as an alternative to implementing xref:rg:cms:methods/reserved/iconName.adoc[`iconName()`] reserved method.
 (If `iconName()` is present, then it will take precedence).
 
-This attribute is the same as xref:rg:ant:DomainObjectLayout/iconUiEvent.adoc[`@DomainObjectLayout#iconUiEvent()`], but for view models instead of entities.
+This attribute is the same as xref:rg:ant:DomainObjectLayout.adoc#iconUiEvent[`@DomainObjectLayout#iconUiEvent()`], but for view models instead of entities.
 
 A default event that is emitted if none specified, unless the `isis.reflector.facet.viewModelLayoutAnnotation.iconUiEvent.postForDefault` configuration property is set to "false".
 
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/layoutUiEvent.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/layoutUiEvent.adoc
index 2f37267..09bedc0 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/layoutUiEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/layoutUiEvent.adoc
@@ -5,6 +5,6 @@ include::_attributes.adoc[]
 
 Whenever a view model is to be rendered, the framework fires off an layout UI event to obtain an alternative layout name with which to render the domain object.
 
-This attribute is the same as xref:rg:ant:DomainObjectLayout/layoutUiEvent.adoc[`@DomainObjectLayout#layoutUiEvent()`], but for view models instead of entities.
+This attribute is the same as xref:rg:ant:DomainObjectLayout.adoc#layoutUiEvent[`@DomainObjectLayout#layoutUiEvent()`], but for view models instead of entities.
 
 A default event that is emitted if none specified, unless the `isis.reflector.facet.viewModelLayoutAnnotation.layoutUiEvent.postForDefault` configuration property is set to "false".
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/named.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/named.adoc
index e4ca75f..9da5c30 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/named.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/named.adoc
@@ -5,5 +5,5 @@ include::_attributes.adoc[]
 
 The `named()` attribute explicitly specifies the view model's name, overriding the name that would normally be inferred from the Java source code.
 
-This attribute is the same as xref:rg:ant:DomainObjectLayout/named.adoc[`@DomainObjectLayout#named()`], but for view models instead of entities.
+This attribute is the same as xref:rg:ant:DomainObjectLayout.adoc#named[`@DomainObjectLayout#named()`], but for view models instead of entities.
 
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/paged.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/paged.adoc
index b712e4a..2476e97 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/paged.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/paged.adoc
@@ -5,4 +5,4 @@ include::_attributes.adoc[]
 
 The `paged()` attribute specifies the number of rows to display in a standalone collection, as returned from an action invocation.
 
-This attribute is the same as xref:rg:ant:DomainObjectLayout/paged.adoc[`@DomainObjectLayout#paged()`], but for view models instead of entities.
+This attribute is the same as xref:rg:ant:DomainObjectLayout.adoc#paged[`@DomainObjectLayout#paged()`], but for view models instead of entities.
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/plural.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/plural.adoc
index 575eab9..f8f9a92 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/plural.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/plural.adoc
@@ -8,6 +8,6 @@ When Apache Isis displays a standalone collection of several objects, it will la
 By default the plural name will be derived from the end of the singular name, with support for some basic English language defaults (eg using "ies" for names ending with a "y").
 The `plural()` attribute allows the plural form of the class name to be specified explicitly.
 
-This attribute is the same as xref:rg:ant:DomainObjectLayout/plural.adoc[`@DomainObjectLayout#plural()`], but for view models instead of entities.
+This attribute is the same as xref:rg:ant:DomainObjectLayout.adoc#plural[`@DomainObjectLayout#plural()`], but for view models instead of entities.
 
 
diff --git a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/titleUiEvent.adoc b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/titleUiEvent.adoc
index a4c8a79..122f62f 100644
--- a/core/_adoc-rg/modules/ant/pages/ViewModelLayout/titleUiEvent.adoc
+++ b/core/_adoc-rg/modules/ant/pages/ViewModelLayout/titleUiEvent.adoc
@@ -5,6 +5,6 @@ include::_attributes.adoc[]
 
 Whenever a view model is to be rendered, the framework fires off a title UI event to obtain a title for the object.
 
-This attribute is the same as xref:rg:ant:DomainObjectLayout/titleUiEvent.adoc[`@DomainObjectLayout#titleUiEvent()`], but for view models instead of entities.
+This attribute is the same as xref:rg:ant:DomainObjectLayout.adoc#titleUiEvent[`@DomainObjectLayout#titleUiEvent()`], but for view models instead of entities.
 
 A default event that is emitted if none specified, unless the `isis.reflector.facet.viewModelLayoutAnnotation.titleUiEvent.postForDefault` configuration property is set to "false".
diff --git a/core/_adoc-rg/modules/ant/pages/aaa.adoc b/core/_adoc-rg/modules/ant/pages/aaa.adoc
index 348d1d5..0408345 100644
--- a/core/_adoc-rg/modules/ant/pages/aaa.adoc
+++ b/core/_adoc-rg/modules/ant/pages/aaa.adoc
@@ -6,4 +6,9 @@ include::_attributes.adoc[]
 This section summarizes the various annotations supported by Apache Isis.  They break out into five categories.
 
 
+include::aaa/main.adoc[leveloffset=+1]
+include::aaa/other.adoc[leveloffset=+1]
+include::aaa/jdo.adoc[leveloffset=+1]
+include::aaa/jee.adoc[leveloffset=+1]
+include::aaa/partial.adoc[leveloffset=+1]
 
diff --git a/core/_adoc-rg/modules/cfg/pages/configuring-core.adoc b/core/_adoc-rg/modules/cfg/pages/configuring-core.adoc
index 7cb8fc1..cdc2361 100644
--- a/core/_adoc-rg/modules/cfg/pages/configuring-core.adoc
+++ b/core/_adoc-rg/modules/cfg/pages/configuring-core.adoc
@@ -26,21 +26,21 @@ Configuration properties for the JDO/DataNucleus objectstore can be found in the
 `domainEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:Action/domainEvent.adoc[`@Action#domainEvent()`] is not specified (is set to `ActionDomainEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:Action.adoc#domainEvent[`@Action#domainEvent()`] is not specified (is set to `ActionDomainEvent.Default`).
 
 |`isis.reflector.facet.` +
 `collectionAnnotation.` +
 `domainEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:Collection/domainEvent.adoc[`@Collection#domainEvent()`] is not specified (is set to `CollectionDomainEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:Collection.adoc#domainEvent[`@Collection#domainEvent()`] is not specified (is set to `CollectionDomainEvent.Default`).
 
 |`isis.reflector.facet.` +
 `propertyAnnotation.` +
 `domainEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:Property/domainEvent.adoc[`@Property#domainEvent()`] is not specified (is set to `PropertyDomainEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:Property.adoc#domainEvent[`@Property#domainEvent()`] is not specified (is set to `PropertyDomainEvent.Default`).
 
 
 
@@ -72,7 +72,7 @@ In order for these events to fire the action/collection/propert must, at least,
 `postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObject/createdLifecycleEvent.adoc[`@DomainObject#createdLifecycleEvent()`] is not specified (is set to `ObjectCreatedEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObject.adoc#createdLifecycleEvent[`@DomainObject#createdLifecycleEvent()`] is not specified (is set to `ObjectCreatedEvent.Default`).
 
 |`isis.reflector.facet.` +
 `domainObjectAnnotation.` +
@@ -80,7 +80,7 @@ In order for these events to fire the action/collection/propert must, at least,
 `postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObject/loadedLifecycleEvent.adoc[`@DomainObject#loadedLifecycleEvent()`] is not specified (is set to `ObjectLoadedEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObject.adoc#loadedLifecycleEvent[`@DomainObject#loadedLifecycleEvent()`] is not specified (is set to `ObjectLoadedEvent.Default`).
 
 |`isis.reflector.facet.` +
 `domainObjectAnnotation.` +
@@ -88,7 +88,7 @@ In order for these events to fire the action/collection/propert must, at least,
 `postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObject/persistingLifecycleEvent.adoc[`@DomainObject#persistingLifecycleEvent()`] is not specified (is set to `ObjectPersistingEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObject.adoc#persistingLifecycleEvent[`@DomainObject#persistingLifecycleEvent()`] is not specified (is set to `ObjectPersistingEvent.Default`).
 
 |`isis.reflector.facet.` +
 `domainObjectAnnotation.` +
@@ -96,7 +96,7 @@ In order for these events to fire the action/collection/propert must, at least,
 `postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObject/persistedLifecycleEvent.adoc[`@DomainObject#persistedLifecycleEvent()`] is not specified (is set to `ObjectPersistedEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObject.adoc#persistedLifecycleEvent[`@DomainObject#persistedLifecycleEvent()`] is not specified (is set to `ObjectPersistedEvent.Default`).
 
 |`isis.reflector.facet.` +
 `domainObjectAnnotation.` +
@@ -104,7 +104,7 @@ In order for these events to fire the action/collection/propert must, at least,
 `postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObject/removingLifecycleEvent.adoc[`@DomainObject#removingLifecycleEvent()`] is not specified (is set to `ObjectRemovingEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObject.adoc#removingLifecycleEvent[`@DomainObject#removingLifecycleEvent()`] is not specified (is set to `ObjectRemovingEvent.Default`).
 
 |`isis.reflector.facet.` +
 `domainObjectAnnotation.` +
@@ -112,7 +112,7 @@ In order for these events to fire the action/collection/propert must, at least,
 `postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObject/updatingLifecycleEvent.adoc[`@DomainObject#updatingLifecycleEvent()`] is not specified (is set to `ObjectUpdatingEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObject.adoc#updatingLifecycleEvent[`@DomainObject#updatingLifecycleEvent()`] is not specified (is set to `ObjectUpdatingEvent.Default`).
 
 |`isis.reflector.facet.` +
 `domainObjectAnnotation.` +
@@ -120,7 +120,7 @@ In order for these events to fire the action/collection/propert must, at least,
 `postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObject/updatedLifecycleEvent.adoc[`@DomainObject#updatedLifecycleEvent()`] is not specified (is set to `ObjectUpdatedEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObject.adoc#updatedLifecycleEvent[`@DomainObject#updatedLifecycleEvent()`] is not specified (is set to `ObjectUpdatedEvent.Default`).
 
 
 
@@ -150,28 +150,28 @@ In order for these events to fire the class must be annotated using `@DomainObje
 `cssClassUiEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObjectLayout/cssClassUiEvent.adoc[`@DomainObjectLayout#cssClassUiEvent()`] is not specified (is set to `CssClassUiEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObjectLayout.adoc#cssClassUiEvent[`@DomainObjectLayout#cssClassUiEvent()`] is not specified (is set to `CssClassUiEvent.Default`).
 
 |`isis.reflector.facet.` +
 `domainObjectLayoutAnnotation.` +
 `iconUiEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObjectLayout/iconUiEvent.adoc[`@DomainObjectLayout#iconUiEvent()`] is not specified (is set to `IconUiEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObjectLayout.adoc#iconUiEvent[`@DomainObjectLayout#iconUiEvent()`] is not specified (is set to `IconUiEvent.Default`).
 
 |`isis.reflector.facet.` +
 `domainObjectLayoutAnnotation.` +
 `layoutUiEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObjectLayout/layoutUiEvent.adoc[`@DomainObjectLayout#layoutUiEvent()`] is not specified (is set to `LayoutUiEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObjectLayout.adoc#layoutUiEvent[`@DomainObjectLayout#layoutUiEvent()`] is not specified (is set to `LayoutUiEvent.Default`).
 
 |`isis.reflector.facet.` +
 `domainObjectLayoutAnnotation.` +
 `titleUiEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:DomainObjectLayout/titleUiEvent.adoc[`@DomainObjectLayout#titleUiEvent()`] is not specified (is set to `TitleUiEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:DomainObjectLayout.adoc#titleUiEvent[`@DomainObjectLayout#titleUiEvent()`] is not specified (is set to `TitleUiEvent.Default`).
 
 
 |`isis.reflector.facet.` +
@@ -179,28 +179,28 @@ In order for these events to fire the class must be annotated using `@DomainObje
 `cssClassUiEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:ViewModelLayout/cssClassUiEvent.adoc[`@ViewModelLayout#cssClassUiEvent()`] is not specified (is set to `CssClassUiEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:ViewModelLayout.adoc#cssClassUiEvent[`@ViewModelLayout#cssClassUiEvent()`] is not specified (is set to `CssClassUiEvent.Default`).
 
 |`isis.reflector.facet.` +
 `viewModelLayoutAnnotation.` +
 `iconUiEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:ViewModelLayout/iconUiEvent.adoc[`@ViewModelLayout#iconUiEvent()`] is not specified (is set to `IconUiEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:ViewModelLayout.adoc#iconUiEvent[`@ViewModelLayout#iconUiEvent()`] is not specified (is set to `IconUiEvent.Default`).
 
 |`isis.reflector.facet.` +
 `viewModelLayoutAnnotation.` +
 `layoutUiEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:ViewModelLayout/layoutUiEvent.adoc[`@ViewModelLayout#layoutUiEvent()`] is not specified (is set to `LayoutUiEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:ViewModelLayout.adoc#layoutUiEvent[`@ViewModelLayout#layoutUiEvent()`] is not specified (is set to `LayoutUiEvent.Default`).
 
 |`isis.reflector.facet.` +
 `viewModelLayoutAnnotation.` +
 `titleUiEvent.postForDefault`
 |`true`,`false` +
 (`true`)
-|Whether an event should be posted if xref:rg:ant:ViewModelLayout/titleUiEvent.adoc[`@ViewModelLayout#titleUiEvent()`] is not specified (is set to `TitleUiEvent.Default`).
+|Whether an event should be posted if xref:rg:ant:ViewModelLayout.adoc#titleUiEvent[`@ViewModelLayout#titleUiEvent()`] is not specified (is set to `TitleUiEvent.Default`).
 
 
 
@@ -241,14 +241,14 @@ In order for these events to fire the class must be annotated using `@DomainObje
 `objects`
 | `all`, `none` +
 (`all`)
-|Whether the changed properties of objects should be automatically audited (for objects annotated with xref:rg:ant:DomainObject/auditing.adoc[`@DomainObject(auditing=Auditing.AS_CONFIGURED)`].
+|Whether the changed properties of objects should be automatically audited (for objects annotated with xref:rg:ant:DomainObject.adoc#auditing[`@DomainObject(auditing=Auditing.AS_CONFIGURED)`].
 
 
 |`isis.services.` +
 `command.` +
 `actions`
 | `all`, `ignoreSafe`, `none` (`none`)
-|Whether action invocations should be automatically reified into commands (for actions annotated with xref:rg:ant:Action/command.adoc[`@Action(command=CommandReification.AS_CONFIGURED)`].  +
+|Whether action invocations should be automatically reified into commands (for actions annotated with xref:rg:ant:Action.adoc#command[`@Action(command=CommandReification.AS_CONFIGURED)`].  +
 
 `ignoreQueryOnly` is an alias for `ignoreSafe`.
 
@@ -256,7 +256,7 @@ In order for these events to fire the class must be annotated using `@DomainObje
 `command.` +
 `properties`
 | `all`, `none` (`none`)
-|(Whether property edits should be automatically reified into commands (for properties annotated with xref:rg:ant:Property/command.adoc[`@Property(command=CommandReification.AS_CONFIGURED)`].  +
+|(Whether property edits should be automatically reified into commands (for properties annotated with xref:rg:ant:Property.adoc#command[`@Property(command=CommandReification.AS_CONFIGURED)`].  +
 
 
 
@@ -287,20 +287,20 @@ If the setting is changed to disabled then this may reduce application start-up
 `objects`
 | `all`, `none` +
 (`all`)
-|Whether changed objects should be automatically published (for objects annotated with xref:rg:ant:DomainObject/publishing.adoc[`@DomainObject(publishing=Publishing.AS_CONFIGURED)`].
+|Whether changed objects should be automatically published (for objects annotated with xref:rg:ant:DomainObject.adoc#publishing[`@DomainObject(publishing=Publishing.AS_CONFIGURED)`].
 
 
 |`isis.services.` +
 `publish.` +
 `actions`
 | `all`, `ignoreSafe`, `none` (`none`)
-|Whether actions should be automatically published (for actions annotated with xref:rg:ant:Action/publishing.adoc[`@Action(publishing=Publishing.AS_CONFIGURED)`]. +
+|Whether actions should be automatically published (for actions annotated with xref:rg:ant:Action.adoc#publishing[`@Action(publishing=Publishing.AS_CONFIGURED)`]. +
 
 |`isis.services.` +
 `publish.` +
 `properties`
 | `all`, `none` (`none`)
-|Whether properties should be automatically published (for properties annotated with xref:rg:ant:Action/publishing.adoc[`@Property(publishing=Publishing.AS_CONFIGURED)`]. +
+|Whether properties should be automatically published (for properties annotated with xref:rg:ant:Action.adoc#publishing[`@Property(publishing=Publishing.AS_CONFIGURED)`]. +
 
 
 |`isis.services.` +
@@ -640,7 +640,7 @@ See xref:ug:btb:about.adoc#layout-metadata-reader[Layout Metadata Reader] for mo
 `editing`
 |`true`,`false` +
 (`true`)
-|Whether objects' properties and collections can be edited directly (for objects annotated with xref:rg:ant:DomainObject/editing.adoc[`@DomainObject#editing()`]); see xref:rg:cfg:configuring-core.adoc#isis-objects-editing[below] for further discussion.
+|Whether objects' properties and collections can be edited directly (for objects annotated with xref:rg:ant:DomainObject.adoc#editing[`@DomainObject#editing()`]); see xref:rg:cfg:configuring-core.adoc#isis-objects-editing[below] for further discussion.
 
 |`isis.reflector.` +
 `explicitAnnotations.` +
diff --git a/core/_adoc-rg/modules/cfg/pages/deployment-types.adoc b/core/_adoc-rg/modules/cfg/pages/deployment-types.adoc
index dd9fc1b..5dd095d 100644
--- a/core/_adoc-rg/modules/cfg/pages/deployment-types.adoc
+++ b/core/_adoc-rg/modules/cfg/pages/deployment-types.adoc
@@ -9,7 +9,7 @@ Apache Isis distinguishes between the application being run in development mode
 
 (For mostly historical reasons) development mode is actually called `SERVER_PROTOTYPE`, while production mode is called just `SERVER`.
 
-When running in development/prototyping mode, certain capabilities are enabled; most notably any actions restricted to prototyping mode (using xref:rg:ant:Action/restrictTo.adoc[`@Action#restrictTo()`]) will be available.
+When running in development/prototyping mode, certain capabilities are enabled; most notably any actions restricted to prototyping mode (using xref:rg:ant:Action.adoc#restrictTo[`@Action#restrictTo()`]) will be available.
 
 
 
diff --git a/core/_adoc-rg/modules/cms/pages/classes/domainevent.adoc b/core/_adoc-rg/modules/cms/pages/classes/domainevent.adoc
index a40798c..0ee0dab 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/domainevent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/domainevent.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 This section catalogues the various domain event classes defined by Apache Isis.
 
 These events are broadcast on the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`].
-The domain events are broadcast as a result of being specified in the xref:rg:ant:Action/domainEvent.adoc[`@Action#domainEvent()`],  xref:rg:ant:Property/domainEvent.adoc[`@Property#domainEvent()`] or xref:rg:ant:Collection/domainEvent.adoc[`@Collection#domainEvent()`] attributes.
+The domain events are broadcast as a result of being specified in the xref:rg:ant:Action.adoc#domainEvent[`@Action#domainEvent()`],  xref:rg:ant:Property.adoc#domainEvent[`@Property#domainEvent()`] or xref:rg:ant:Collection.adoc#domainEvent[`@Collection#domainEvent()`] attributes.
 
 They are listed in the table below.
 
diff --git a/core/_adoc-rg/modules/cms/pages/classes/domainevent/ActionDomainEvent.adoc b/core/_adoc-rg/modules/cms/pages/classes/domainevent/ActionDomainEvent.adoc
index f55bc04..bb7b047 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/domainevent/ActionDomainEvent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/domainevent/ActionDomainEvent.adoc
@@ -39,7 +39,7 @@ public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
     public void setReturnValue();                                         // <7>
 }
 ----
-<1> The `Default` nested static class is the default for the xref:rg:ant:Action/domainEvent.adoc[`@Action#domainEvent()`]
+<1> The `Default` nested static class is the default for the xref:rg:ant:Action.adoc#domainEvent[`@Action#domainEvent()`]
 annotation attribute.
 Whether this raises an event or not depends upon the `isis.reflector.facet.actionAnnotation.domainEvent.postForDefault` configuration property.
 <2> The `Noop` class is provided as a convenience to indicate that an event should _not_ be posted (irrespective of the configuration property setting).
diff --git a/core/_adoc-rg/modules/cms/pages/classes/domainevent/CollectionDomainEvent.adoc b/core/_adoc-rg/modules/cms/pages/classes/domainevent/CollectionDomainEvent.adoc
index 2207a06..3140bdc 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/domainevent/CollectionDomainEvent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/domainevent/CollectionDomainEvent.adoc
@@ -36,7 +36,7 @@ public abstract class CollectionDomainEvent<S,T> extends AbstractDomainEvent<S>
     public Of getOf();                                          // <5>
 }
 ----
-<1> The `Default` nested static class is the default for the xref:rg:ant:Collection/domainEvent.adoc[`@Collection#domainEvent()`] annotation attribute.
+<1> The `Default` nested static class is the default for the xref:rg:ant:Collection.adoc#domainEvent[`@Collection#domainEvent()`] annotation attribute.
 Whether this raises an event or not depends upon the
 `isis.reflector.facet.collectionAnnotation.domainEvent.postForDefault` configuration property.
 <2> The `Noop` class is provided as a convenience to indicate that an event should _not_ be posted (irrespective of the configuration property setting).
diff --git a/core/_adoc-rg/modules/cms/pages/classes/domainevent/PropertyDomainEvent.adoc b/core/_adoc-rg/modules/cms/pages/classes/domainevent/PropertyDomainEvent.adoc
index dc0df34..3aba4cc 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/domainevent/PropertyDomainEvent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/domainevent/PropertyDomainEvent.adoc
@@ -34,7 +34,7 @@ public abstract class PropertyDomainEvent<S,T> extends AbstractDomainEvent<S> {
     public T getNewValue();                                     // <5>
 }
 ----
-<1> The `Default` nested static class is the default for the xref:rg:ant:Property/domainEvent.adoc[`@Property#domainEvent()`] annotation attribute.
+<1> The `Default` nested static class is the default for the xref:rg:ant:Property.adoc#domainEvent[`@Property#domainEvent()`] annotation attribute.
 Whether this raises an event or not depends upon the
 `isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault` configuration property.
 <2> The `Noop` class is provided as a convenience to indicate that an event should _not_ be posted (irrespective of the configuration property setting).
diff --git a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectCreatedEvent.adoc b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectCreatedEvent.adoc
index f4eafae..ffdc9e8 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectCreatedEvent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectCreatedEvent.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 Subclass of xref:rg:cms:classes/lifecycleevent/AbstractLifecycleEvent.adoc[`AbstractLifecycleEvent`], broadcast when an object is first instantiated using the xref:rg:svc:core-domain-api/FactoryService.adoc[`FactoryServuce`]'s `#instantiate(...)` method.
 
-`ObjectCreatedEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject/createdLifecycleEvent.adoc[`@DomainObject#createdLifecycleEvent()`].
+`ObjectCreatedEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject.adoc#createdLifecycleEvent[`@DomainObject#createdLifecycleEvent()`].
 
 
 
diff --git a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectPersistedEvent.adoc b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectPersistedEvent.adoc
index 9e35d47..ce510af 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectPersistedEvent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectPersistedEvent.adoc
@@ -6,4 +6,4 @@ include::_attributes.adoc[]
 Subclass of xref:rg:cms:classes/lifecycleevent/AbstractLifecycleEvent.adoc[`AbstractLifecycleEvent`], broadcast when an object is first saved (inserted) into the database using the xref:rg:svc:core-domain-api/RepositoryService.adoc[`RepositoryService`]'s `#persist(...)` method.
 
 
-`ObjectPersistedEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject/persistedLifecycleEvent.adoc[`@DomainObject#persistedLifecycleEvent()`].
+`ObjectPersistedEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject.adoc#persistedLifecycleEvent[`@DomainObject#persistedLifecycleEvent()`].
diff --git a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectPersistingEvent.adoc b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectPersistingEvent.adoc
index 8c38b70..3e6e3cd 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectPersistingEvent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectPersistingEvent.adoc
@@ -6,5 +6,5 @@ include::_attributes.adoc[]
 Subclass of xref:rg:cms:classes/lifecycleevent/AbstractLifecycleEvent.adoc[`AbstractLifecycleEvent`], broadcast when an object is about to be saved (inserted) into the database using the xref:rg:svc:core-domain-api/RepositoryService.adoc[`RepositoryService`]'s `#persist(...)` method.
 
 
-`ObjectPersistingEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject/persistingLifecycleEvent.adoc[`@DomainObject#persistingLifecycleEvent()`].
+`ObjectPersistingEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject.adoc#persistingLifecycleEvent[`@DomainObject#persistingLifecycleEvent()`].
 
diff --git a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectRemovingEvent.adoc b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectRemovingEvent.adoc
index 3167947..3b0cf34 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectRemovingEvent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectRemovingEvent.adoc
@@ -6,5 +6,5 @@ include::_attributes.adoc[]
 Subclass of xref:rg:cms:classes/lifecycleevent/AbstractLifecycleEvent.adoc[`AbstractLifecycleEvent`], broadcast when an object is about to be deleted from the database using the xref:rg:svc:core-domain-api/RepositoryService.adoc[`RepositoryService`]'s `#remove(...)` method.
 
 
-`ObjectRemovingEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject/removingLifecycleEvent.adoc[`@DomainObject#removingLifecycleEvent()`].
+`ObjectRemovingEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject.adoc#removingLifecycleEvent[`@DomainObject#removingLifecycleEvent()`].
 
diff --git a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectUpdatedEvent.adoc b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectUpdatedEvent.adoc
index e63efbc..c99a877 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectUpdatedEvent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectUpdatedEvent.adoc
@@ -7,5 +7,5 @@ include::_attributes.adoc[]
 Subclass of xref:rg:cms:classes/lifecycleevent/AbstractLifecycleEvent.adoc[`AbstractLifecycleEvent`], broadcast when an object has just been updated in the database.
 This is done either explicitly when the current transaction is flushed using the xref:rg:svc:core-domain-api/RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
 
-`ObjectUpdatedEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject/updatedLifecycleEvent.adoc[`@DomainObject#updatedLifecycleEvent()`].
+`ObjectUpdatedEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject.adoc#updatedLifecycleEvent[`@DomainObject#updatedLifecycleEvent()`].
 
diff --git a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectUpdatingEvent.adoc b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectUpdatingEvent.adoc
index 6ff3793..3f0c134 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectUpdatingEvent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/lifecycleevent/ObjectUpdatingEvent.adoc
@@ -8,4 +8,4 @@ Subclass of xref:rg:cms:classes/lifecycleevent/AbstractLifecycleEvent.adoc[`Abst
 This is done either explicitly when the current transaction is flushed using the xref:rg:svc:core-domain-api/RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
 
 
-`ObjectUpdatingEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject/updatingLifecycleEvent.adoc[`@DomainObject#updatingLifecycleEvent()`].
\ No newline at end of file
+`ObjectUpdatingEvent.Default` is the implementation that is used by default, but this can be overridden using xref:rg:ant:DomainObject.adoc#updatingLifecycleEvent[`@DomainObject#updatingLifecycleEvent()`].
\ No newline at end of file
diff --git a/core/_adoc-rg/modules/cms/pages/classes/spec.adoc b/core/_adoc-rg/modules/cms/pages/classes/spec.adoc
index a9d027b..5fbfefc 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/spec.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/spec.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 
 The interfaces and classes listed in this chapter provide support for the  `Specification` pattern, as described in Eric Evans' book _Domain Driven Design_, p224.
 
-Apache Isis will automatically apply such specifications as validation rules on properties (as per xref:rg:ant:Property/mustSatisfy.adoc[`@Property#mustSatisfy()`]) and on action parameters (as per xref:rg:ant:Parameter/mustSatisfy.adoc[`@Parameter#mustSatisfy()`]).
+Apache Isis will automatically apply such specifications as validation rules on properties (as per xref:rg:ant:Property.adoc#mustSatisfy[`@Property#mustSatisfy()`]) and on action parameters (as per xref:rg:ant:Parameter.adoc#mustSatisfy[`@Parameter#mustSatisfy()`]).
 
 
 
diff --git a/core/_adoc-rg/modules/cms/pages/classes/super/AbstractService.adoc b/core/_adoc-rg/modules/cms/pages/classes/super/AbstractService.adoc
index 6bb8fb5..5226f2b 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/super/AbstractService.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/super/AbstractService.adoc
@@ -5,4 +5,4 @@ include::_attributes.adoc[]
 This class provides an implementation of the optional `getId()` method for domain services, based upon the classes name.
 
 In practice there is little to gain from subclassing.
-Instead annotate with xref:rg:ant:DomainService.adoc[`@DomainService`] and specify its xref:rg:ant:DomainService/objectType.adoc[`#objectType()`]
+Instead annotate with xref:rg:ant:DomainService.adoc[`@DomainService`] and specify its xref:rg:ant:DomainService.adoc#objectType[`#objectType()`]
diff --git a/core/_adoc-rg/modules/cms/pages/classes/super/AbstractSubscriber.adoc b/core/_adoc-rg/modules/cms/pages/classes/super/AbstractSubscriber.adoc
index 3f8de63..5483492 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/super/AbstractSubscriber.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/super/AbstractSubscriber.adoc
@@ -8,6 +8,6 @@ It uses xref:rg:ant:PostConstruct.adoc[`@PostConstruct`] and xref:rg:ant:PreDest
 
 It's important that subscribers register before any domain services that might emit events on the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`].
 For example, the (non-ASF) link:https://platform.incode.org[Incode Platform^] security module provides a domain service that automatically seeds certain domain entities; these will generate xref:rg:cms:classes/lifecycleevent.adoc[lifecycle events] and so any subscribers must be registered before such seed services.
-The easiest way to do this is to use the xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] attribute.
+The easiest way to do this is to use the xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
 
 As a convenience, the `AbstractSubscriber` specifies this attribute.
\ No newline at end of file
diff --git a/core/_adoc-rg/modules/cms/pages/classes/uievent.adoc b/core/_adoc-rg/modules/cms/pages/classes/uievent.adoc
index 04924ff..90e5952 100644
--- a/core/_adoc-rg/modules/cms/pages/classes/uievent.adoc
+++ b/core/_adoc-rg/modules/cms/pages/classes/uievent.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 This section catalogues the various UI event classes defined by Apache Isis.
 
 These events are broadcast on the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`].  The domain
-events are broadcast as a result of being specified in the xref:rg:ant:DomainObjectLayout/titleUiEvent.adoc[`@DomainObjectLayout#titleUiEvent()`],  xref:rg:ant:DomainObjectLayout/iconUiEvent.adoc[`@DomainObjectLayout#iconUiEvent()`] or xref:rg:ant:DomainObjectLayout/cssClassUiEvent.adoc[`@DomainObjectLayout#cssClassUiEvent()`] attributes.
+events are broadcast as a result of being specified in the xref:rg:ant:DomainObjectLayout.adoc#titleUiEvent[`@DomainObjectLayout#titleUiEvent()`],  xref:rg:ant:DomainObjectLayout.adoc#iconUiEvent[`@DomainObjectLayout#iconUiEvent()`] or xref:rg:ant:DomainObjectLayout.adoc#cssClassUiEvent[`@DomainObjectLayout#cssClassUiEvent()`] attributes.
 
 They are listed in the table below.
 
diff --git a/core/_adoc-rg/modules/cms/pages/methods/prefixes.adoc b/core/_adoc-rg/modules/cms/pages/methods/prefixes.adoc
index 6baa362..9451bcd 100644
--- a/core/_adoc-rg/modules/cms/pages/methods/prefixes.adoc
+++ b/core/_adoc-rg/modules/cms/pages/methods/prefixes.adoc
@@ -56,7 +56,7 @@ See also xref:rg:cms:methods/prefixes/removeFrom.adoc[`removeFrom...()`]`
 |Y
 |Return a list of matching elements for a property or an action parameter. +
 
-Alternatively, can specify for a class using xref:rg:ant:DomainObject/autoCompleteRepository.adoc[`@DomainObject` +
+Alternatively, can specify for a class using xref:rg:ant:DomainObject.adoc#autoCompleteRepository[`@DomainObject` +
 `#autoCompleteRepository`] +
 
 See also xref:rg:cms:methods/prefixes/choices.adoc[`choices...()`]
diff --git a/core/_adoc-rg/modules/cms/pages/methods/reserved/getId.adoc b/core/_adoc-rg/modules/cms/pages/methods/reserved/getId.adoc
index ddcd5fb..7ff1f61 100644
--- a/core/_adoc-rg/modules/cms/pages/methods/reserved/getId.adoc
+++ b/core/_adoc-rg/modules/cms/pages/methods/reserved/getId.adoc
@@ -35,7 +35,7 @@ public class OrderMenu {
 
 The rules of precedence are:
 
-1. xref:rg:ant:DomainService/objectType.adoc[`@DomainService#objectType()`]
+1. xref:rg:ant:DomainService.adoc#objectType[`@DomainService#objectType()`]
 2. xref:rg:cms:methods/reserved/getId.adoc[`getId()`]
 3. The fully qualified class name.
 
diff --git a/core/_adoc-rg/modules/cms/pages/schema/chg.adoc b/core/_adoc-rg/modules/cms/pages/schema/chg.adoc
index a940a2a..9ffdbb6 100644
--- a/core/_adoc-rg/modules/cms/pages/schema/chg.adoc
+++ b/core/_adoc-rg/modules/cms/pages/schema/chg.adoc
@@ -8,7 +8,7 @@ The changes ("chg") schema defines the serialized form identifying which objects
 It also captures a number of other metrics counts (number of objects loaded, number of object properties modified), useful for profiling.
 
 An instance of the DTO (corresponding to this schema) is used within the xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`] SPI, identifying changed objects that are to be
-published (as per xref:rg:ant:DomainObject/publishing.adoc[`@DomainObject#publishing()`] or equivalent).
+published (as per xref:rg:ant:DomainObject.adoc#publishing[`@DomainObject#publishing()`] or equivalent).
 
 
 == `changesDto`
diff --git a/core/_adoc-rg/modules/cms/pages/schema/common.adoc b/core/_adoc-rg/modules/cms/pages/schema/common.adoc
index 63fe52c..3e2ce6b 100644
--- a/core/_adoc-rg/modules/cms/pages/schema/common.adoc
+++ b/core/_adoc-rg/modules/cms/pages/schema/common.adoc
@@ -51,7 +51,7 @@ The `oidDto` complex type is defined as:
 Although URIs are not the same as URLs, you will find that the schemas are also downloadable from this location.
 <2> the `oidDto` complex type defines the unique identifier for any domain object: its type, and an identifier.
 The `objectState` attribute can usually be omitted (indicating a persistent object)
-<3> the object type, corresponding to either the xref:rg:ant:DomainObject/objectType.adoc[`@DomainObject#objectType()`] attribute, or to the (JDO)
+<3> the object type, corresponding to either the xref:rg:ant:DomainObject.adoc#objectType[`@DomainObject#objectType()`] attribute, or to the (JDO)
 xref:rg:ant:PersistenceCapable.adoc[`@PersistenceCapable`] annotation (`schema` and/or `table` attributes), or to the (JDO) xref:rg:ant:Discriminator.adoc[`@Discriminator`] annotation.
 If none is specified, then the fully qualified class name will be used.
 <4> the object identifier (aka primary key), converted to string form.
diff --git a/core/_adoc-rg/modules/fis/pages/application-layer.adoc b/core/_adoc-rg/modules/fis/pages/application-layer.adoc
index edea2fb..7dd8fac 100644
--- a/core/_adoc-rg/modules/fis/pages/application-layer.adoc
+++ b/core/_adoc-rg/modules/fis/pages/application-layer.adoc
@@ -38,8 +38,8 @@ Impl'n (g: a:)
 `CommandDtoServiceInternal`]
 |Creates memento of current action invocation, for use as a serializable XML reified command.  The
 most notable usage of this is to allow the execution of the `Command` to be deferred to run in the background (via
-xref:rg:ant:Action/command.adoc[`@Action#commandExecuteIn()`] or
-xref:rg:ant:Property/command.adoc[`@Property#commandExecuteIn()`].
+xref:rg:ant:Action.adoc#command[`@Action#commandExecuteIn()`] or
+xref:rg:ant:Property.adoc#command[`@Property#commandExecuteIn()`].
 |`CommandDtoService-` +
 `InternalServiceDefault` +
 ``isis-core-runtime``
diff --git a/core/_adoc-rg/modules/fis/pages/persistence-layer/PersistenceSessionServiceInternal.adoc b/core/_adoc-rg/modules/fis/pages/persistence-layer/PersistenceSessionServiceInternal.adoc
index 4ce50a4..a4de385 100644
--- a/core/_adoc-rg/modules/fis/pages/persistence-layer/PersistenceSessionServiceInternal.adoc
+++ b/core/_adoc-rg/modules/fis/pages/persistence-layer/PersistenceSessionServiceInternal.adoc
@@ -83,12 +83,8 @@ public interface PersistenceSessionServiceInternal extends AdapterManager {
 ----
 
 
-== Runtime vs Noop implementation
+== Implementation
 
-The framework provides two implementations:
+The framework provides a single implementation, `PersistenceSessionServiceInternalDefault`, provided by `isis-core-runtime`.
+This is used during normal use and in integration tests.
 
-* `PersistenceSessionServiceInternalDefault` is provided by `isis-core-runtime`, and is used during normal use and integration tests
-
-* `PersistenceSessionServiceInternalNoop` is provided as a fallback by `isis-core-metamodel`, and is provided to allow the xref:rg:mvn:about.adoc[maven plugin] to be bootstrapped without any "backend" database.
-
-The `...Default` implementation takes priority over the `...Noop` implementation.
diff --git a/core/_adoc-rg/modules/fis/pages/persistence-layer/PublishingServiceInternal.adoc b/core/_adoc-rg/modules/fis/pages/persistence-layer/PublishingServiceInternal.adoc
index a9b2fee..76f4035 100644
--- a/core/_adoc-rg/modules/fis/pages/persistence-layer/PublishingServiceInternal.adoc
+++ b/core/_adoc-rg/modules/fis/pages/persistence-layer/PublishingServiceInternal.adoc
@@ -24,11 +24,11 @@ public class PublishingServiceInternal {
     void publishObjects();                          // <3>
 }
 ----
-<1> to publish an action invocation, as represented by the specified member `Execution` parameter and with the xref:rg:ant:Action/publishing.adoc[`@Action#publishing()`] annotation attribute or equivalent, to any configured xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
+<1> to publish an action invocation, as represented by the specified member `Execution` parameter and with the xref:rg:ant:Action.adoc#publishing[`@Action#publishing()`] annotation attribute or equivalent, to any configured xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
 The `Execution` object will be an instance of `ActionInvocation` (see xref:rg:svc:application-layer-api/InteractionContext.adoc[`InteractionContext`] for details).
-<2> to publish a property edit, as as represented by the specified member `Execution` parameter and with the xref:rg:ant:Property/publishing.adoc[`@Property#publishing()`] annotation attribute or equivalent, to any configured xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
+<2> to publish a property edit, as as represented by the specified member `Execution` parameter and with the xref:rg:ant:Property.adoc#publishing[`@Property#publishing()`] annotation attribute or equivalent, to any configured xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
 The `Execution` object will be an instance of `PropertyEdit` (see xref:rg:svc:application-layer-api/InteractionContext.adoc[`InteractionContext`] for details).
-<3> to publish all changed objects that are to be published (with the xref:rg:ant:DomainObject/publishing.adoc[`@DomainObject#publishing()`] annotation attribute or equivalent).
+<3> to publish all changed objects that are to be published (with the xref:rg:ant:DomainObject.adoc#publishing[`@DomainObject#publishing()`] annotation attribute or equivalent).
 
 
 The service implementation is `o.a.i.c.m.s.publishing.PublishingServiceInternal`.
@@ -39,7 +39,7 @@ The service implementation is `o.a.i.c.m.s.publishing.PublishingServiceInternal`
 
 Apache Isis' default implementation of `PublishingServiceInternal` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
 
-To use an alternative implementation, use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 == Related Classes
diff --git a/core/_adoc-rg/modules/fis/pages/presentation-layer/ContentNegotiationService.adoc b/core/_adoc-rg/modules/fis/pages/presentation-layer/ContentNegotiationService.adoc
index 5aea8b4..3a8a4be 100644
--- a/core/_adoc-rg/modules/fis/pages/presentation-layer/ContentNegotiationService.adoc
+++ b/core/_adoc-rg/modules/fis/pages/presentation-layer/ContentNegotiationService.adoc
@@ -193,7 +193,7 @@ If the property is not set, then the default depends on the xref:rg:cfg:deployme
 
 Apache Isis' default implementations of `ContentNegotiationService` service are automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
 
-To use an alternative implementation, use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/_adoc-rg/modules/fis/pages/presentation-layer/RepresentationService.adoc b/core/_adoc-rg/modules/fis/pages/presentation-layer/RepresentationService.adoc
index eb6476e..beb9cd7 100644
--- a/core/_adoc-rg/modules/fis/pages/presentation-layer/RepresentationService.adoc
+++ b/core/_adoc-rg/modules/fis/pages/presentation-layer/RepresentationService.adoc
@@ -79,7 +79,7 @@ ie `MemberReprMode`
 As discussed in the introduction, the framework provides a default implementation, `o.a.i.v.ro.rendering.service.RepresentationServiceContentNegotiator`.
 This delegates to xref:rg:fis:presentation-layer/ContentNegotiationService.adoc[`ContentNegotiationService`] to generate an alternative representation; but if none is provided then it falls back on generating the representations as defined in the link:http://restfulobjects.org[Restful Objects spec] v1.0.
 
-To use an alternative implementation, use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 == Registering the Services
diff --git a/core/_adoc-rg/modules/svc/pages/application-layer-api/ActionInvocationContext.adoc b/core/_adoc-rg/modules/svc/pages/application-layer-api/ActionInvocationContext.adoc
index c2699ba..e5e512f 100644
--- a/core/_adoc-rg/modules/svc/pages/application-layer-api/ActionInvocationContext.adoc
+++ b/core/_adoc-rg/modules/svc/pages/application-layer-api/ActionInvocationContext.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 
 // TODO: v2: remove this domain service
 
-The `ActionInvocationContext` domain service is a xref:rg:ant:RequestScoped.adoc[`@RequestScoped`] service intended to support the implementation of "bulk" actions annotated with xref:rg:ant:Action/invokeOn.adoc[`@Action#invokeOn()`].
+The `ActionInvocationContext` domain service is a xref:rg:ant:RequestScoped.adoc[`@RequestScoped`] service intended to support the implementation of "bulk" actions annotated with xref:rg:ant:Action.adoc#invokeOn[`@Action#invokeOn()`].
 This allows the user to select multiple objects in a table and then invoke the same action against all of them.
 
 When an action is invoked in this way, this service allows each object instance to "know where it is" in the collection; it acts a little like an iterator.
@@ -41,7 +41,7 @@ public static class ActionInvocationContext {
 <4> is the 0-based index to the object being acted upon.
 
 
-To provide an alternative implementation, subclass and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To provide an alternative implementation, subclass and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 == Usage
diff --git a/core/_adoc-rg/modules/svc/pages/application-layer-api/BackgroundService.adoc b/core/_adoc-rg/modules/svc/pages/application-layer-api/BackgroundService.adoc
index f9dbd70..e8dcf4c 100644
--- a/core/_adoc-rg/modules/svc/pages/application-layer-api/BackgroundService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/application-layer-api/BackgroundService.adoc
@@ -35,7 +35,7 @@ public interface BackgroundService2 {
 
 The default implementation is provided by core (`o.a.i.core.runtime.services.background.BackgroundServiceDefault`).
 
-To provide an alternative implementation, subclass and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To provide an alternative implementation, subclass and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 == Usage
@@ -57,7 +57,7 @@ public void submitCustomerInvoices() {
 This will create a bunch of background commands executing the `submitInvoice()` action for each of the customers returned from the customer repository.
 
 The action method invoked must be part of the Apache Isis metamodel, which is to say it must be public, accept only scalar arguments, and must not be annotated with xref:rg:ant:Programmatic.adoc[`@Programmatic`] or `@Ignore`.
-However, it may be annotated with xref:rg:ant:Action/hidden.adoc[`@Action#hidden()`] or xref:rg:ant:ActionLayout/hidden.adoc[`@ActionLayout#hidden()`] and it will still be invoked.
+However, it may be annotated with xref:rg:ant:Action.adoc#hidden[`@Action#hidden()`] or xref:rg:ant:ActionLayout.adoc#hidden[`@ActionLayout#hidden()`] and it will still be invoked.
 
 In fact, when invoked by the background service, no business rules (hidden, disabled, validation) are enforced; the action method must take responsibility for performing appropriate validation and error checking.
 
diff --git a/core/_adoc-rg/modules/svc/pages/application-layer-api/CommandContext.adoc b/core/_adoc-rg/modules/svc/pages/application-layer-api/CommandContext.adoc
index f3e4351..c93577a 100644
--- a/core/_adoc-rg/modules/svc/pages/application-layer-api/CommandContext.adoc
+++ b/core/_adoc-rg/modules/svc/pages/application-layer-api/CommandContext.adoc
@@ -10,7 +10,7 @@ By default, the `Command` is held in-memory only; once the action invocation has
 The optional supporting xref:rg:svc:application-layer-spi/CommandService.adoc[`CommandService`] enables the implementation of `Command` to be pluggable.
 With an appropriate implementation (eg as provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s command module's xref:rg:svc:application-layer-spi/CommandService.adoc[`CommandService`]) the `Command` may then be persisted.
 
-The primary use case for persistent ``Command``s is in support of background commands; they act as a parent to any background commands that can be persisted either explicitly using the xref:rg:svc:application-layer-api/BackgroundService.adoc[`BackgroundService`], or implicitly by way of the xref:rg:ant:Action/command.adoc[`@Action#command()`] annotation.
+The primary use case for persistent ``Command``s is in support of background commands; they act as a parent to any background commands that can be persisted either explicitly using the xref:rg:svc:application-layer-api/BackgroundService.adoc[`BackgroundService`], or implicitly by way of the xref:rg:ant:Action.adoc#command[`@Action#command()`] annotation.
 
 There are a number of related use cases:
 
@@ -55,7 +55,7 @@ public class CommandContext {
 This class (`o.a.i.applib.services.CommandContext`) is also the default implementation.
 
 Under normal circumstances there shouldn't be any need to replace this implementation with another.
-But if you do need to for some reason, then subclass and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+But if you do need to for some reason, then subclass and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 The `Command` type referenced above is in fact an interface, defined as:
@@ -114,7 +114,7 @@ xref:rg:svc:application-layer-api/InteractionContext.adoc[`InteractionContext`]
 
 == Usage
 
-The typical way to indicate that an action should be treated as a command is to annotate it with the xref:rg:ant:Action/command.adoc[`@Action#command()`] annotation.
+The typical way to indicate that an action should be treated as a command is to annotate it with the xref:rg:ant:Action.adoc#command[`@Action#command()`] annotation.
 
 For example:
 
@@ -131,11 +131,11 @@ public class ToDoItem ... {
 ====
 As an alternative to annotating every action with `@Action#command()`, alternatively this can be configured as the default using `isis.services.command.actions` configuration property.
 
-See xref:rg:ant:Action/command.adoc[`@Action#command()`] and xref:rg:cfg:configuring-core.adoc[runtime configuration] for further details.
+See xref:rg:ant:Action.adoc#command[`@Action#command()`] and xref:rg:cfg:configuring-core.adoc[runtime configuration] for further details.
 ====
 
 
-The xref:rg:ant:Action/command.adoc[`@Action#command()`] annotation can also be used to specify whether the command should be performed in the background, for example:
+The xref:rg:ant:Action.adoc#command[`@Action#command()`] annotation can also be used to specify whether the command should be performed in the background, for example:
 
 [source,java]
 ----
@@ -213,7 +213,7 @@ The xref:rg:svc:application-layer-api/CommandContext.adoc[`CommandContext`] serv
 The principle distinction is that while `Command` represents the __intention__ to invoke an action or edit a property, the `Interaction` (and contained ``Execution``s) represents the actual execution.
 
 Most of the time a `Command` will be followed directly by its corresponding `Interaction`.
-However, if the `Command` is annotated to run in the background (using xref:rg:ant:Action/command.adoc[`@Action#commandExecuteIn()`], or is explicitly created through the xref:rg:svc:application-layer-api/BackgroundService.adoc[`BackgroundService`], then the actual interaction/execution is deferred until some other mechanism invokes the command (eg as described xref:ug:btb:about.adoc#BackgroundCommandExecution[here]).
+However, if the `Command` is annotated to run in the background (using xref:rg:ant:Action.adoc#command[`@Action#commandExecuteIn()`], or is explicitly created through the xref:rg:svc:application-layer-api/BackgroundService.adoc[`BackgroundService`], then the actual interaction/execution is deferred until some other mechanism invokes the command (eg as described xref:ug:btb:about.adoc#BackgroundCommandExecution[here]).
 The persistence of background commands requires a configured xref:rg:svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommandService`]) to actually persist such commands for execution.
 
 ``Command``s - even if executed in the foreground - can also be persisted by way of the xref:rg:svc:application-layer-spi/CommandService.adoc[`CommandService`].
diff --git a/core/_adoc-rg/modules/svc/pages/application-layer-api/InteractionContext.adoc b/core/_adoc-rg/modules/svc/pages/application-layer-api/InteractionContext.adoc
index c5c8080..c8411a2 100644
--- a/core/_adoc-rg/modules/svc/pages/application-layer-api/InteractionContext.adoc
+++ b/core/_adoc-rg/modules/svc/pages/application-layer-api/InteractionContext.adoc
@@ -13,7 +13,7 @@ invoke child actions/properties, then those sub-executions are captured as a cal
 graph structure.
 
 If a bulk action is performed (as per an action annotated using
-xref:rg:ant:Action/invokeOn.adoc[`@Action#invokeOn()`]), then this will result in multiple ``Interaction``s, one
+xref:rg:ant:Action.adoc#invokeOn[`@Action#invokeOn()`]), then this will result in multiple ``Interaction``s, one
 per selected object (not one `Interaction` with multiple top-level ``Execution``s).
 
 
@@ -192,7 +192,7 @@ The principle distinction is that while `Command` represents the __intention__ t
 the `Interaction` (and contained ``Execution``s) represents the actual execution.
 
 Most of the time a `Command` will be followed directly by its corresponding `Interaction`.  However, if the `Command`
-is annotated to run in the background (using xref:rg:ant:Action/command.adoc[`@Action#commandExecuteIn()`], or
+is annotated to run in the background (using xref:rg:ant:Action.adoc#command[`@Action#commandExecuteIn()`], or
 is explicitly created through the xref:rg:svc:application-layer-api/BackgroundService.adoc[`BackgroundService`], then the actual
 interaction/execution is deferred until some other mechanism invokes the command (eg as described
 xref:ug:btb:about.adoc#BackgroundCommandExecution[here]).
diff --git a/core/_adoc-rg/modules/svc/pages/application-layer-api/MessageService.adoc b/core/_adoc-rg/modules/svc/pages/application-layer-api/MessageService.adoc
index 2de968f..fe7cf58 100644
--- a/core/_adoc-rg/modules/svc/pages/application-layer-api/MessageService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/application-layer-api/MessageService.adoc
@@ -59,5 +59,5 @@ public Order addItem(Product product, @ParameterLayout(named="Quantity") int qua
 
 The core framework provides a default implementation of this service, `o.a.i.core.runtime.services.message.MessageServiceDefault`.
 
-To use an alternative implementation, implement the `MessageService` interface and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `MessageService` interface and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
diff --git a/core/_adoc-rg/modules/svc/pages/application-layer-api/SessionManagementService.adoc b/core/_adoc-rg/modules/svc/pages/application-layer-api/SessionManagementService.adoc
index 2d743ed..e0706c1 100644
--- a/core/_adoc-rg/modules/svc/pages/application-layer-api/SessionManagementService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/application-layer-api/SessionManagementService.adoc
@@ -41,5 +41,5 @@ Any domain objects that were created in the "previous" session are no longer usa
 The core framework provides a default implementation of this service (`o.a.i.core.runtime.services.xactn.SessionManagementServiceDefault`).
 
 
-To use an alternative implementation, implement the `SessionManagementService` interface and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `SessionManagementService` interface and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
diff --git a/core/_adoc-rg/modules/svc/pages/application-layer-api/WrapperFactory.adoc b/core/_adoc-rg/modules/svc/pages/application-layer-api/WrapperFactory.adoc
index 32b1995..5cfd6ab 100644
--- a/core/_adoc-rg/modules/svc/pages/application-layer-api/WrapperFactory.adoc
+++ b/core/_adoc-rg/modules/svc/pages/application-layer-api/WrapperFactory.adoc
@@ -88,7 +88,7 @@ If the object is not wrapped, returns back unchanged.
 
 <8> whether the supplied object has been wrapped.
 
-If the interface is performed (action invoked or property set), then - irrespective of whether the business rules were checked or skipped -  a xref:rg:ant:Action/command.adoc[command]s will be created and pre- and post-execute xref:rg:ant:Action/domainEvent.adoc[domain event]s) will be fired
+If the interface is performed (action invoked or property set), then - irrespective of whether the business rules were checked or skipped -  a xref:rg:ant:Action.adoc#command[command]s will be created and pre- and post-execute xref:rg:ant:Action.adoc#domainEvent[domain event]s) will be fired
 
 
 The service works by returning a "wrapper" around a supplied domain object (using a byte manipulation library such as link:http://www.javassist.org[javassist] or link:https://bytebuddy.net/[byte buddy]), and it is this wrapper that ensures that the hide/disable/validate rules implies by the Apache Isis programming model are enforced.
diff --git a/core/_adoc-rg/modules/svc/pages/application-layer-spi/BackgroundCommandService.adoc b/core/_adoc-rg/modules/svc/pages/application-layer-spi/BackgroundCommandService.adoc
index 81311e6..dcef334 100644
--- a/core/_adoc-rg/modules/svc/pages/application-layer-spi/BackgroundCommandService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/application-layer-spi/BackgroundCommandService.adoc
@@ -76,7 +76,7 @@ Details of setting up the Quartz scheduler to actually execute these persisted c
 
 Background commands can be created either declaratively or imperatively.
 
-The declarative approach involves annotating an action using xref:rg:ant:Action/command.adoc[`@Action#command()`] with `@Action#commandExecuteIn=CommandExecuteIn.BACKGROUND`.
+The declarative approach involves annotating an action using xref:rg:ant:Action.adoc#command[`@Action#command()`] with `@Action#commandExecuteIn=CommandExecuteIn.BACKGROUND`.
 
 The imperative approach involves explicitly calling the xref:rg:svc:application-layer-api/BackgroundService.adoc[`BackgroundService`] from within domain object's action.
 
diff --git a/core/_adoc-rg/modules/svc/pages/application-layer-spi/CommandService.adoc b/core/_adoc-rg/modules/svc/pages/application-layer-spi/CommandService.adoc
index fe67e48..8a76f95 100644
--- a/core/_adoc-rg/modules/svc/pages/application-layer-spi/CommandService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/application-layer-spi/CommandService.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 The `CommandService` service supports the xref:rg:svc:application-layer-api/CommandContext.adoc[`CommandContext`] service such that `Command` objects (that reify the invocation of an action/edit of a property on a domain object) can be persisted.
 
-The primary use case for persistent ``Command``s is in support of background commands; they act as a parent to any background commands that can be persisted either explicitly using the xref:rg:svc:application-layer-api/BackgroundService.adoc[`BackgroundService`], or implicitly by way of the xref:rg:ant:Action/command.adoc[`@Action#command()`] annotation.
+The primary use case for persistent ``Command``s is in support of background commands; they act as a parent to any background commands that can be persisted either explicitly using the xref:rg:svc:application-layer-api/BackgroundService.adoc[`BackgroundService`], or implicitly by way of the xref:rg:ant:Action.adoc#command[`@Action#command()`] annotation.
 
 Persistent ``Command``s also support the ability to replicate from a master to a slave instance of an application.
 One use case for this is for regression testing, allowing a production usages to be replayed against a new release candidate, eg after upgrading that application to a new version of Apache Isis itself (or some other dependency).
diff --git a/core/_adoc-rg/modules/svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc b/core/_adoc-rg/modules/svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
index ec4d355..c7e58ea 100644
--- a/core/_adoc-rg/modules/svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
@@ -39,7 +39,7 @@ This implementation is also used to discover domain services annotated with xref
 Currently this logic uses the implementation directly, so is not pluggable.
 ====
 
-To use an alternative implementation, implement the `ClassDiscoveryService` interface and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `ClassDiscoveryService` interface and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/_adoc-rg/modules/svc/pages/core-domain-api.adoc b/core/_adoc-rg/modules/svc/pages/core-domain-api.adoc
index 95f9d90..cc9dad8 100644
--- a/core/_adoc-rg/modules/svc/pages/core-domain-api.adoc
+++ b/core/_adoc-rg/modules/svc/pages/core-domain-api.adoc
@@ -48,9 +48,9 @@ It also lists their corresponding implementation, either a default implementatio
 `EventBusService`]
 |Programmatically post events to the internal event bus.  Also used by Apache Isis itself to broadcast domain events:
 
-* xref:rg:ant:Action/domainEvent.adoc[`Action#domainEvent()`]
-* xref:rg:ant:Property/domainEvent.adoc[`Property#domainEvent()`]
-* xref:rg:ant:Collection/domainEvent.adoc[`Collection#domainEvent()`]
+* xref:rg:ant:Action.adoc#domainEvent[`Action#domainEvent()`]
+* xref:rg:ant:Property.adoc#domainEvent[`Property#domainEvent()`]
+* xref:rg:ant:Collection.adoc#domainEvent[`Collection#domainEvent()`]
 |`EventBusServiceJdo` +
 ``o.a.i.core`` +
 ``isis-core-runtime``
diff --git a/core/_adoc-rg/modules/svc/pages/core-domain-api/EventBusService.adoc b/core/_adoc-rg/modules/svc/pages/core-domain-api/EventBusService.adoc
index 82bceac..4142ec0 100644
--- a/core/_adoc-rg/modules/svc/pages/core-domain-api/EventBusService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/core-domain-api/EventBusService.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 The `EventBusService` allows domain objects to emit events to subscribing domain services using an in-memory event bus.
 
-The primary user of the service is the framework itself, which automatically emit events for xref:rg:ant:Action/domainEvent.adoc[actions], xref:rg:ant:Property/domainEvent.adoc[properties] and xref:rg:ant:Collection/domainEvent.adoc[collections].
+The primary user of the service is the framework itself, which automatically emit events for xref:rg:ant:Action.adoc#domainEvent[actions], xref:rg:ant:Property.adoc#domainEvent[properties] and xref:rg:ant:Collection.adoc#domainEvent[collections].
 Multiple events are generated:
 
 * when an object member is to be viewed, an event is fired; subscribers can veto (meaning that the member is hidden)
@@ -17,7 +17,7 @@ Multiple events are generated:
 
 If a subscriber throws an exception in the first three steps, then the interaction is vetoed.
 If a subscriber throws an exception in the last two steps, then the transaction is aborted.
-For more on this topic, see xref:rg:ant:Action/domainEvent.adoc[`@Action#domainEvent()`], xref:rg:ant:Property/domainEvent.adoc[`@Property#domainEvent()`] and xref:rg:ant:Collection/domainEvent.adoc[`@Collection#domainEvent()`].
+For more on this topic, see xref:rg:ant:Action.adoc#domainEvent[`@Action#domainEvent()`], xref:rg:ant:Property.adoc#domainEvent[`@Property#domainEvent()`] and xref:rg:ant:Collection.adoc#domainEvent[`@Collection#domainEvent()`].
 
 It is also possible for domain objects to programmatically generate domain events.
 However the events are published, the primary use case is to decoupling interactions from one module/package/namespace and another.
@@ -46,7 +46,7 @@ This should be done in their xref:rg:ant:PostConstruct.adoc[`@PostConstruct`] in
 
 
 
-To use an alternative implementation, implement the `EventBusService` domain service and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `EventBusService` domain service and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 
@@ -83,7 +83,7 @@ public class MySubscribingDomainService {
 <1> subscribers are typically not visible in the UI, so specify a `DOMAIN` nature
 <2> It's important that subscribers register before any domain services that might emit events on the event bus service.
 For example, the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s security module provides a domain service that automatically seeds certain domain entities; these will generate xref:rg:cms:classes/lifecycleevent.adoc[lifecycle events] and so any subscribers must be registered before such seed services.
-The easiest way to do this is to use the xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] attribute.
+The easiest way to do this is to use the xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
 <3> register with the event bus service during xref:rg:ant:PostConstruct.adoc[`@PostConstruct`]
     initialization
 <4> corresponding deregister when shutting down
@@ -94,7 +94,7 @@ This works for both singleton (application-scoped) and also xref:rg:ant:RequestS
 [TIP]
 ====
 The xref:rg:cms:classes/super/AbstractSubscriber.adoc[`AbstractSubscriber`] class automatically performs this registration.
-As a convenience, it is also annotated with the xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] attribute.
+As a convenience, it is also annotated with the xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
 ====
 
 
@@ -290,7 +290,7 @@ public class LibraryMember {
 ----
 <1> `LibraryMember.LeaveEvent` could be _any_ class, not just a subclass of `o.a.i.applib.event.ActionDomainEvent`.
 
-In practice we suspect there will be few cases where the programmatic approach is required rather than the declarative approach afforded by xref:rg:ant:Action/domainEvent.adoc[`@Action#domainEvent()`] et al.
+In practice we suspect there will be few cases where the programmatic approach is required rather than the declarative approach afforded by xref:rg:ant:Action.adoc#domainEvent[`@Action#domainEvent()`] et al.
 
 
 
@@ -413,4 +413,4 @@ isis.services.eventbus.implementation=com.mycompany.isis.MyEventBusServiceImplem
 
 The `EventBusService` is intended for fine-grained publish/subscribe for object-to-object interactions within an Apache Isis domain object model. The event propagation is strictly in-memory, and there are no restrictions on the object acting as the event (it need not be serializable, for example).
 
-The xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`] meanwhile is intended for coarse-grained publish/subscribe for system-to-system interactions, from Apache Isis to some other system. Here the only events published are those that action invocations (for actions annotated with xref:rg:ant:Action/publishing.adoc[`@Action#publishing()`]) and of changed objects (for objects annotated with xref:rg:ant:DomainObject/publishing.adoc[`@DomainObject#publishing()`]).
\ No newline at end of file
+The xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`] meanwhile is intended for coarse-grained publish/subscribe for system-to-system interactions, from Apache Isis to some other system. Here the only events published are those that action invocations (for actions annotated with xref:rg:ant:Action.adoc#publishing[`@Action#publishing()`]) and of changed objects (for objects annotated with xref:rg:ant:DomainObject.adoc#publishing[`@DomainObject#publishing()`]).
\ No newline at end of file
diff --git a/core/_adoc-rg/modules/svc/pages/core-domain-api/Scratchpad.adoc b/core/_adoc-rg/modules/svc/pages/core-domain-api/Scratchpad.adoc
index c88dc05..c83b568 100644
--- a/core/_adoc-rg/modules/svc/pages/core-domain-api/Scratchpad.adoc
+++ b/core/_adoc-rg/modules/svc/pages/core-domain-api/Scratchpad.adoc
@@ -30,13 +30,13 @@ This class (`o.a.i.applib.services.scratchpad.Scratchpad`) is also the implement
 And, as you can see, the service is just a request-scoped wrapper around a `java.util.Map`.
 
 
-To use an alternative implementation, subclass and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, subclass and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 
 == Usage
 
-The most common use-case is for xref:rg:ant:Action/invokeOn.adoc[bulk] actions that act upon multiple objects in a list.  The (same) `Scratchpad` service is injected into each of these objects, and so they can use pass information.
+The most common use-case is for xref:rg:ant:Action.adoc#invokeOn[bulk] actions that act upon multiple objects in a list.  The (same) `Scratchpad` service is injected into each of these objects, and so they can use pass information.
 
 For example, the Isis addons example https://github.com/isisaddons/isis-app-todoapp/[todoapp] (not ASF) demonstrates how the `Scratchpad` service can be used to calculate the total cost of the selected `ToDoItem`s:
 
diff --git a/core/_adoc-rg/modules/svc/pages/integration-api/BookmarkService.adoc b/core/_adoc-rg/modules/svc/pages/integration-api/BookmarkService.adoc
index d8d553f..c509c46 100644
--- a/core/_adoc-rg/modules/svc/pages/integration-api/BookmarkService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/integration-api/BookmarkService.adoc
@@ -7,7 +7,7 @@ The `BookmarkService2` domain service (and its various supertypes) provides the
 
 For example, a `Customer` object with:
 
-* an object type of "custmgmt.Customer" (as per xref:rg:ant:DomainObject/objectType.adoc[`DomainObject#objectType()`] or equivalent) , and
+* an object type of "custmgmt.Customer" (as per xref:rg:ant:DomainObject.adoc#objectType[`DomainObject#objectType()`] or equivalent) , and
 * an id=123
 
 could correspond to a `Bookmark` with a string representation of `custmgmt.Customer|123`.
@@ -55,7 +55,7 @@ public interface BookmarkService {
 
 The core framework provides a default implementation of this API, namely `o.a.i.core.metamodel.services.bookmarks.BookmarkServiceInternalDefault`
 
-To use an alternative implementation, implement `BookmarkService` interface and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement `BookmarkService` interface and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/_adoc-rg/modules/svc/pages/integration-api/JaxbService.adoc b/core/_adoc-rg/modules/svc/pages/integration-api/JaxbService.adoc
index d8121f9..f6a0669 100644
--- a/core/_adoc-rg/modules/svc/pages/integration-api/JaxbService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/integration-api/JaxbService.adoc
@@ -41,7 +41,7 @@ a persistent entity).  The enum indicates whether these schemas should be includ
 
 Apache Isis provides a default implementation of the service, `o.a.i.applib.services.jaxb.JaxbServiceDefault`.
 
-To use an alternative implementation, implement `JaxbService` interface and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement `JaxbService` interface and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/_adoc-rg/modules/svc/pages/integration-api/MementoService.adoc b/core/_adoc-rg/modules/svc/pages/integration-api/MementoService.adoc
index a3fdba8..ffcfded 100644
--- a/core/_adoc-rg/modules/svc/pages/integration-api/MementoService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/integration-api/MementoService.adoc
@@ -51,7 +51,7 @@ In fact, the `MementoServiceDefault` implementation does provide a mechanism to
 not part of the `MementoService` public API. Note also that the encoding method is not pluggable.
 ====
 
-To use an alternative implementation, implement `MementoService` interface and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement `MementoService` interface and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 The types of objects that are supported by the `MementoService` are implementation-specific, but would typically
 include all the usual value types as well as Apache Isis' `Bookmark` class (to represent references to arbitrary
@@ -83,7 +83,7 @@ As noted in the introduction, a common use case for this service is in the imple
 
 [TIP]
 ====
-Rather than implementing `ViewModel`, it's usually easier to annotate your view models with xref:rg:ant:ViewModel.adoc[`@ViewModel`] (or equivalently xref:rg:ant:DomainObject/nature.adoc[`@DomainObject#nature=EXTERNAL_ENTITY`] or xref:rg:ant:DomainObject/nature.adoc[`@DomainObject#nature=INMEMORY_ENTITY`].
+Rather than implementing `ViewModel`, it's usually easier to annotate your view models with xref:rg:ant:ViewModel.adoc[`@ViewModel`] (or equivalently xref:rg:ant:DomainObject.adoc#nature[`@DomainObject#nature=EXTERNAL_ENTITY`] or xref:rg:ant:DomainObject.adoc#nature[`@DomainObject#nature=INMEMORY_ENTITY`].
 ====
 
 For example, suppose you were implementing a view model that represents an external entity in a SOAP web service.  To access this service the view model needs to store (say) the hostname, port number and an id to the object.
diff --git a/core/_adoc-rg/modules/svc/pages/intro.adoc b/core/_adoc-rg/modules/svc/pages/intro.adoc
index 7c789b3..742f11c 100644
--- a/core/_adoc-rg/modules/svc/pages/intro.adoc
+++ b/core/_adoc-rg/modules/svc/pages/intro.adoc
@@ -16,7 +16,7 @@ image::reference-services/categories.png[width="600px",link="{imagesdir}/referen
 
 A small number of domain services can be considered both API and SPI; a good example is the xref:rg:svc:integration-api/EmailService.adoc[`EmailService`] that is of direct use for domain objects wishing to send out emails, but is also used by the framework to support the xref:vw:ROOT:features/user-registration.adoc[user registration] functionality supported by the xref:vw:ROOT:about.adoc[Wicket viewer].
 The same is true of the xref:rg:svc:core-domain-api/EventBusService.adoc[`EventBusService`]; this can be used by domain objects to broadcast arbitrary events, but is also used by the framework to automatically emit events for
-xref:rg:ant:Action/domainEvent.adoc[`@Action#domainEvent()`] etc.
+xref:rg:ant:Action.adoc#domainEvent[`@Action#domainEvent()`] etc.
 
 For these hybrid services we have categorized the service as an "API" service.
 This chapter therefore contains only the strictly SPI services.
@@ -79,7 +79,7 @@ Alternatively the object can be instantiated simply using `new`, then services i
 The framework provides default implementations for many of the domain services.
 This is convenient, but sometimes you will want to replace the default implementation with your own service implementation.
 
-The trick is to use the xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`]
+The trick is to use the xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]
 attribute, specifying a low number (typically `"1"`).
 
 [NOTE]
@@ -160,14 +160,14 @@ invoke an action or edit a property; this is held by the `Command` object.
 
 * if a xref:rg:svc:application-layer-spi/CommandService.adoc[`CommandService`] has been configured, then this will be used to create the `Command` object implementation, generally so that it can then also be persisted.
 +
-If the action or property is annotated to be invoked in the background (using xref:rg:ant:Action/command.adoc[`@Action#command...()`] or xref:rg:ant:Property/command.adoc[`@Property#command...()`]) then no further work is done.
+If the action or property is annotated to be invoked in the background (using xref:rg:ant:Action.adoc#command[`@Action#command...()`] or xref:rg:ant:Property.adoc#command[`@Property#command...()`]) then no further work is done.
 But, if the action/property is to be executed in the foreground, then the interaction continues.
 
 * the (request-scoped) xref:rg:svc:application-layer-api/InteractionContext.adoc[`InteractionContext`] domain service acts as a factory for the ``Interaction`` object, which keeps track of the call-graph of executions (``Interaction.Execution``) of either action invocations or property edits.
 In the majority of cases there is likely to be just a single top-level node of this graph, but for applications that use the xref:rg:svc:application-layer-api/WrapperFactory.adoc[`WrapperFactory`] extensively each successive call results in a new child execution.
 
 * before and after each action invocation/property edit, a xref:rg:cms:classes/domainevent.adoc[domain event] is may be broadcast to all subscribers.
-Whether this occurs depends on whether the action/property has been annotated (using xref:rg:ant:Action/domainEvent.adoc[`@Action#domainEvent()`] or xref:rg:ant:Property/domainEvent.adoc[`@Property#domainEvent()`]).
+Whether this occurs depends on whether the action/property has been annotated (using xref:rg:ant:Action.adoc#domainEvent[`@Action#domainEvent()`] or xref:rg:ant:Property.adoc#domainEvent[`@Property#domainEvent()`]).
 +
 (Note that susbcribers will also receive events for vetoing the action/property; this is not shown on the diagram).
 
@@ -175,12 +175,12 @@ Whether this occurs depends on whether the action/property has been annotated (u
 Metrics as to which objects are merely loaded into memory are also captured using the xref:rg:svc:persistence-layer-api/MetricsService.adoc[`MetricsService`] (not shown on the diagram).
 
 * At the end of each execution, details of that execution are published through the (internal)
-xref:rg:fis:spi/PublisherServiceInternal.adoc[`PublisherServiceInternal`] domain service.  This is only done for actions/properties annotated appropriate (with xref:rg:ant:Action/publishing.adoc[`@Action#publishing()`] or xref:rg:ant:Property/publishing.adoc[`@Property#publishing()`]).
+xref:rg:fis:spi/PublisherServiceInternal.adoc[`PublisherServiceInternal`] domain service.  This is only done for actions/properties annotated appropriate (with xref:rg:ant:Action.adoc#publishing[`@Action#publishing()`] or xref:rg:ant:Property.adoc#publishing[`@Property#publishing()`]).
 +
 The internal service delegates in turn to any registered xref:rg:svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`]s (there may be more than one).
 
 * At the end of each transaction, details of all changed objects are published, again through the (internal) xref:rg:fis:spi/PublisherServiceInternal.adoc[`PublisherServiceInternal`] to any registered `PublisherService` implementations.
-Only domain objects specified to be published with xref:rg:ant:DomainObject/publishing.adoc[`@DomainObject#publishing()`] are published. +
+Only domain objects specified to be published with xref:rg:ant:DomainObject.adoc#publishing[`@DomainObject#publishing()`] are published. +
 +
 [NOTE]
 ====
diff --git a/core/_adoc-rg/modules/svc/pages/metadata-api.adoc b/core/_adoc-rg/modules/svc/pages/metadata-api.adoc
index 2bf74ce..e20f9ca 100644
--- a/core/_adoc-rg/modules/svc/pages/metadata-api.adoc
+++ b/core/_adoc-rg/modules/svc/pages/metadata-api.adoc
@@ -73,7 +73,10 @@ within the metamodel.
 |`SwaggerServiceDefault` +
 ``o.a.i.core`` +
 ``isis-core-metamodel``
-|A `SwaggerServiceMenu` domain service is also provided which enables the swagger spec to be downloaded.  Apache Isis' xref:rg:mvn:about.adoc[Maven plugin] also provides a xref:rg:mvn:swagger.adoc[swagger goal] which allows the spec file(s) to be generated at build time (eg so that client-side stubs can then be generated in turn).
+|A `SwaggerServiceMenu` domain service is also provided which enables the swagger spec to be downloaded.
+
+// FIXME: currently removed in v2, may reinstate
+//Apache Isis' xref:rg:mvn:about.adoc[Maven plugin] also provides a xref:rg:mvn:swagger.adoc[swagger goal] which allows the spec file(s) to be generated at build time (eg so that client-side stubs can then be generated in turn).
 
 
 
diff --git a/core/_adoc-rg/modules/svc/pages/metadata-api/MetamodelService.adoc b/core/_adoc-rg/modules/svc/pages/metadata-api/MetamodelService.adoc
index 3bd500e..d49a9c4 100644
--- a/core/_adoc-rg/modules/svc/pages/metadata-api/MetamodelService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/metadata-api/MetamodelService.adoc
@@ -67,7 +67,7 @@ public interface MetaModelService {
 <7> returns the `AppManifest` used to bootstrap the application.
 If an `AppManifest2` was used (from a `Module`), then this is also returned (else just `null`).
 
-<8> obtain an implementation of `CommandDtoProcessor` (if any) as per an xref:rg:ant:Action/command.adoc[`@Action#commandDtoProcessor()`] or xref:rg:ant:Property/command.adoc[`@Property#commandDtoProcessor()`].
+<8> obtain an implementation of `CommandDtoProcessor` (if any) as per an xref:rg:ant:Action.adoc#command[`@Action#commandDtoProcessor()`] or xref:rg:ant:Property.adoc#command[`@Property#commandDtoProcessor()`].
 +
 This is used by the xref:rg:svc:presentation-layer-spi/ContentMappingService.adoc#implementations[framework-provided implementations] of `ContentMappingService`.
 
diff --git a/core/_adoc-rg/modules/svc/pages/metadata-api/SwaggerService.adoc b/core/_adoc-rg/modules/svc/pages/metadata-api/SwaggerService.adoc
index 184cfda..2d6431f9 100644
--- a/core/_adoc-rg/modules/svc/pages/metadata-api/SwaggerService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/metadata-api/SwaggerService.adoc
@@ -35,9 +35,9 @@ public interface SwaggerService {
 }
 ----
 <1> Generate a Swagger spec for use by third-party clients, ie public use.  This specification is restricted only to
-xref:ug:fun:building-blocks.adoc#view-models[view model]s and to domain services with a xref:rg:ant:DomainService/nature.adoc[nature] of `VIEW_REST_ONLY`.
+xref:ug:fun:building-blocks.adoc#view-models[view model]s and to domain services with a xref:rg:ant:DomainService.adoc#nature[nature] of `VIEW_REST_ONLY`.
 <2> Generate a Swagger spec for use only by internally-managed clients, ie private internal use.  This specification includes domain entities and all menu domain services (as well as any view models).
-<3> Generate a Swagger spec that is the same as private case (above), but also including any xref:rg:ant:Action/restrictTo.adoc[prototype] actions.
+<3> Generate a Swagger spec that is the same as private case (above), but also including any xref:rg:ant:Action.adoc#restrictTo[prototype] actions.
 <4> Swagger specs can be written either in JSON or YAML format.
 
 
@@ -59,6 +59,8 @@ This service is provided as a convenience for applications, it is not (currently
 
 A `SwaggerServiceMenu` domain service provides a prototype action that enables the swagger spec to be downloaded from the Wicket viewer's UI.
 
-Apache Isis' xref:rg:mvn:about.adoc[Maven plugin] also provides a xref:rg:mvn:swagger.adoc[swagger goal] which allows the spec file(s) to be generated at build time.  this then allows client-side stubs can then be generated in turn as part of a build pipeline.
+// FIXME: currently removed in v2, may reinstate
+//Apache Isis' xref:rg:mvn:about.adoc[Maven plugin] also provides a xref:rg:mvn:swagger.adoc[swagger goal] which allows the spec file(s) to be generated at build time.
+//This then allows client-side stubs can then be generated in turn as part of a build pipeline.
 
 
diff --git a/core/_adoc-rg/modules/svc/pages/persistence-layer-api/QueryResultsCache.adoc b/core/_adoc-rg/modules/svc/pages/persistence-layer-api/QueryResultsCache.adoc
index fed5c0b..9d0072d 100644
--- a/core/_adoc-rg/modules/svc/pages/persistence-layer-api/QueryResultsCache.adoc
+++ b/core/_adoc-rg/modules/svc/pages/persistence-layer-api/QueryResultsCache.adoc
@@ -55,7 +55,7 @@ public class QueryResultsCache {
 
 This class (`o.a.i.applib.services.queryresultscache.QueryResultsCache`) is also the implementation.
 
-To use an alternative implementation, subclass `QueryResultsCache` and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, subclass `QueryResultsCache` and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 
@@ -110,4 +110,4 @@ This refactoring will be worthwhile provided that enough of the orders being pro
 
 == Related Services
 
-The xref:rg:svc:core-domain-api/Scratchpad.adoc[`Scratchpad`] service is also intended for actions that are called many times, allowing arbitrary information to be shared between them. Those methods could be called from some outer loop in domain code, or by the framework itself if the action invoked has the xref:rg:ant:Action/invokeOn.adoc[`@Action#invokeOn()`] annotation attribute set to `OBJECT_AND_COLLECTION` or `COLLECTION_ONLY`.
\ No newline at end of file
+The xref:rg:svc:core-domain-api/Scratchpad.adoc[`Scratchpad`] service is also intended for actions that are called many times, allowing arbitrary information to be shared between them. Those methods could be called from some outer loop in domain code, or by the framework itself if the action invoked has the xref:rg:ant:Action.adoc#invokeOn[`@Action#invokeOn()`] annotation attribute set to `OBJECT_AND_COLLECTION` or `COLLECTION_ONLY`.
\ No newline at end of file
diff --git a/core/_adoc-rg/modules/svc/pages/persistence-layer-spi/AuditerService.adoc b/core/_adoc-rg/modules/svc/pages/persistence-layer-spi/AuditerService.adoc
index 6be1e5a..d0a59bd 100644
--- a/core/_adoc-rg/modules/svc/pages/persistence-layer-spi/AuditerService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/persistence-layer-spi/AuditerService.adoc
@@ -69,7 +69,7 @@ log4j.additivity.org.apache.isis.applib.services.audit.AuditerServiceLogging=fal
 
 == Usage
 
-The typical way to indicate that an object should be audited is to annotate it with the xref:rg:ant:DomainObject/auditing.adoc[`@DomainObject#auditing()`] annotation.
+The typical way to indicate that an object should be audited is to annotate it with the xref:rg:ant:DomainObject.adoc#auditing[`@DomainObject#auditing()`] annotation.
 
 
 == Alternative Implementations
diff --git a/core/_adoc-rg/modules/svc/pages/persistence-layer-spi/PublisherService.adoc b/core/_adoc-rg/modules/svc/pages/persistence-layer-spi/PublisherService.adoc
index fd9993f..95fefa3 100644
--- a/core/_adoc-rg/modules/svc/pages/persistence-layer-spi/PublisherService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/persistence-layer-spi/PublisherService.adoc
@@ -12,7 +12,7 @@ An alternative use is for profiling: for each execution (action invocation/prope
 If the xref:rg:svc:application-layer-api/WrapperFactory.adoc[`WrapperFactory`] is used to call other objects then the metrics are captured for each sub-execution.
 The framework provides a default implementation, `PublisherServiceLogging`, that will log these execution graphs (in XML form, per the xref:rg:cms:schema/ixn.adoc["ixn" schema]) to an SLF4J logger.
 
-Only actions/properties/domain objects annotated for publishing (using xref:rg:ant:Action/publishing.adoc[`@Action#publishing()`], xref:rg:ant:Property/publishing.adoc[`@Property#publishing()`] or xref:rg:ant:DomainObject/publishing.adoc[`@DomainObject#publishing()`]) are published.
+Only actions/properties/domain objects annotated for publishing (using xref:rg:ant:Action.adoc#publishing[`@Action#publishing()`], xref:rg:ant:Property.adoc#publishing[`@Property#publishing()`] or xref:rg:ant:DomainObject.adoc#publishing[`@DomainObject#publishing()`]) are published.
 
 
 == SPI
@@ -83,9 +83,9 @@ log4j.additivity.org.apache.isis.applib.services.publish.PublisherServiceLogging
 
 To indicate that:
 
-* an action invocation should be published, annotate it with the xref:rg:ant:Action/publishing.adoc[`@Action#publishing()`] annotation.
-* an property edit should be published, annotate it with the xref:rg:ant:Property/publishing.adoc[`@Property#publishing()`] annotation.
-* a changed object should be published is to annotate it with the xref:rg:ant:DomainObject/publishing.adoc[`@DomainObject#publishing()`] annotation.
+* an action invocation should be published, annotate it with the xref:rg:ant:Action.adoc#publishing[`@Action#publishing()`] annotation.
+* an property edit should be published, annotate it with the xref:rg:ant:Property.adoc#publishing[`@Property#publishing()`] annotation.
+* a changed object should be published is to annotate it with the xref:rg:ant:DomainObject.adoc#publishing[`@DomainObject#publishing()`] annotation.
 
 
 
@@ -122,7 +122,7 @@ To support these use cases several other services are involved:
 
 * the (internal) xref:rg:fis:persistence-layer/ChangedObjectsServiceInternal.adoc[`ChangedObjectsServiceInternal`] domain service is used to obtain the set of objects modified throughout the transaction
 
-* the (internal) xref:rg:fis:spi/PublisherServiceInternal.adoc[`PublisherServiceInternal`] domain service filters these down to those changed objects that are also published (as per xref:rg:ant:DomainObject/publishing.adoc[`@DomainObject#publishing()`]) and delegates to the `PublisherService`.
+* the (internal) xref:rg:fis:spi/PublisherServiceInternal.adoc[`PublisherServiceInternal`] domain service filters these down to those changed objects that are also published (as per xref:rg:ant:DomainObject.adoc#publishing[`@DomainObject#publishing()`]) and delegates to the `PublisherService`.
 
 * the xref:rg:svc:persistence-layer-api/MetricsService.adoc[`MetricsService`] is used to obtain the objects that are loaded throughout the transaction; this info is used in order to instantiate the `PublishedObjects` object passed through to the `PublisherService`.
 
diff --git a/core/_adoc-rg/modules/svc/pages/presentation-layer-api/AcceptHeaderService.adoc b/core/_adoc-rg/modules/svc/pages/presentation-layer-api/AcceptHeaderService.adoc
index 4f43efb..5731fd8 100644
--- a/core/_adoc-rg/modules/svc/pages/presentation-layer-api/AcceptHeaderService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/presentation-layer-api/AcceptHeaderService.adoc
@@ -35,7 +35,7 @@ The default implementation is provided by `o.a.i.v.ro.rendering.service.accepthe
 Note that the service will only return a list when the request is initiated through the xref:vro:ROOT:about.adoc[Restful Objects viewer].  Otherwise the service will return `null`.
 ====
 
-To use an alternative implementation, use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 == Usage
@@ -47,7 +47,7 @@ The diagram below illustrated this:
 
 image::reference-services-api/acceptheaderservice.png[width="700px",link="{imagesdir}/reference-services-api/acceptheaderservice.png"]
 
-The REST request is submitted to a domain service with a xref:rg:ant:DomainService/nature.adoc[nature] of `VIEW_REST_ONLY` (`MyRestApi` in the diagram).
+The REST request is submitted to a domain service with a xref:rg:ant:DomainService.adoc#nature[nature] of `VIEW_REST_ONLY` (`MyRestApi` in the diagram).
 This uses the `AcceptHeaderService` to obtain the values of the HTTP `Accept` header.
 Based on this it delegates to the appropriate underlying domain service (with a nature of `DOMAIN` so that they are not exposed in the REST API at all).
 
diff --git a/core/_adoc-rg/modules/svc/pages/presentation-layer-api/GuiceBeanProvider.adoc b/core/_adoc-rg/modules/svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
index 013e1cd..7513572 100644
--- a/core/_adoc-rg/modules/svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
+++ b/core/_adoc-rg/modules/svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
@@ -34,7 +34,7 @@ public interface GuiceBeanProvider {
 
 The xref:vw:ROOT:about.adoc[Wicket viewer] this provides a default implementation of this service.
 
-To use an alternative implementation, implement the `GuideBeanProvider` interface and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `GuideBeanProvider` interface and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/ContentMappingService.adoc b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/ContentMappingService.adoc
index a426fd7..8e790f8 100644
--- a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/ContentMappingService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/ContentMappingService.adoc
@@ -14,7 +14,7 @@ See xref:rg:fis:presentation-layer/ContentNegotiationService.adoc[`ContentNegoti
 Unlike most other domain services, the framework (that is, `ContentNegotiationService`) will check _all_ available
 implementations of `ContentMappingService` to convert the domain object to the requested media type, rather than merely
 the first implementation found; in other words it uses the chain-of-responsibility pattern.  Services are checked
-in the ordering defined by xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`]).
+in the ordering defined by xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]).
 The mapped object used will be the first non-`null` result returned by an implementation.
 ====
 
@@ -51,7 +51,7 @@ For framework implementations of `ContentMappingService` allow domain service ac
 * `o.a.i.applib.services.conmap.ContentMappingServiceForCommandDto` will map any single instance of a `CommandWithDto` into a `CommandDto` XML document
 * `o.a.i.applib.services.conmap.ContentMappingServiceForCommandsDto` will map list of ``CommandWithDto``s into a `CommandsDto` XML document, and will wrap any single instance of a `CommandWithDto` into a singleton list and thence into a `CommandsDto` XML document.
 
-If the action invocation or property edit represent provides an implementation of a `CommandDtoProcessor` (by way of xref:rg:ant:Action/command.adoc[`@Action#commandDtoProcessor()`] or xref:rg:ant:Property/command.adoc[`@Property#commandDtoProcessor()`]) then this is also called to post-process the persisted `CommandDto` if required.
+If the action invocation or property edit represent provides an implementation of a `CommandDtoProcessor` (by way of xref:rg:ant:Action.adoc#command[`@Action#commandDtoProcessor()`] or xref:rg:ant:Property.adoc#command[`@Property#commandDtoProcessor()`]) then this is also called to post-process the persisted `CommandDto` if required.
 A typical use case for this is to dynamically add in serialized ``Blob``s or ``Clob``s, the values of which are not captured by default in `CommandDto`.
 
 To support the writing of custom implementations of this interface, the framework also provides `ContentMappingService.Util` which includes a couple of convenience utilities:
diff --git a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/GridSystemService.adoc b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/GridSystemService.adoc
index 595a0f6..96cc370 100644
--- a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/GridSystemService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/GridSystemService.adoc
@@ -16,7 +16,7 @@ The framework provides a single such grid implementation, namely for Bootstrap3.
 Unlike most other domain services, the framework will check _all_ available implementations of `GridSystemService` to
 obtain available grid systems, rather than merely the first implementation found; in other words it uses the
 chain-of-responsibility pattern.  Services are called in the order defined by
-xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`]).
+xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]).
 
 Note though that each concrete implementation must also provide corresponding Wicket viewer components capable of
 interpreting the grid layout.
@@ -40,7 +40,7 @@ public interface GridSystemService<G extends Grid> {
 }
 ----
 <1> The concrete subclass of `Grid` supported by this implementation. As noted in the introduction, there can be multiple implementations of this service,  but there can only be one implementation per concrete subclass.  As is normal practice,
-the service with the lowest xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] takes precedence.
+the service with the lowest xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] takes precedence.
 <2> the target namespace for this grid system.  This is used when generating the XML.  The Bootstrap3 grid system provided by the framework returns the value `http://isis.apache.org/applib/layout/grid/bootstrap3`.
 <3> the schema location for the XSD.  The Bootstrap3 grid system provided by the framework returns the value `http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd`.
 <4> a default grid, eg two columns in ratio 4:8.  Used when no existing grid layout exists for a domain class.
diff --git a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/HintStore.adoc b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/HintStore.adoc
index 6a3adf9..1dd4e6a 100644
--- a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/HintStore.adoc
+++ b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/HintStore.adoc
@@ -40,7 +40,7 @@ per the xref:rg:svc:integration-api/BookmarkService.adoc[`BookmarkService`], so
 
 The core framework provides a default implementation of this service (`org.apache.isis.viewer.wicket.viewer.services.HintStoreUsingWicketSession`).
 
-To use an alternative implementation, implement the `HintStore` interface and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `HintStore` interface and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
 
 == View models
diff --git a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/RoutingService.adoc b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/RoutingService.adoc
index 23a769e..55eb5ad 100644
--- a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/RoutingService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/RoutingService.adoc
@@ -26,7 +26,7 @@ Currently the routing service is used only by the xref:vw:ROOT:about.adoc[Wicket
 Unlike most other domain services, the framework will check _all_ available implementations of
 `RoutingService` to return a route, rather than the first implementation found; in other words it uses the
 chain-of-responsibility pattern.  Services are called in the order defined by
-xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`]).  The route used will be the
+xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]).  The route used will be the
 result of the first implementation checked that declares that it can provide a route.
 ====
 
@@ -56,7 +56,7 @@ The framework provides a default implementation - `RoutingServiceDefault` - whic
 It uses the xref:rg:svc:application-layer-spi/HomePageProviderService.adoc[`HomePageProviderService`].
 
 There can be multiple implementations of `RoutingService` registered.
-These are checked in turn (chain of responsibility pattern), ordered according to xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+These are checked in turn (chain of responsibility pattern), ordered according to xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 The route from the first service that returns `true` from its `canRoute(...)` method will be used.
 
 
diff --git a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/TableColumnOrderService.adoc b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
index a9b7a0a..dca0473 100644
--- a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
@@ -27,7 +27,7 @@ public interface TableColumnOrderService {
 <1> for the parent collection owned by the specified parent and collection Id, return the set of property ids in the same or other order.
 <2> for the standalone collection of the specified type, return the set of property ids in the same or other order, else return `null` if provides no reordering.
 
-There can be multiple implementations of `TableColumnOrderService` registered, ordered as per xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`].
+There can be multiple implementations of `TableColumnOrderService` registered, ordered as per xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`].
 The ordering provided by the first such service that returns a non-`null` value will be used.
 If all provided implementations return `null`, then the framework will fallback to a default implementation.
 
@@ -38,7 +38,7 @@ If all provided implementations return `null`, then the framework will fallback
 The framework provides a fallback implementation of this service, namely `TableColumnOrderService.Default`.
 
 There can be multiple implementations of `TableColumnOrderService registered.
-These are checked in turn (chain of responsibility pattern), ordered according to xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+These are checked in turn (chain of responsibility pattern), ordered according to xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 The order from the first service that returns a non null value will be used.
 
 
diff --git a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/UrlEncodingService.adoc b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/UrlEncodingService.adoc
index cffa99e..8e98d65 100644
--- a/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/UrlEncodingService.adoc
+++ b/core/_adoc-rg/modules/svc/pages/presentation-layer-spi/UrlEncodingService.adoc
@@ -44,5 +44,5 @@ The framework provides a default implementation -- `UrlEncodingServiceWithCompre
 As already noted, be aware that the maximum length of a URL should not exceed 2083 characters.
 For large view models, there's the possibility that this limit could be exceeded; in such cases register an alternative implementation of this service.
 
-To use an alternative implementation, implement the `UrlEncodingService` interface and use xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `UrlEncodingService` interface and use xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:rg:svc:intro/overriding-the-services.adoc[introduction] to this guide).
 
diff --git a/core/_adoc-ug/modules/ROOT/pages/about.adoc b/core/_adoc-ug/modules/ROOT/pages/about.adoc
index 1b9882b..1aa0b14 100644
--- a/core/_adoc-ug/modules/ROOT/pages/about.adoc
+++ b/core/_adoc-ug/modules/ROOT/pages/about.adoc
@@ -1,30 +1,21 @@
 = User Guides
 include::_attributes.adoc[]
 
-Apache Isis documentation is broken out into a number of user, reference and "supporting procedures" guides.
-
 The user guides available are:
 
 * xref:ug:fun:about.adoc[Fundamentals]
-* xref:vw:ROOT:about.adoc[Wicket viewer]
-* xref:vro:ROOT:about.adoc[Restful Objects viewer]
-* xref:odn:ROOT:about.adoc[DataNucleus object store]
-* xref:security:ROOT:about.adoc[Security]
-* xref:testing:ROOT:about.adoc[Testing]
 * xref:ug:btb:about.adoc[Beyond the Basics]
 
-The reference guides are:
+There are also guides for testing & prototyping:
 
-* xref:rg:ant:about.adoc[Annotations]
-* xref:rg:svc:about.adoc[Domain Services]
-* xref:rg:cfg:about.adoc[Configuration Properties]
-* xref:rg:cms:about.adoc[Classes, Methods and Schema]
-* xref:rg:mvn:about.adoc[Apache Isis Maven plugin]
-* xref:rg:fis:about.adoc[Framework Internal Services]
+* xref:testing:ROOT:about.adoc[Testing]
+
+\... as well as user guides for each of the components:
 
-The remaining guides are:
+* xref:vw:ROOT:about.adoc[Wicket viewer]
+* xref:vro:ROOT:about.adoc[Restful Objects viewer]
+* xref:odn:ROOT:about.adoc[DataNucleus object store]
+* xref:security:ROOT:about.adoc[Security]
 
-* xref:toc:devguide:about.adoc[Developers' Guide] (how to set up a development environment for Apache Isis and contribute back to the project)
-* xref:toc:comguide:about.adoc[Committers' Guide]
 
 
diff --git a/core/_adoc-ug/modules/btb/nav.adoc b/core/_adoc-ug/modules/btb/nav.adoc
index 25d56d5..eacedee 100644
--- a/core/_adoc-ug/modules/btb/nav.adoc
+++ b/core/_adoc-ug/modules/btb/nav.adoc
@@ -1,29 +1,8 @@
 * xref:about.adoc[Beyond the Basics]
 
-
 ** xref:i18n.adoc[i18n]
-
-
 ** xref:headless-access.adoc[Headless Access]
-
-
-
 ** xref:hints-and-tips.adoc[Hints-n-Tips]
-
-
 ** xref:programming-model.adoc[Programming Model]
-*** xref:programming-model/custom-validator.adoc[Custom Validator]
-*** xref:programming-model/finetuning.adoc[Finetuning]
-
-
 ** xref:deployment.adoc[Deployment]
-*** xref:deployment/cmd-line.adoc[Cmd Line]
-*** xref:deployment/externalized-configuration.adoc[Externalized Configuration]
-*** xref:deployment/tomcat.adoc[Tomcat]
-*** xref:deployment/docker.adoc[Docker]
-*** xref:deployment/gae.adoc[GAE]
-*** xref:deployment/neo4j.adoc[neo4j]
-*** xref:deployment/jvm-flags.adoc[JVM flags]
-
-
 ** xref:web-xml.adoc[web.xml]
diff --git a/core/_adoc-ug/modules/btb/pages/about.adoc b/core/_adoc-ug/modules/btb/pages/about.adoc
index 52482b3..0f16e08 100644
--- a/core/_adoc-ug/modules/btb/pages/about.adoc
+++ b/core/_adoc-ug/modules/btb/pages/about.adoc
@@ -3,8 +3,7 @@ include::_attributes.adoc[]
 :page-partial:
 
 
-This guide provides xref:ug:btb:other-techniques.adoc[more advanced] guidance on writing maintainable larger
-applications.
+This guide covers some of the more advanced topics when developing more substantial applications.
 
 Later chapters discuss how to xref:ug:btb:deployment.adoc[deploy] your app, and discuss other ways in which you can xref:ug:btb:programming-model.adoc[extend] or adapt the framework itself to your particular needs.
 
diff --git a/core/_adoc-ug/modules/btb/pages/deployment.adoc b/core/_adoc-ug/modules/btb/pages/deployment.adoc
index 8ef7407..e5dea25 100644
--- a/core/_adoc-ug/modules/btb/pages/deployment.adoc
+++ b/core/_adoc-ug/modules/btb/pages/deployment.adoc
@@ -11,3 +11,10 @@ This chapter provides guidance on some common deployment scenarios.
 
 
 
+include::deployment/cmd-line.adoc[leveloffset=+1]
+include::deployment/externalized-configuration.adoc[leveloffset=+1]
+include::deployment/tomcat.adoc[leveloffset=+1]
+include::deployment/docker.adoc[leveloffset=+1]
+include::deployment/gae.adoc[leveloffset=+1]
+include::deployment/neo4j.adoc[leveloffset=+1]
+include::deployment/jvm-flags.adoc[leveloffset=+1]
diff --git a/core/_adoc-ug/modules/btb/pages/hints-and-tips/are-you-sure.adoc b/core/_adoc-ug/modules/btb/pages/hints-and-tips/are-you-sure.adoc
index 87b602d..60a58ab 100644
--- a/core/_adoc-ug/modules/btb/pages/hints-and-tips/are-you-sure.adoc
+++ b/core/_adoc-ug/modules/btb/pages/hints-and-tips/are-you-sure.adoc
@@ -10,7 +10,7 @@ In such a case it's probably a good idea for the UI to require that the end-user
 
 == Using action semantics
 
-One way to meet this requirement is using the framework's built-in xref:rg:ant:Action/semantics.adoc[`@Action#semantics()`] attribute:
+One way to meet this requirement is using the framework's built-in xref:rg:ant:Action.adoc#semantics[`@Action#semantics()`] attribute:
 
 [source,java]
 ----
diff --git a/core/_adoc-ug/modules/btb/pages/hints-and-tips/how-to-implement-a-spellchecker.adoc b/core/_adoc-ug/modules/btb/pages/hints-and-tips/how-to-implement-a-spellchecker.adoc
index 772a14e..7c6aeeb 100644
--- a/core/_adoc-ug/modules/btb/pages/hints-and-tips/how-to-implement-a-spellchecker.adoc
+++ b/core/_adoc-ug/modules/btb/pages/hints-and-tips/how-to-implement-a-spellchecker.adoc
@@ -15,9 +15,9 @@ One way to implement is to use the xref:rg:svc:core-domain-api/EventBusService.a
 
 * Set up a xref:rg:cms:classes/domainevent.adoc[domain event] xref:rg:cms:classes/super/AbstractSubscriber.adoc[subscriber] that can veto the changes.
 
-* if the change is made through an action, you can use xref:rg:ant:Action/domainEvent.adoc[`@Action#domainEvent()`].
+* if the change is made through an action, you can use xref:rg:ant:Action.adoc#domainEvent[`@Action#domainEvent()`].
 
-if if the change is made through an edit, you can use xref:rg:ant:Property/domainEvent.adoc[`@Property#domainEvent()`].
+if if the change is made through an edit, you can use xref:rg:ant:Property.adoc#domainEvent[`@Property#domainEvent()`].
 
 You'll need some way to know which fields should be spell checked.  Two ways spring to mind:
 
diff --git a/core/_adoc-ug/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc b/core/_adoc-ug/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
index ecef27b..0a5cab3 100644
--- a/core/_adoc-ug/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
+++ b/core/_adoc-ug/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
@@ -10,7 +10,7 @@ The framework provides default implementations for many of the xref:rg:svc:about
 This is convenient, but sometimes you will want to replace the default implementation with your own service implementation.
 
 For example, suppose you wanted to provide your own implementation of xref:rg:svc:presentation-layer-spi/LocaleProvider.adoc[`LocaleProvider`].
-The trick is to use the xref:rg:ant:DomainServiceLayout/menuOrder.adoc[`@DomainServiceLayout#menuOrder()`] attribute, specifying a low number (typically `"1"`).
+The trick is to use the xref:rg:ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute, specifying a low number (typically `"1"`).
 
 Here's how:
 
diff --git a/core/_adoc-ug/modules/btb/pages/programming-model.adoc b/core/_adoc-ug/modules/btb/pages/programming-model.adoc
index 5da8ef8..f0e7e92 100644
--- a/core/_adoc-ug/modules/btb/pages/programming-model.adoc
+++ b/core/_adoc-ug/modules/btb/pages/programming-model.adoc
@@ -9,3 +9,5 @@ This chapter explains the main APIs to extend or alter the programming conventio
 build up its metamodel.
 
 
+include::programming-model/custom-validator.adoc[leveloffset=+1]
+include::programming-model/finetuning.adoc[leveloffset=+1]
diff --git a/core/_adoc-ug/modules/btb/pages/programming-model/custom-validator.adoc b/core/_adoc-ug/modules/btb/pages/programming-model/custom-validator.adoc
index fdfeb99..74d767d 100644
--- a/core/_adoc-ug/modules/btb/pages/programming-model/custom-validator.adoc
+++ b/core/_adoc-ug/modules/btb/pages/programming-model/custom-validator.adoc
@@ -10,15 +10,16 @@ For example, the validator will detect any orphaned supporting methods (eg `hide
 
 [NOTE]
 ====
-The support for xref:rg:ant:aaa/deprecated.adoc[disallowing deprecated annotations] is also implemented using the metamodel validator.
+The support for xref:rg:ant:aaa.adoc#deprecated[disallowing deprecated annotations] is also implemented using the metamodel validator.
 ====
 
 You can also impose your own application-specific rules by installing your own metamodel validator.  To give just one example, you could impose naming standards such as ensuring that a domain-specific abbreviation such as "ISBN" is always consistently capitalized wherever it appears in a class member.
 
-[TIP]
-====
-Isis' xref:rg:mvn:about.adoc[Maven plugin] will also validate the domain object model during build time.
-====
+// FIXME: currently removed in v2, may reinstate
+//[TIP]
+//====
+//Isis' xref:rg:mvn:about.adoc[Maven plugin] will also validate the domain object model during build time.
+//====
 
 
 == API and Implementation
diff --git a/core/_adoc-ug/modules/fun/pages/building-blocks/events/domain-events.adoc b/core/_adoc-ug/modules/fun/pages/building-blocks/events/domain-events.adoc
index 2c3e67a..3da2611 100644
--- a/core/_adoc-ug/modules/fun/pages/building-blocks/events/domain-events.adoc
+++ b/core/_adoc-ug/modules/fun/pages/building-blocks/events/domain-events.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 Domain events are fired -- through the internal xref:rg:svc:core-domain-api/EventBusService.adoc[event bus] -- for every user interaction with each object member (property, collection or action).
 
-By default, rendering a property causes a `PropertyDomainEvent` to be fired, though the xref:rg:ant:Property/domainEvent.adoc[`@Property#domainEvent()`] attribute allows a custom subclass to be specified if necessary.
+By default, rendering a property causes a `PropertyDomainEvent` to be fired, though the xref:rg:ant:Property.adoc#domainEvent[`@Property#domainEvent()`] attribute allows a custom subclass to be specified if necessary.
 Similarly, rendering a collection causes a `CollectionDomainEvent` to be fired, and rendering an action causes an `ActionDomainEvent` to be fired.
 
 In fact, each event can be fired up to five times, with the event's `getEventPhase()` method indicating to the subscriber the phase:
diff --git a/core/_adoc-ug/modules/fun/pages/building-blocks/events/lifecycle-events.adoc b/core/_adoc-ug/modules/fun/pages/building-blocks/events/lifecycle-events.adoc
index da90afa..fde1d87 100644
--- a/core/_adoc-ug/modules/fun/pages/building-blocks/events/lifecycle-events.adoc
+++ b/core/_adoc-ug/modules/fun/pages/building-blocks/events/lifecycle-events.adoc
@@ -33,7 +33,7 @@ Note that this requires that the object is instantiated using the framework, see
 There is no lifecycle event for object creating because the framework doesn't know about newly created objects until they have been created; and there is no lifecycle event for obejcts removed because it is not valid to "touch" a domain entity once deleted.
 
 
-For example, if annotated with xref:rg:ant:DomainObject/updatingLifecycleEvent.adoc[`@DomainObjectLayout#updatingLifecycleEvent()`], the appropriate (subclass of) `ObjectUpdatingEvent` will be emitted.
- Similarly for xref:rg:ant:DomainObjectLayout/iconUiEvent.adoc[`iconUiEvent()`] and xref:rg:ant:DomainObjectLayout/cssClassUiEvent.adoc[`cssClassUiEvent()`].
+For example, if annotated with xref:rg:ant:DomainObject.adoc#updatingLifecycleEvent[`@DomainObjectLayout#updatingLifecycleEvent()`], the appropriate (subclass of) `ObjectUpdatingEvent` will be emitted.
+ Similarly for xref:rg:ant:DomainObjectLayout.adoc#iconUiEvent[`iconUiEvent()`] and xref:rg:ant:DomainObjectLayout.adoc#cssClassUiEvent[`cssClassUiEvent()`].
 
 
diff --git a/core/_adoc-ug/modules/fun/pages/building-blocks/events/ui-events.adoc b/core/_adoc-ug/modules/fun/pages/building-blocks/events/ui-events.adoc
index bf2d521..925576d 100644
--- a/core/_adoc-ug/modules/fun/pages/building-blocks/events/ui-events.adoc
+++ b/core/_adoc-ug/modules/fun/pages/building-blocks/events/ui-events.adoc
@@ -10,8 +10,8 @@ xref:ug:fun:ui-hints/object-titles-and-icons.adoc[Normally] the code to return t
 However, UI events allow this title and icon to be provided instead by a subscriber.
 UI events have higher precedence than the other mechanisms of supplying a title.
 
-If annotated with xref:rg:ant:DomainObjectLayout/titleUiEvent.adoc[`@DomainObjectLayout#titleUiEvent()`], the appropriate (subclass of) `TitleUiEvent` will be emitted.
- Similarly for xref:rg:ant:DomainObjectLayout/iconUiEvent.adoc[`iconUiEvent()`] and xref:rg:ant:DomainObjectLayout/cssClassUiEvent.adoc[`cssClassUiEvent()`].
+If annotated with xref:rg:ant:DomainObjectLayout.adoc#titleUiEvent[`@DomainObjectLayout#titleUiEvent()`], the appropriate (subclass of) `TitleUiEvent` will be emitted.
+ Similarly for xref:rg:ant:DomainObjectLayout.adoc#iconUiEvent[`iconUiEvent()`] and xref:rg:ant:DomainObjectLayout.adoc#cssClassUiEvent[`cssClassUiEvent()`].
 
 This can be particularly useful for xref:ug:fun:programming-model.adoc#jaxb[JAXB-style view models] which are code generated from XSDs and so cannot have any dependencies on the rest of the Apache Isis framework.
 Here a subscriber on the default events can provide a title and icon for such an object.
diff --git a/core/_adoc-ug/modules/fun/pages/business-rules/validity.adoc b/core/_adoc-ug/modules/fun/pages/business-rules/validity.adoc
index 79b31a7..5186e02 100644
--- a/core/_adoc-ug/modules/fun/pages/business-rules/validity.adoc
+++ b/core/_adoc-ug/modules/fun/pages/business-rules/validity.adoc
@@ -44,7 +44,7 @@ It is also possible to return a localized string by returning a `TranslatableStr
 == For more information
 
 For more information, see the xref:rg:cms:methods/prefixes/validate.adoc[`validate...()`] section in the appropriate reference guide.
-The reference guide also explains how to define validation declaratively, using the xref:rg:ant:Parameter/mustSatisfy.adoc[`@Parameter#mustSatisfy()`] or xref:rg:ant:Property/mustSatisfy.adoc[`@Property#mustSatisfy()`] attributes.
+The reference guide also explains how to define validation declaratively, using the xref:rg:ant:Parameter.adoc#mustSatisfy[`@Parameter#mustSatisfy()`] or xref:rg:ant:Property.adoc#mustSatisfy[`@Property#mustSatisfy()`] attributes.
 
 
 
diff --git a/core/_adoc-ug/modules/fun/pages/drop-downs-and-defaults.adoc b/core/_adoc-ug/modules/fun/pages/drop-downs-and-defaults.adoc
index cdd0226..ed34193 100644
--- a/core/_adoc-ug/modules/fun/pages/drop-downs-and-defaults.adoc
+++ b/core/_adoc-ug/modules/fun/pages/drop-downs-and-defaults.adoc
@@ -110,7 +110,7 @@ For example:
 public class Product { /* ... */ }
 ----
 
-For more on this, see xref:rg:ant:DomainObject/bounding.adoc[`@DomainObject#bounding()`].
+For more on this, see xref:rg:ant:DomainObject.adoc#bounding[`@DomainObject#bounding()`].
 
 Or, if the data type is an enum, then a drop-down will be provided automatically.
 A payment method is a good example of this:
@@ -149,7 +149,7 @@ public class Customers {
 }
 ----
 
-For more on this, see xref:rg:ant:DomainObject/autoCompleteRepository.adoc[`@DomainObject#autoCompleteRepository()`].
+For more on this, see xref:rg:ant:DomainObject.adoc#autoCompleteRepository[`@DomainObject#autoCompleteRepository()`].
 
 [TIP]
 ====
diff --git a/core/_adoc-ug/modules/fun/pages/programming-model/actions.adoc b/core/_adoc-ug/modules/fun/pages/programming-model/actions.adoc
index 2ddce54..e4b9a65 100644
--- a/core/_adoc-ug/modules/fun/pages/programming-model/actions.adoc
+++ b/core/_adoc-ug/modules/fun/pages/programming-model/actions.adoc
@@ -160,7 +160,7 @@ As the example suggests, any collection parameter type must provide a way to sel
 == Optional Parameters
 
 Whereas the xref:ug:fun:programming-model.adoc#properties.adoc#optional-properties[optionality of properties] is defined using xref:rg:ant:Column#allowsNull[`@javax.jdo.annotations.Column#allowsNull()`], that JDO annotation cannot be applied to parameter types.
-Instead, either the xref:rg:ant:Nullable.adoc[`@Nullable`] annotation or the xref:rg:ant:Parameter/optionality.adoc[`@Parameter#optionality()`]  annotation/attribute is used.
+Instead, either the xref:rg:ant:Nullable.adoc[`@Nullable`] annotation or the xref:rg:ant:Parameter.adoc#optionality[`@Parameter#optionality()`]  annotation/attribute is used.
 
 For example:
 
@@ -189,7 +189,7 @@ See also xref:ug:fun:programming-model.adoc#properties-vs-parameters[properties
 == ``String`` Parameters (Length)
 
 Whereas the length of string properties is defined using xref:rg:ant:Column#length-for-strings.adoc[`@javax.jdo.annotations.Column#length()`], that JDO annotation cannot be applied to parameter types.
-Instead, the xref:rg:ant:Parameter/maxLength.adoc[`@Parameter#maxLength()`] annotation/attribute is used.
+Instead, the xref:rg:ant:Parameter.adoc#maxLength[`@Parameter#maxLength()`] annotation/attribute is used.
 
 For example:
 
@@ -216,7 +216,7 @@ public Customer updateName(
 }
 ----
 <1> Specifies the property length using the JDO xref:rg:ant:Column#length.adoc[`@Column#length()`] annotation
-<2> Specifies the parameter length using the (Apache Isis) xref:rg:ant:Parameter/maxLength.adoc[`@Parameter#maxLength()`] annotation
+<2> Specifies the parameter length using the (Apache Isis) xref:rg:ant:Parameter.adoc#maxLength[`@Parameter#maxLength()`] annotation
 
 [IMPORTANT]
 ====
diff --git a/core/_adoc-ug/modules/fun/pages/programming-model/domain-services/menu.adoc b/core/_adoc-ug/modules/fun/pages/programming-model/domain-services/menu.adoc
index 2374712..a228b7f 100644
--- a/core/_adoc-ug/modules/fun/pages/programming-model/domain-services/menu.adoc
+++ b/core/_adoc-ug/modules/fun/pages/programming-model/domain-services/menu.adoc
@@ -63,7 +63,7 @@ There's no need to name the action parameters if the code is compiled using the
 <4> the action implementation delegates to an injected repository.
 The framework can inject into not just other domain services but will also automatically into domain entities and view models.
 There is further discussion of service injection xref:ug:fun:programming-model.adoc#inject-services[below].
-<5> xref:rg:ant:Action/restrictTo.adoc[Prototype] actions are rendered only in prototyping mode.
+<5> xref:rg:ant:Action.adoc#restrictTo[Prototype] actions are rendered only in prototyping mode.
 A "list all" action such as this can be useful when exploring the domain with a small dataset.
 <6> Menu services typically delegate to an underlying repository/ies specific to the domain (rather than use `RepositoryService` directly, for example).
 
diff --git a/core/_adoc-ug/modules/fun/pages/programming-model/mixins.adoc b/core/_adoc-ug/modules/fun/pages/programming-model/mixins.adoc
index f0fc22d..cbf163a 100644
--- a/core/_adoc-ug/modules/fun/pages/programming-model/mixins.adoc
+++ b/core/_adoc-ug/modules/fun/pages/programming-model/mixins.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 A xref:ug:fun:building-blocks.adoc#mixins[mixin] acts like a trait or extension method, allowing one module to contribute behaviour or derived state to another object.
 
-Syntactically, a mixin is defined using either the xref:rg:ant:Mixin.adoc[`@Mixin`] annotation or using xref:rg:ant:DomainObject/nature.adoc[`@DomainObject#nature()`] attribute (specifying a nature of `Nature.MIXIN`).
+Syntactically, a mixin is defined using either the xref:rg:ant:Mixin.adoc[`@Mixin`] annotation or using xref:rg:ant:DomainObject.adoc#nature[`@DomainObject#nature()`] attribute (specifying a nature of `Nature.MIXIN`).
 
 // TODO: v2: perhaps we should get rid of @DomainObject#nature=MIXIN ?
 
diff --git a/core/_adoc-ug/modules/fun/pages/programming-model/view-models/dto.adoc b/core/_adoc-ug/modules/fun/pages/programming-model/view-models/dto.adoc
index 7591ed1..cb6a1ed 100644
--- a/core/_adoc-ug/modules/fun/pages/programming-model/view-models/dto.adoc
+++ b/core/_adoc-ug/modules/fun/pages/programming-model/view-models/dto.adoc
@@ -49,7 +49,7 @@ public class ToDoItemV1_1 implements Dto {                          // <5>
 <1> package name encodes major version; see discussion on xref:ug:fun:programming-model.adoc#versioning[versioning]
 <2> identifies this class as a view model and defines the root element for JAXB serialization
 <3> all properties in the class must be listed; (they can be ignored using `@XmlTransient`)
-<4> demonstrating use of UI events for a subscriber to provide the DTO's title; see xref:rg:ant:DomainObjectLayout/titleUiEvent.adoc[`@DomainObjectLayout#titleUiEvent()`].
+<4> demonstrating use of UI events for a subscriber to provide the DTO's title; see xref:rg:ant:DomainObjectLayout.adoc#titleUiEvent[`@DomainObjectLayout#titleUiEvent()`].
 <5> class name encodes (major and) minor version; see discussion on xref:ug:fun:programming-model.adoc#versioning[versioning]
 <6> again, see discussion on xref:ug:fun:programming-model.adoc#versioning[versioning]
 <7> again, see discussion on xref:ug:fun:programming-model.adoc#versioning[versioning]
diff --git a/core/_adoc-ug/modules/fun/pages/programming-model/view-models/non-jaxb.adoc b/core/_adoc-ug/modules/fun/pages/programming-model/view-models/non-jaxb.adoc
index d860e04..16adf7c 100644
--- a/core/_adoc-ug/modules/fun/pages/programming-model/view-models/non-jaxb.adoc
+++ b/core/_adoc-ug/modules/fun/pages/programming-model/view-models/non-jaxb.adoc
@@ -32,7 +32,7 @@ They are:
 @DomainObject(nature=Nature.EXTERNAL_ENTITY)
 public class CustomerRecordOnSAP { /* ... */ }
 ----
-|Annotated with xref:rg:ant:DomainObject/nature.adoc[`@DomainObject#nature()`] and a nature of `EXTERNAL_ENTITY`, with memento derived automatically from the properties of the domain object.  Collections are ignored, as are any properties annotated as xref:rg:ant:Property/notPersisted.adoc[not persisted].
+|Annotated with xref:rg:ant:DomainObject.adoc#nature[`@DomainObject#nature()`] and a nature of `EXTERNAL_ENTITY`, with memento derived automatically from the properties of the domain object.  Collections are ignored, as are any properties annotated as xref:rg:ant:Property.adoc#notPersisted[not persisted].
 
 | In-memory entity
 |[source,java]
diff --git a/core/_adoc-ug/modules/fun/pages/ui-hints/action-icons-and-css.adoc b/core/_adoc-ug/modules/fun/pages/ui-hints/action-icons-and-css.adoc
index 8667c30..a9f8689 100644
--- a/core/_adoc-ug/modules/fun/pages/ui-hints/action-icons-and-css.adoc
+++ b/core/_adoc-ug/modules/fun/pages/ui-hints/action-icons-and-css.adoc
@@ -14,7 +14,7 @@ It is also possible to specify additional CSS for an object's members (not just
 
 Action icons can be specified in several ways.
 
-One option is to use the xref:rg:ant:ActionLayout/cssClassFa.adoc[`@ActionLayout#cssClassFa()`].
+One option is to use the xref:rg:ant:ActionLayout.adoc#cssClassFa[`@ActionLayout#cssClassFa()`].
 For example:
 
 [source,java]
@@ -32,7 +32,7 @@ Alternatively, you can specify these hints dynamically in the xref:vw:ROOT:layou
 <cpt:action id="renew" cssClassFa="refresh"/>
 ----
 
-Rather than annotating every action with xref:rg:ant:ActionLayout/cssClassFa.adoc[`@ActionLayout#cssClassFa()`] and xref:rg:ant:ActionLayout/cssClass.adoc[`@ActionLayout#cssClass()`] you can instead specify the UI hint globally using regular expressions.
+Rather than annotating every action with xref:rg:ant:ActionLayout.adoc#cssClassFa[`@ActionLayout#cssClassFa()`] and xref:rg:ant:ActionLayout.adoc#cssClass[`@ActionLayout#cssClass()`] you can instead specify the UI hint globally using regular expressions.
 Not only does this save a lot of boilerplate/editing, it helps ensure consistency across all actions.
 
 To declare fa classes globally, use the xref:rg:cfg:configuring-core.adoc[configuration property] `isis.reflector.facet.cssClassFa.patterns` (a comma separated list of key:value pairs).
@@ -67,11 +67,11 @@ For example, "fa-plus" is applied to all action members called "newXxx"
 
 Similarly, a CSS class can be specified for object members:
 
-* xref:rg:ant:ActionLayout/cssClass.adoc[`@ActionLayout#cssClass()`] for actions
+* xref:rg:ant:ActionLayout.adoc#cssClass[`@ActionLayout#cssClass()`] for actions
 
-* xref:rg:ant:PropertyLayout/cssClass.adoc[`@PropertyLayout#cssClass()`] for properties, and
+* xref:rg:ant:PropertyLayout.adoc#cssClass[`@PropertyLayout#cssClass()`] for properties, and
 
-* xref:rg:ant:CollectionLayout/cssClass.adoc[`@CollectionLayout#cssClass()`] for collections.
+* xref:rg:ant:CollectionLayout.adoc#cssClass[`@CollectionLayout#cssClass()`] for collections.
 
 Again, this CSS class will be attached to an appropriate containing `<div>` or `<span>` on the rendered page.
 
diff --git a/core/_adoc-ug/modules/fun/pages/ui-hints/eager-rendering.adoc b/core/_adoc-ug/modules/fun/pages/ui-hints/eager-rendering.adoc
index 194321d..0d0f137 100644
--- a/core/_adoc-ug/modules/fun/pages/ui-hints/eager-rendering.adoc
+++ b/core/_adoc-ug/modules/fun/pages/ui-hints/eager-rendering.adoc
@@ -9,7 +9,7 @@ For the more commonly used collections though, we'll probably want to show the t
 
 image::programming-model/todoapp-Dashboard.png[width="800px",link="{imagesdir}/programming-model/todoapp-Dashboard.png"]
 
-For this we annotate the collection using xref:rg:ant:CollectionLayout/defaultView.adoc[`@CollectionLayout#defaultView()`]; for example
+For this we annotate the collection using xref:rg:ant:CollectionLayout.adoc#defaultView[`@CollectionLayout#defaultView()`]; for example
 
 [source,java]
 ----
diff --git a/core/_adoc-ug/modules/fun/pages/ui-hints/names-and-descriptions.adoc b/core/_adoc-ug/modules/fun/pages/ui-hints/names-and-descriptions.adoc
index 103bca3..e413c79 100644
--- a/core/_adoc-ug/modules/fun/pages/ui-hints/names-and-descriptions.adoc
+++ b/core/_adoc-ug/modules/fun/pages/ui-hints/names-and-descriptions.adoc
@@ -26,25 +26,25 @@ The table below summarizes the annotations available:
 
 
 | Class
-| xref:rg:ant:DomainObjectLayout/named.adoc[`@DomainObjectLayout#named()`]
-| xref:rg:ant:DomainObjectLayout/describedAs.adoc[`@DomainObjectLayout#describedAs()`]
+| xref:rg:ant:DomainObjectLayout.adoc#named[`@DomainObjectLayout#named()`]
+| xref:rg:ant:DomainObjectLayout.adoc#describedAs[`@DomainObjectLayout#describedAs()`]
 
 
 | Property
-| xref:rg:ant:PropertyLayout/named.adoc[`@PropertyLayout#named()`]
-| xref:rg:ant:PropertyLayout/describedAs.adoc[`@PropertyLayout#describedAs()`]
+| xref:rg:ant:PropertyLayout.adoc#named[`@PropertyLayout#named()`]
+| xref:rg:ant:PropertyLayout.adoc#describedAs[`@PropertyLayout#describedAs()`]
 
 | Collection
-| xref:rg:ant:CollectionLayout/named.adoc[`@CollectionLayout#named()`]
-| xref:rg:ant:CollectionLayout/describedAs.adoc[`@CollectionLayout#describedAs()`]
+| xref:rg:ant:CollectionLayout.adoc#named[`@CollectionLayout#named()`]
+| xref:rg:ant:CollectionLayout.adoc#describedAs[`@CollectionLayout#describedAs()`]
 
 | Action
-| xref:rg:ant:ActionLayout/named.adoc[`@ActionLayout#named()`]
-| xref:rg:ant:ActionLayout/describedAs.adoc[`@ActionLayout#describedAs()`]
+| xref:rg:ant:ActionLayout.adoc#named[`@ActionLayout#named()`]
+| xref:rg:ant:ActionLayout.adoc#describedAs[`@ActionLayout#describedAs()`]
 
 | Action Parameters
-| xref:rg:ant:ParameterLayout/named.adoc[`@ParameterLayout#named()`]
-| xref:rg:ant:ParameterLayout/describedAs.adoc[`@ParameterLayout#describedAs()`]
+| xref:rg:ant:ParameterLayout.adoc#named[`@ParameterLayout#named()`]
+| xref:rg:ant:ParameterLayout.adoc#describedAs[`@ParameterLayout#describedAs()`]
 
 |===
 
diff --git a/core/_adoc-ug/modules/fun/pages/ui-hints/object-titles-and-icons.adoc b/core/_adoc-ug/modules/fun/pages/ui-hints/object-titles-and-icons.adoc
index ac09a95..f9ff17e 100644
--- a/core/_adoc-ug/modules/fun/pages/ui-hints/object-titles-and-icons.adoc
+++ b/core/_adoc-ug/modules/fun/pages/ui-hints/object-titles-and-icons.adoc
@@ -117,7 +117,7 @@ A variation on this approach also supports localized names; see xref:ug:btb:i18n
 
 A third alternative is to move the responsibility for deriving the title into a separate subscriber object.
 
-In the target object, we define an appropriate event type and use the xref:rg:ant:DomainObjectLayout/titleUiEvent.adoc[`@DomainObjectLayout#titleUiEvent()`] attribute to specify:
+In the target object, we define an appropriate event type and use the xref:rg:ant:DomainObjectLayout.adoc#titleUiEvent[`@DomainObjectLayout#titleUiEvent()`] attribute to specify:
 
 [source,java]
 ----
@@ -174,7 +174,7 @@ If there is no requirement to customize the icon (the normal case), then the ico
 For example, the icon for a class `org.mydomain.myapp.Customer` will be `org/mydomain/myapp/Customer.png` (if it exists).
 
 Alternatively, a font-awesome icon can be used.
-This is specified using the xref:rg:ant:DomainObjectLayout/cssClassFa.adoc[`@DomainObjectLayout#cssClassFa()`] attribute or in the xref:vw:ROOT:layout/file-based.adoc[layout.xml] file.
+This is specified using the xref:rg:ant:DomainObjectLayout.adoc#cssClassFa[`@DomainObjectLayout#cssClassFa()`] attribute or in the xref:vw:ROOT:layout/file-based.adoc[layout.xml] file.
 
 For example:
 
@@ -214,7 +214,7 @@ Otherwise it will just use "Order.png", as normal.
 
 As for title, the determination of which image file to use for the icon can be externalized into a UI event subscriber.
 
-In the target object, we define an appropriate event type and use the xref:rg:ant:DomainObjectLayout/iconUiEvent.adoc[`@DomainObjectLayout#iconUiEvent()`] attribute to specify.
+In the target object, we define an appropriate event type and use the xref:rg:ant:DomainObjectLayout.adoc#iconUiEvent[`@DomainObjectLayout#iconUiEvent()`] attribute to specify.
 
 For example:
 
@@ -265,7 +265,7 @@ In conjunction with xref:vw:ROOT:customisation/tweaking-css-classes.adoc[customi
 === Declarative style
 
 To render an object with a particular CSS, use
-xref:rg:ant:DomainObjectLayout/cssClass.adoc[`@DomainObjectLayout#cssClass()`] or in the xref:vw:ROOT:layout/file-based.adoc[layout.xml] file.
+xref:rg:ant:DomainObjectLayout.adoc#cssClass[`@DomainObjectLayout#cssClass()`] or in the xref:vw:ROOT:layout/file-based.adoc[layout.xml] file.
 
 When the domain object is rendered on its own page, this CSS class will appear on a top-level `<div>`.
 Or, when the domain object is rendered as a row in a collection, then the CSS class will appear in a `<div>` wrapped by the `<tr>` of the row.
@@ -300,7 +300,7 @@ If non-null value is returned then the CSS class will be rendered _in addition_
 
 As for title and icon, the determination of which CSS class to render can be externalized into a UI event subscriber.
 
-In the target object, we define an appropriate event type and use the xref:rg:ant:DomainObjectLayout/cssClassUiEvent.adoc[`@DomainObjectLayout#cssClassUiEvent()`] attribute to specify.
+In the target object, we define an appropriate event type and use the xref:rg:ant:DomainObjectLayout.adoc#cssClassUiEvent[`@DomainObjectLayout#cssClassUiEvent()`] attribute to specify.
 
 For example
 
diff --git a/core/viewer-wicket/_adoc/modules/ROOT/pages/configuration-properties.adoc b/core/viewer-wicket/_adoc/modules/ROOT/pages/configuration-properties.adoc
index 7fdee71..b87c0b6 100644
--- a/core/viewer-wicket/_adoc/modules/ROOT/pages/configuration-properties.adoc
+++ b/core/viewer-wicket/_adoc/modules/ROOT/pages/configuration-properties.adoc
@@ -462,10 +462,10 @@ Some of the properties below use the prefix `isis.viewers.` (rather than the usu
 `defaultView`
 |`hidden`, `table` +
 (`hidden`)
-|Default for the default view for all (parented) collections if not explicitly specified using xref:rg:ant:CollectionLayout/defaultView.adoc[`@CollectionLayout#defaultView()`]
+|Default for the default view for all (parented) collections if not explicitly specified using xref:rg:ant:CollectionLayout.adoc#defaultView[`@CollectionLayout#defaultView()`]
 
 By default the framework renders (parented) collections as "hidden", ie collapsed.
-These can be overridden on a case-by-case basis using the xref:rg:ant:CollectionLayout/defaultView.adoc[`@CollectionLayout#defaultView()`] or the corresponding `<collectionLayout defaultView="...">` element in the `Xxx.layout.xml` layout file.
+These can be overridden on a case-by-case basis using the xref:rg:ant:CollectionLayout.adoc#defaultView[`@CollectionLayout#defaultView()`] or the corresponding `<collectionLayout defaultView="...">` element in the `Xxx.layout.xml` layout file.
 
 If the majority of collections should be displayed as "table" form, then it is more convenient to specify the default view globally.
 
@@ -487,7 +487,7 @@ If the majority of collections should be displayed as "table" form, then it is m
 `labelPosition`
 |`TOP`, `LEFT` +
 (`LEFT`)
-|Default for label position for all properties if not explicitly specified using xref:rg:ant:PropertyLayout/labelPosition.adoc[`@PropertyLayout#labelPosition()`]
+|Default for label position for all properties if not explicitly specified using xref:rg:ant:PropertyLayout.adoc#labelPosition[`@PropertyLayout#labelPosition()`]
 
 
 If you want a consistent look-n-feel throughout the app, eg all property labels to the top, then it'd be rather frustrating to have to annotate every property.
@@ -525,7 +525,7 @@ At the time of writing, this means labels are to the left for all datatypes exce
 For actions, `inline_as_if_edit` will suppress the action's button, and instead let the action be invoked as if editing the property.
 The net effect is that being able to "edit" complex properties with multiple parts (eg a date) using a multi-argument editor (this editor, in fact, being the action's argument panel).
 
-The property can be overridden on a property-by-property basis using xref:rg:ant:PropertyLayout/promptStyle.adoc[`@Property#promptStyle()`]) or  xref:rg:ant:ActionLayout/promptStyle.adoc[`@Action#promptStyle()`]).
+The property can be overridden on a property-by-property basis using xref:rg:ant:PropertyLayout.adoc#promptStyle[`@Property#promptStyle()`]) or  xref:rg:ant:ActionLayout.adoc#promptStyle[`@Action#promptStyle()`]).
 
 Note that `inline_as_if_edit` does not make sense for a configuration property default, and will instead be interpreted as `inline`.
 
diff --git a/core/viewer-wicket/_adoc/modules/ROOT/pages/features/bookmarked-pages.adoc b/core/viewer-wicket/_adoc/modules/ROOT/pages/features/bookmarked-pages.adoc
index f1cf154..224457f 100644
--- a/core/viewer-wicket/_adoc/modules/ROOT/pages/features/bookmarked-pages.adoc
+++ b/core/viewer-wicket/_adoc/modules/ROOT/pages/features/bookmarked-pages.adoc
@@ -4,7 +4,7 @@ include::_attributes.adoc[]
 
 
 
-The Wicket viewer supports the bookmarking of both domain objects and query-only (xref:rg:ant:Action/semantics.adoc[@Action(semantics=...)]) actions.
+The Wicket viewer supports the bookmarking of both domain objects and query-only (xref:rg:ant:Action.adoc#semantics[@Action(semantics=...)]) actions.
 
 Domain objects, if bookmarkable, can be nested.
 
diff --git a/core/viewer-wicket/_adoc/modules/ROOT/pages/layout/annotation-based.adoc b/core/viewer-wicket/_adoc/modules/ROOT/pages/layout/annotation-based.adoc
index 0898e72..4488481 100644
--- a/core/viewer-wicket/_adoc/modules/ROOT/pages/layout/annotation-based.adoc
+++ b/core/viewer-wicket/_adoc/modules/ROOT/pages/layout/annotation-based.adoc
@@ -15,7 +15,7 @@ This section explains how.
 
 The xref:rg:ant:MemberOrder.adoc[`@MemberOrder`]  annotation is used to specify the relative order of domain class properties, collections and actions.
 
-The annotation defines two attributes, xref:rg:ant:MemberOrder/name.adoc[`name()`] and xref:rg:ant:MemberOrder/sequence.adoc[`sequence()`].
+The annotation defines two attributes, xref:rg:ant:MemberOrder.adoc#name[`name()`] and xref:rg:ant:MemberOrder.adoc#sequence[`sequence()`].
 Their usage depends on the member type:
 
 * for properties, the `name()` is used to group properties together into a member group (also called a property group or a fieldset.
@@ -29,7 +29,7 @@ The `sequence()` orders collections relative to one another
 
 * for actions, the `name()` attribute associates an action with either a property or with a collection.
 
-** If the `name()` attribute matches a property name, then the action's button is rendered close to the property, according to xref:rg:ant:ActionLayout/position.adoc[`@ActionLayout#position()`] attribute.
+** If the `name()` attribute matches a property name, then the action's button is rendered close to the property, according to xref:rg:ant:ActionLayout.adoc#position[`@ActionLayout#position()`] attribute.
 
 ** On the other hand if the `name() attribute matches a collection name, then the action's button is rendered on the collection's header.
 
@@ -66,7 +66,7 @@ This defines three property (or member) groups, "General", "Detail" and "Misc";
 Properties in the same member group are rendered together, as a fieldset.
 
 In addition, actions can optionally be associated (rendered close to) either properties or actions.
-This is done by overloading the ``@MemberOrder``'s xref:rg:ant:MemberOrder/name.adoc[`name()`] attribute, holding the value of the property or collection.
+This is done by overloading the ``@MemberOrder``'s xref:rg:ant:MemberOrder.adoc#name[`name()`] attribute, holding the value of the property or collection.
 
 For example:
 
@@ -93,7 +93,7 @@ public class ToDoItem {
 will associate the `completed()` and `notYetCompleted()` actions with the `complete` property, and will associate the `add()` and `remove()` actions with the `dependencies` collection.
 
 
-The value of xref:rg:ant:MemberOrder/sequence.adoc[`sequence()`] is a string.
+The value of xref:rg:ant:MemberOrder.adoc#sequence[`sequence()`] is a string.
 The simplest convention (as shown in the example above) is to use numbers -- 1, 2, 3 -- though it is a better idea to leave gaps in the numbers -- 10, 20, 30 perhaps -- such that a new member may be added without having to edit existing numbers.
 
 Even better is to adopt the 'dewey-decimal' notation -- 1, 1.1, 1.2, 2, 3, 5.1.1, 5.2.2, 5.2, 5.3 -- which allows for an indefinite amount of future insertion.
diff --git a/examples/apps/simpleapp/_adoc/modules/ROOT/pages/about.adoc b/examples/apps/simpleapp/_adoc/modules/ROOT/pages/about.adoc
index a3fd0c1..ac089ac 100644
--- a/examples/apps/simpleapp/_adoc/modules/ROOT/pages/about.adoc
+++ b/examples/apps/simpleapp/_adoc/modules/ROOT/pages/about.adoc
@@ -440,8 +440,9 @@ There's a role for both: local integration tests should fully exercise the modul
 With regard to the naming of these various BDD specs and integration tests, they follow the naming convention required by the (non-ASF) link:http://github.com/danhaywood/java-mavenmixin-surefire["surefire" mavenmixin] that configures the maven surefire plugin.
 Integration tests include the name "IntegTest", while unit tests contain merely "Test".
 
-The module also defines its own manifest, `SimpleModuleManifest`.
-This is used to run Isis' own xref:rg:mvn:about.adoc[maven plugin] to xref:rg:mvn:validate.adoc[validate] the domain object model (eg to detect orphaned supported methods).
+// FIXME: currently removed in v2, may reinstate
+//The module also defines its own manifest, `SimpleModuleManifest`.
+//This is used to run Isis' own xref:rg:mvn:about.adoc[maven plugin] to xref:rg:mvn:validate.adoc[validate] the domain object model (eg to detect orphaned supported methods).
 
 
 
@@ -529,7 +530,8 @@ The files in `src/main/jettyconsole` provide a splash image (if not run in headl
 +
 This uses the Dockerfile residing in `docker/Dockerfile` (under `src/main/resources`).
 
-* also, the xref:rg:mvn:about.adoc[Apache Isis Maven plugin] is also configured to generate a xref:rg:mvn:swagger.adoc[swagger] spec file for the entire application, in the `xxx-webapp` module
+// FIXME: currently removed in v2, may reinstate
+//* also, the xref:rg:mvn:about.adoc[Apache Isis Maven plugin] is also configured to generate a xref:rg:mvn:swagger.adoc[swagger] spec file for the entire application, in the `xxx-webapp` module
 
 Under `src/main/resources` there is:
 
diff --git a/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java b/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
deleted file mode 100644
index 7452735..0000000
--- a/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package domainapp.modules.simple;
-
-/**
- * Used by <code>isis-maven-plugin</code> (build-time validation of the module) and also by module-level integration tests.
- */
-public class SimpleModuleManifest /*extends AppManifestAbstract2*/ {
-
-    //FIXME[2112] needs migration
-    //    public static final Builder BUILDER = Builder.forModule(new SimpleModule())
-    //            .withConfigurationProperty("isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll","true")
-    //            .withConfigurationProperty("isis.persistor.datanucleus.impl.datanucleus.identifier.case","MixedCase")
-    //            ;
-    //
-    //    public SimpleModuleManifest() {
-    //        super(BUILDER);
-    //    }
-
-
-}