You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/04/07 06:29:35 UTC

[isis] branch master updated: ISIS-2994: remove the '3' in bootstrap class/package names

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

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


The following commit(s) were added to refs/heads/master by this push:
     new d286ad1687 ISIS-2994: remove the '3' in bootstrap class/package names
d286ad1687 is described below

commit d286ad1687d2b4084f562a9f0f56881bab2f94d6
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 7 08:29:29 2022 +0200

    ISIS-2994: remove the '3' in bootstrap class/package names
---
 .../isis/applib/layout/component/FieldSet.java     |   4 +-
 .../isis/applib/layout/grid/GridAbstract.java      |  10 +-
 .../BS3ClearFix.java => bootstrap/BSClearFix.java} |   4 +-
 .../BSClearFixHidden.java}                         |   4 +-
 .../BSClearFixVisible.java}                        |   4 +-
 .../BS3Col.java => bootstrap/BSCol.java}           |  22 ++--
 .../BS3Element.java => bootstrap/BSElement.java}   |   4 +-
 .../BSElementAbstract.java}                        |   4 +-
 .../BS3Grid.java => bootstrap/BSGrid.java}         | 143 ++++++++++-----------
 .../BS3Row.java => bootstrap/BSRow.java}           |  30 ++---
 .../BSRowContent.java}                             |  16 +--
 .../BSRowContentOwner.java}                        |   4 +-
 .../BS3RowOwner.java => bootstrap/BSRowOwner.java} |   6 +-
 .../BS3Tab.java => bootstrap/BSTab.java}           |  38 +++---
 .../BS3TabGroup.java => bootstrap/BSTabGroup.java} |  22 ++--
 .../BSTabGroupOwner.java}                          |   6 +-
 .../BS3TabOwner.java => bootstrap/BSTabOwner.java} |   6 +-
 .../grid/{bootstrap3 => bootstrap}/HasCssId.java   |   2 +-
 .../grid/{bootstrap3 => bootstrap}/Size.java       |   2 +-
 .../grid/{bootstrap3 => bootstrap}/SizeSpan.java   |   2 +-
 .../grid/{bootstrap3 => bootstrap}/WithinGrid.java |   4 +-
 .../{bootstrap3 => bootstrap}/package-info.java    |   2 +-
 .../BS3Menu.java => bootstrap/BSMenu.java}         |  12 +-
 .../BS3MenuBar.java => bootstrap/BSMenuBar.java}   |  12 +-
 .../BS3MenuBars.java => bootstrap/BSMenuBars.java} |  84 ++++++------
 .../BSMenuSection.java}                            |   8 +-
 .../{bootstrap3 => bootstrap}/package-info.java    |   2 +-
 .../services/menu/MenuBarsLoaderService.java       |   8 +-
 .../applib/layout/grid/bootstrap3/BS3ColTest.java  |   8 +-
 .../layout/grid/bootstrap3/SizeSpanTest.java       |   3 +
 .../bootstrap3/BS3MenuBars_roundtrip_Test.java     |  15 ++-
 .../services/grid/GridReaderUsingJaxb.java         |   4 +-
 .../bootstrap3/GridSystemServiceBootstrap.java     |  62 ++++-----
 .../services/grid/bootstrap3/_GridModel.java       |  36 +++---
 .../apache/isis/core/metamodel/util/Facets.java    |   6 +-
 .../services/grid/GridXmlRoundtripTest.java        |  34 ++---
 .../services/menubars/BS3MenuBarsTest.java         |   4 +-
 .../menubars/MenuBarsLoaderServiceDefault.java     |   8 +-
 .../menubars/bootstrap3/MenuBarsServiceBS3.java    |  58 ++++-----
 .../sitemap/SitemapServiceDefault.java             |   4 +-
 .../javafx/ui/components/object/ObjectViewFx.java  |  20 +--
 .../vaadin/ui/components/object/ObjectViewVaa.java |  20 +--
 .../testdomain/rest/DomainObjectResourceTest.java  |   6 +-
 .../common/model/gridlayout/UiGridLayout.java      |  80 ++++++------
 .../isis/viewer/common/model/menu/MenuUiModel.java |   4 +-
 .../model/menu/MenuUiModel_buildMenuItems.java     |  16 +--
 .../ui/components/layout/bs3/BS3GridPanel.java     |  10 +-
 .../components/layout/bs3/clearfix/ClearFix.java   |   6 +-
 .../wicket/ui/components/layout/bs3/col/Col.java   |  32 ++---
 .../wicket/ui/components/layout/bs3/row/Row.java   |  24 ++--
 .../components/layout/bs3/tabs/TabGroupPanel.java  |  12 +-
 .../ui/components/layout/bs3/tabs/TabPanel.java    |  16 +--
 52 files changed, 480 insertions(+), 473 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
index 1dd08c619a..4d1166f6c3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
@@ -29,7 +29,7 @@ import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
 
 /**
  * A {@link MemberRegion region} of the page containing a set of
@@ -88,7 +88,7 @@ Serializable {
      * Whether this fieldset should be used to hold any unreferenced actions (contributed or &quot;native&quot;).
      *
      * <p>
-     *     Any layout must have precisely one fieldset or {@link BS3Col col} that has this attribute set.
+     *     Any layout must have precisely one fieldset or {@link BSCol col} that has this attribute set.
      * </p>
      */
     @XmlAttribute(required = false)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/GridAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/GridAbstract.java
index 2f797d1ce7..c66027b728 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/GridAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/GridAbstract.java
@@ -32,7 +32,7 @@ import org.apache.isis.applib.layout.component.CollectionLayoutDataOwner;
 import org.apache.isis.applib.layout.component.FieldSet;
 import org.apache.isis.applib.layout.component.FieldSetOwner;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.layout.grid.bootstrap.BSGrid;
 import org.apache.isis.applib.services.layout.LayoutService;
 
 /**
@@ -150,7 +150,7 @@ public abstract class GridAbstract implements Grid {
     @XmlTransient
     public LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById() {
         final LinkedHashMap<String, PropertyLayoutData> propertiesById = new LinkedHashMap<>();
-        visit(new BS3Grid.VisitorAdapter() {
+        visit(new BSGrid.VisitorAdapter() {
             @Override
             public void visit(final PropertyLayoutData propertyLayoutData) {
                 propertiesById.put(propertyLayoutData.getId(), propertyLayoutData);
@@ -166,7 +166,7 @@ public abstract class GridAbstract implements Grid {
     public LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById() {
         final LinkedHashMap<String, CollectionLayoutData> collectionsById = new LinkedHashMap<>();
 
-        visit(new BS3Grid.VisitorAdapter() {
+        visit(new BSGrid.VisitorAdapter() {
             @Override
             public void visit(final CollectionLayoutData collectionLayoutData) {
                 collectionsById.put(collectionLayoutData.getId(), collectionLayoutData);
@@ -182,7 +182,7 @@ public abstract class GridAbstract implements Grid {
     public LinkedHashMap<String, ActionLayoutData> getAllActionsById() {
         final LinkedHashMap<String, ActionLayoutData> actionsById = new LinkedHashMap<>();
 
-        visit(new BS3Grid.VisitorAdapter() {
+        visit(new BSGrid.VisitorAdapter() {
             @Override
             public void visit(final ActionLayoutData actionLayoutData) {
                 actionsById.put(actionLayoutData.getId(), actionLayoutData);
@@ -197,7 +197,7 @@ public abstract class GridAbstract implements Grid {
     public LinkedHashMap<String, FieldSet> getAllFieldSetsByName() {
         final LinkedHashMap<String, FieldSet> fieldSetsByName = new LinkedHashMap<>();
 
-        visit(new BS3Grid.VisitorAdapter() {
+        visit(new BSGrid.VisitorAdapter() {
             @Override
             public void visit(final FieldSet fieldSet) {
                 fieldSetsByName.put(fieldSet.getName(), fieldSet);
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSClearFix.java
similarity index 93%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSClearFix.java
index 2d35a56496..71c421bca5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSClearFix.java
@@ -16,12 +16,12 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 /**
  * @since 1.x {@index}
  */
-public abstract class BS3ClearFix extends BS3RowContent {
+public abstract class BSClearFix extends BSRowContent {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSClearFixHidden.java
similarity index 93%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSClearFixHidden.java
index 55283da71a..3b284efc43 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSClearFixHidden.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
@@ -37,7 +37,7 @@ import javax.xml.bind.annotation.XmlType;
 @XmlType(
         name = "clearFixHidden"
         )
-public class BS3ClearFixHidden extends BS3ClearFix {
+public class BSClearFixHidden extends BSClearFix {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSClearFixVisible.java
similarity index 94%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSClearFixVisible.java
index 0c5a4da3a5..84acac738b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSClearFixVisible.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
@@ -38,7 +38,7 @@ import javax.xml.bind.annotation.XmlType;
 @XmlType(
         name = "clearFixVisible"
         )
-public class BS3ClearFixVisible extends BS3ClearFix {
+public class BSClearFixVisible extends BSClearFix {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSCol.java
similarity index 91%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSCol.java
index 550e8323eb..3d97880bae 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSCol.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -44,7 +44,7 @@ import org.apache.isis.commons.internal.primitives._Ints.Bound;
  * <p>
  *     Pretty much other content can be contained within a column, though most commonly it will be {@link FieldSet fieldset}s
  *     (a group of properties) or {@link CollectionLayoutData collection}s.  However, columns can also be used to
- *     contain further {@link BS3Row row}s (creating a nested grid of rows/cols/rows/cols) and {@link BS3TabGroup tabgroup}s.
+ *     contain further {@link BSRow row}s (creating a nested grid of rows/cols/rows/cols) and {@link BSTabGroup tabgroup}s.
  * </p>
  *
  * <p>
@@ -69,8 +69,8 @@ import org.apache.isis.commons.internal.primitives._Ints.Bound;
                 "metadataError"
         }
         )
-public class BS3Col extends BS3RowContent
-implements ActionLayoutDataOwner, BS3TabGroupOwner, BS3RowOwner, FieldSetOwner, HasCssId,
+public class BSCol extends BSRowContent
+implements ActionLayoutDataOwner, BSTabGroupOwner, BSRowOwner, FieldSetOwner, HasCssId,
 CollectionLayoutDataOwner, DomainObjectLayoutDataOwner {
 
     private static final long serialVersionUID = 1L;
@@ -129,7 +129,7 @@ CollectionLayoutDataOwner, DomainObjectLayoutDataOwner {
      * Whether this column should be used to hold any unreferenced collections (contributed or &quot;native&quot;).
      *
      * <p>
-     *     Any layout must have precisely one column or {@link BS3TabGroup tabgroup} that has this attribute set.
+     *     Any layout must have precisely one column or {@link BSTabGroup tabgroup} that has this attribute set.
      * </p>
      */
     @XmlAttribute(required = false)
@@ -192,31 +192,31 @@ CollectionLayoutDataOwner, DomainObjectLayoutDataOwner {
 
 
 
-    private List<BS3Row> rows = new ArrayList<>();
+    private List<BSRow> rows = new ArrayList<>();
 
     // no wrapper
     @Override
     @XmlElement(name = "row", required = false)
-    public List<BS3Row> getRows() {
+    public List<BSRow> getRows() {
         return rows;
     }
 
-    public void setRows(final List<BS3Row> rows) {
+    public void setRows(final List<BSRow> rows) {
         this.rows = rows;
     }
 
 
 
-    private List<BS3TabGroup> tabGroups = new ArrayList<>();
+    private List<BSTabGroup> tabGroups = new ArrayList<>();
 
     // no wrapper
     @Override
     @XmlElement(name = "tabGroup", required = false)
-    public List<BS3TabGroup> getTabGroups() {
+    public List<BSTabGroup> getTabGroups() {
         return tabGroups;
     }
 
-    public void setTabGroups(final List<BS3TabGroup> tabGroups) {
+    public void setTabGroups(final List<BSTabGroup> tabGroups) {
         this.tabGroups = tabGroups;
     }
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSElement.java
similarity index 91%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSElement.java
index c3410c262f..bd5af0cd74 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSElement.java
@@ -16,14 +16,14 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.io.Serializable;
 
 /**
  * @since 1.x {@index}
  */
-public interface BS3Element extends WithinGrid, Serializable {
+public interface BSElement extends WithinGrid, Serializable {
 
     /**
      * Any additional CSS classes to render on the page element corresponding to this object,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSElementAbstract.java
similarity index 92%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSElementAbstract.java
index 160c702ea8..d927789abf 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSElementAbstract.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import javax.xml.bind.annotation.XmlAttribute;
 
@@ -25,7 +25,7 @@ import javax.xml.bind.annotation.XmlAttribute;
  *
  * @since 1.x {@index}
  */
-public abstract class BS3ElementAbstract implements BS3Element {
+public abstract class BSElementAbstract implements BSElement {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSGrid.java
similarity index 62%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSGrid.java
index 125a0fcae4..9ce2131067 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSGrid.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
@@ -58,7 +58,7 @@ import org.apache.isis.applib.mixins.dto.Dto;
                 "metadataErrors"
         }
         )
-public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwner {
+public class BSGrid extends GridAbstract implements BSElement, Dto, BSRowOwner {
 
     private static final long serialVersionUID = 1L;
 
@@ -77,19 +77,16 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
     }
 
 
-
-
-
-    private List<BS3Row> rows = new ArrayList<>();
+    private List<BSRow> rows = new ArrayList<>();
 
     // no wrapper
     @Override
     @XmlElement(name = "row", required = true)
-    public List<BS3Row> getRows() {
+    public List<BSRow> getRows() {
         return rows;
     }
 
-    public void setRows(final List<BS3Row> rows) {
+    public void setRows(final List<BSRow> rows) {
         this.rows = rows;
     }
 
@@ -112,66 +109,66 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
 
 
     @SuppressWarnings("unused")
-    private BS3RowOwner owner;
+    private BSRowOwner owner;
 
 
 
     public interface Visitor extends Grid.Visitor {
-        void preVisit(final BS3Grid bs3Grid);
-        void visit(final BS3Grid bs3Grid);
-        void postVisit(final BS3Grid bs3Grid);
-        void preVisit(final BS3Row bs3Row);
-        void visit(final BS3Row bs3Row);
-        void postVisit(final BS3Row bs3Row);
-        void preVisit(final BS3Col bs3Col);
-        void visit(final BS3Col bs3Col);
-        void postVisit(final BS3Col bs3Col);
-        void visit(final BS3ClearFix bs3ClearFix);
-        void preVisit(final BS3TabGroup bs3TabGroup);
-        void visit(final BS3TabGroup bs3TabGroup);
-        void postVisit(final BS3TabGroup bs3TabGroup);
-        void preVisit(final BS3Tab bs3Tab);
-        void visit(final BS3Tab bs3Tab);
-        void postVisit(final BS3Tab bs3Tab);
+        void preVisit(final BSGrid bs3Grid);
+        void visit(final BSGrid bs3Grid);
+        void postVisit(final BSGrid bs3Grid);
+        void preVisit(final BSRow bs3Row);
+        void visit(final BSRow bs3Row);
+        void postVisit(final BSRow bs3Row);
+        void preVisit(final BSCol bs3Col);
+        void visit(final BSCol bs3Col);
+        void postVisit(final BSCol bs3Col);
+        void visit(final BSClearFix bs3ClearFix);
+        void preVisit(final BSTabGroup bs3TabGroup);
+        void visit(final BSTabGroup bs3TabGroup);
+        void postVisit(final BSTabGroup bs3TabGroup);
+        void preVisit(final BSTab bs3Tab);
+        void visit(final BSTab bs3Tab);
+        void postVisit(final BSTab bs3Tab);
     }
 
     public static class VisitorAdapter extends Grid.VisitorAdapter implements Visitor {
-        @Override public void preVisit(final BS3Grid bs3Grid) { }
-        @Override public void visit(final BS3Grid bs3Grid) { }
-        @Override public void postVisit(final BS3Grid bs3Grid) { }
+        @Override public void preVisit(final BSGrid bs3Grid) { }
+        @Override public void visit(final BSGrid bs3Grid) { }
+        @Override public void postVisit(final BSGrid bs3Grid) { }
 
-        @Override public void preVisit(final BS3Row bs3Row) { }
-        @Override public void visit(final BS3Row bs3Row) { }
-        @Override public void postVisit(final BS3Row bs3Row) { }
+        @Override public void preVisit(final BSRow bs3Row) { }
+        @Override public void visit(final BSRow bs3Row) { }
+        @Override public void postVisit(final BSRow bs3Row) { }
 
-        @Override public void preVisit(final BS3Col bs3Col) { }
-        @Override public void visit(final BS3Col bs3Col) { }
-        @Override public void postVisit(final BS3Col bs3Col) { }
+        @Override public void preVisit(final BSCol bs3Col) { }
+        @Override public void visit(final BSCol bs3Col) { }
+        @Override public void postVisit(final BSCol bs3Col) { }
 
-        @Override public void visit(final BS3ClearFix bs3ClearFix) { }
+        @Override public void visit(final BSClearFix bs3ClearFix) { }
 
-        @Override public void preVisit(final BS3TabGroup bs3TabGroup) { }
-        @Override public void visit(final BS3TabGroup bs3TabGroup) { }
-        @Override public void postVisit(final BS3TabGroup bs3TabGroup) { }
+        @Override public void preVisit(final BSTabGroup bs3TabGroup) { }
+        @Override public void visit(final BSTabGroup bs3TabGroup) { }
+        @Override public void postVisit(final BSTabGroup bs3TabGroup) { }
 
-        @Override public void preVisit(final BS3Tab bs3Tab) { }
-        @Override public void visit(final BS3Tab bs3Tab) { }
-        @Override public void postVisit(final BS3Tab bs3Tab) { }
+        @Override public void preVisit(final BSTab bs3Tab) { }
+        @Override public void visit(final BSTab bs3Tab) { }
+        @Override public void postVisit(final BSTab bs3Tab) { }
     }
 
     @Override
     public void visit(final Grid.Visitor visitor) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        final BSGrid.Visitor bs3Visitor = asBs3Visitor(visitor);
         bs3Visitor.preVisit(this);
         bs3Visitor.visit(this);
         traverseRows(this, visitor);
         bs3Visitor.postVisit(this);
     }
 
-    protected void traverseRows(final BS3RowOwner rowOwner, final Grid.Visitor visitor) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
-        final List<BS3Row> rows = rowOwner.getRows();
-        for (BS3Row bs3Row : new ArrayList<>(rows)) {
+    protected void traverseRows(final BSRowOwner rowOwner, final Grid.Visitor visitor) {
+        final BSGrid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        final List<BSRow> rows = rowOwner.getRows();
+        for (BSRow bs3Row : new ArrayList<>(rows)) {
             bs3Row.setOwner(this);
             bs3Visitor.preVisit(bs3Row);
             bs3Visitor.visit(bs3Row);
@@ -180,13 +177,13 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
         }
     }
 
-    private void traverseCols(final Grid.Visitor visitor, final BS3Row bs3Row) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
-        final List<BS3RowContent> cols = bs3Row.getCols();
-        for (BS3RowContent rowContent : new ArrayList<>(cols)) {
+    private void traverseCols(final Grid.Visitor visitor, final BSRow bs3Row) {
+        final BSGrid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        final List<BSRowContent> cols = bs3Row.getCols();
+        for (BSRowContent rowContent : new ArrayList<>(cols)) {
             rowContent.setOwner(bs3Row);
-            if(rowContent instanceof BS3Col) {
-                final BS3Col bs3Col = (BS3Col) rowContent;
+            if(rowContent instanceof BSCol) {
+                final BSCol bs3Col = (BSCol) rowContent;
                 bs3Visitor.preVisit(bs3Col);
                 bs3Visitor.visit(bs3Col);
                 traverseDomainObject(bs3Col, visitor);
@@ -196,17 +193,17 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
                 traverseCollections(bs3Col, visitor);
                 traverseRows(bs3Col, visitor);
                 bs3Visitor.postVisit(bs3Col);
-            } else if (rowContent instanceof BS3ClearFix) {
-                final BS3ClearFix bs3ClearFix = (BS3ClearFix) rowContent;
+            } else if (rowContent instanceof BSClearFix) {
+                final BSClearFix bs3ClearFix = (BSClearFix) rowContent;
                 bs3Visitor.visit(bs3ClearFix);
             } else {
                 throw new IllegalStateException(
-                        "Unrecognized implementation of BS3RowContent, " + rowContent);
+                        "Unrecognized implementation of BSRowContent, " + rowContent);
             }
         }
     }
 
-    private void traverseDomainObject(final BS3Col bs3Col, final Grid.Visitor visitor) {
+    private void traverseDomainObject(final BSCol bs3Col, final Grid.Visitor visitor) {
         final DomainObjectLayoutData domainObject = bs3Col.getDomainObject();
         if(domainObject == null) {
             return;
@@ -216,11 +213,11 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
     }
 
     private void traverseTabGroups(
-            final BS3TabGroupOwner bs3TabGroupOwner,
+            final BSTabGroupOwner bs3TabGroupOwner,
             final Grid.Visitor visitor) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
-        final List<BS3TabGroup> tabGroups = bs3TabGroupOwner.getTabGroups();
-        for (BS3TabGroup bs3TabGroup : new ArrayList<>(tabGroups)) {
+        final BSGrid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        final List<BSTabGroup> tabGroups = bs3TabGroupOwner.getTabGroups();
+        for (BSTabGroup bs3TabGroup : new ArrayList<>(tabGroups)) {
             bs3TabGroup.setOwner(bs3TabGroupOwner);
             bs3Visitor.preVisit(bs3TabGroup);
             bs3Visitor.visit(bs3TabGroup);
@@ -230,11 +227,11 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
     }
 
     private void traverseTabs(
-            final BS3TabOwner bs3TabOwner,
+            final BSTabOwner bs3TabOwner,
             final Grid.Visitor visitor) {
-        final BS3Grid.Visitor bs3Visitor = asBs3Visitor(visitor);
-        final List<BS3Tab> tabs = bs3TabOwner.getTabs();
-        for (BS3Tab tab : new ArrayList<>(tabs)) {
+        final BSGrid.Visitor bs3Visitor = asBs3Visitor(visitor);
+        final List<BSTab> tabs = bs3TabOwner.getTabs();
+        for (BSTab tab : new ArrayList<>(tabs)) {
             tab.setOwner(bs3TabOwner);
             bs3Visitor.preVisit(tab);
             bs3Visitor.visit(tab);
@@ -244,7 +241,7 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
     }
 
     private static Visitor asBs3Visitor(final Grid.Visitor visitor) {
-        return visitor instanceof Visitor? (Visitor) visitor : new BS3Grid.VisitorAdapter() {
+        return visitor instanceof Visitor? (Visitor) visitor : new BSGrid.VisitorAdapter() {
             @Override public void visit(final DomainObjectLayoutData domainObjectLayoutData) {
                 visitor.visit(domainObjectLayoutData);
             }
@@ -270,13 +267,13 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
 
     @Programmatic
     @XmlTransient
-    public LinkedHashMap<String, BS3Tab> getAllTabsByName() {
-        final LinkedHashMap<String, BS3Tab> tabsByName = new LinkedHashMap<>();
+    public LinkedHashMap<String, BSTab> getAllTabsByName() {
+        final LinkedHashMap<String, BSTab> tabsByName = new LinkedHashMap<>();
 
-        visit(new BS3Grid.VisitorAdapter() {
+        visit(new BSGrid.VisitorAdapter() {
             @Override
-            public void visit(final BS3Tab bS3Tab) {
-                tabsByName.put(bS3Tab.getName(), bS3Tab);
+            public void visit(final BSTab bSTab) {
+                tabsByName.put(bSTab.getName(), bSTab);
             }
         });
         return tabsByName;
@@ -288,9 +285,9 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
     public LinkedHashMap<String, HasCssId> getAllCssId() {
         final LinkedHashMap<String, HasCssId> divsByCssId = new LinkedHashMap<>();
 
-        visit(new BS3Grid.VisitorAdapter() {
+        visit(new BSGrid.VisitorAdapter() {
             @Override
-            public void visit(final BS3Row bs3Row) {
+            public void visit(final BSRow bs3Row) {
                 final String id = bs3Row.getId();
                 divsByCssId.put(id, bs3Row);
             }
@@ -301,7 +298,7 @@ public class BS3Grid extends GridAbstract implements BS3Element, Dto, BS3RowOwne
     @Override
     @Programmatic
     @XmlTransient
-    public BS3Grid getGrid() {
+    public BSGrid getGrid() {
         return this;
     }
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRow.java
similarity index 74%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRow.java
index 2f2256b672..bce2dba7ff 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRow.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -31,8 +31,8 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Programmatic;
 
 /**
- * Contains a row of content, either on the top-level {@link BS3Grid page} or at any other lower-level element that can
- * contain rows, eg {@link BS3Tab tabs}.
+ * Contains a row of content, either on the top-level {@link BSGrid page} or at any other lower-level element that can
+ * contain rows, eg {@link BSTab tabs}.
  *
  * <p>
  *     It is rendered as a &lt;div class=&quot;row ...&quot;&gt;
@@ -47,7 +47,7 @@ import org.apache.isis.applib.annotation.Programmatic;
                 , "metadataError"
         }
         )
-public class BS3Row extends BS3ElementAbstract implements HasCssId, BS3RowContentOwner {
+public class BSRow extends BSElementAbstract implements HasCssId, BSRowContentOwner {
 
     private static final long serialVersionUID = 1L;
 
@@ -69,19 +69,19 @@ public class BS3Row extends BS3ElementAbstract implements HasCssId, BS3RowConten
 
 
 
-    private List<BS3RowContent> cols = new ArrayList<>();
+    private List<BSRowContent> cols = new ArrayList<>();
 
     // no wrapper
     @XmlElementRefs({
-        @XmlElementRef(type = BS3Col.class, name="col", required = true),
-        @XmlElementRef(type = BS3ClearFixVisible.class,  name="clearFixVisible", required = false),
-        @XmlElementRef(type = BS3ClearFixHidden.class,  name="clearFixHidden", required = false)
+        @XmlElementRef(type = BSCol.class, name="col", required = true),
+        @XmlElementRef(type = BSClearFixVisible.class,  name="clearFixVisible", required = false),
+        @XmlElementRef(type = BSClearFixHidden.class,  name="clearFixHidden", required = false)
     })
-    public List<BS3RowContent> getCols() {
+    public List<BSRowContent> getCols() {
         return cols;
     }
 
-    public void setCols(final List<BS3RowContent> cols) {
+    public void setCols(final List<BSRowContent> cols) {
         this.cols = cols;
     }
 
@@ -103,7 +103,7 @@ public class BS3Row extends BS3ElementAbstract implements HasCssId, BS3RowConten
     }
 
 
-    private BS3RowOwner owner;
+    private BSRowOwner owner;
 
 
     /**
@@ -114,11 +114,11 @@ public class BS3Row extends BS3ElementAbstract implements HasCssId, BS3RowConten
      * </p>
      */
     @XmlTransient
-    public BS3RowOwner getOwner() {
+    public BSRowOwner getOwner() {
         return owner;
     }
 
-    public void setOwner(final BS3RowOwner owner) {
+    public void setOwner(final BSRowOwner owner) {
         this.owner = owner;
     }
 
@@ -127,13 +127,13 @@ public class BS3Row extends BS3ElementAbstract implements HasCssId, BS3RowConten
     @Override
     @XmlTransient
     @Programmatic
-    public BS3Grid getGrid() {
+    public BSGrid getGrid() {
         return getOwner().getGrid();
     }
 
 
     @Override public String toString() {
-        return "BS3Row{" +
+        return "BSRow{" +
                 "id='" + id + '\'' +
                 '}';
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRowContent.java
similarity index 79%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRowContent.java
index 84a7decec3..bc5868f109 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRowContent.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlTransient;
@@ -27,13 +27,13 @@ import org.apache.isis.applib.annotation.Programmatic;
  * Common superclass for any content of a row.
  *
  * <p>
- *     Most commonly the content of a row is {@link BS3Col col}umns, but it may be either of the
- *     {@link BS3ClearFix clearfix} classes.
+ *     Most commonly the content of a row is {@link BSCol col}umns, but it may be either of the
+ *     {@link BSClearFix clearfix} classes.
  * </p>
  *
  * @since 1.x {@index}
  */
-public abstract class BS3RowContent extends BS3ElementAbstract {
+public abstract class BSRowContent extends BSElementAbstract {
 
     private static final long serialVersionUID = 1L;
 
@@ -52,7 +52,7 @@ public abstract class BS3RowContent extends BS3ElementAbstract {
     }
 
 
-    private BS3RowContentOwner owner;
+    private BSRowContentOwner owner;
 
     /**
      * Owner.
@@ -62,18 +62,18 @@ public abstract class BS3RowContent extends BS3ElementAbstract {
      * </p>
      */
     @XmlTransient
-    public BS3RowContentOwner getOwner() {
+    public BSRowContentOwner getOwner() {
         return owner;
     }
 
-    public void setOwner(final BS3RowContentOwner owner) {
+    public void setOwner(final BSRowContentOwner owner) {
         this.owner = owner;
     }
 
     @Override
     @XmlTransient
     @Programmatic
-    public BS3Grid getGrid() {
+    public BSGrid getGrid() {
         return getOwner().getGrid();
     }
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRowContentOwner.java
similarity index 88%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRowContentOwner.java
index a2e754215c..e56001b9a4 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRowContentOwner.java
@@ -16,13 +16,13 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import org.apache.isis.applib.layout.component.Owner;
 
 /**
  * @since 1.x {@index}
  */
-public interface BS3RowContentOwner extends Owner, WithinGrid {
+public interface BSRowContentOwner extends Owner, WithinGrid {
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRowOwner.java
similarity index 87%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRowOwner.java
index 1062ef8615..ff2c98ff2a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSRowOwner.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.util.List;
 
@@ -25,7 +25,7 @@ import org.apache.isis.applib.layout.component.Owner;
 /**
  * @since 1.x {@index}
  */
-public interface BS3RowOwner extends Owner, WithinGrid {
+public interface BSRowOwner extends Owner, WithinGrid {
 
-    List<BS3Row> getRows();
+    List<BSRow> getRows();
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTab.java
similarity index 83%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTab.java
index 6c4a282428..c72cf49aaf 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTab.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -35,10 +35,10 @@ import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
 
 /**
- * Represents a tab within a {@link BS3TabGroup tab group}.
+ * Represents a tab within a {@link BSTabGroup tab group}.
  *
  * <p>
- *     They simply contain one or more {@link BS3Row row}s.
+ *     They simply contain one or more {@link BSRow row}s.
  * </p>
  *
  * @since 1.x {@index}
@@ -50,7 +50,7 @@ import org.apache.isis.applib.layout.component.PropertyLayoutData;
                 "rows"
         }
         )
-public class BS3Tab extends BS3ElementAbstract implements BS3RowOwner {
+public class BSTab extends BSElementAbstract implements BSRowOwner {
 
     private static final long serialVersionUID = 1L;
 
@@ -65,22 +65,22 @@ public class BS3Tab extends BS3ElementAbstract implements BS3RowOwner {
     }
 
 
-    private List<BS3Row> rows = new ArrayList<>();
+    private List<BSRow> rows = new ArrayList<>();
 
     // no wrapper
     @Override
     @XmlElement(name = "row", required = true)
-    public List<BS3Row> getRows() {
+    public List<BSRow> getRows() {
         return rows;
     }
 
-    public void setRows(final List<BS3Row> rows) {
+    public void setRows(final List<BSRow> rows) {
         this.rows = rows;
     }
 
 
 
-    private BS3TabOwner owner;
+    private BSTabOwner owner;
 
     /**
      * Owner.
@@ -90,25 +90,25 @@ public class BS3Tab extends BS3ElementAbstract implements BS3RowOwner {
      * </p>
      */
     @XmlTransient
-    public BS3TabOwner getOwner() {
+    public BSTabOwner getOwner() {
         return owner;
     }
 
-    public void setOwner(final BS3TabOwner owner) {
+    public void setOwner(final BSTabOwner owner) {
         this.owner = owner;
     }
 
 
     public static class Predicates {
-        public static Predicate<BS3Tab> notEmpty() {
+        public static Predicate<BSTab> notEmpty() {
             final AtomicBoolean visitingTheNode = new AtomicBoolean(false);
             final AtomicBoolean foundContent = new AtomicBoolean(false);
 
-            return new Predicate<BS3Tab>() {
+            return new Predicate<BSTab>() {
                 @Override
-                public boolean test(final BS3Tab thisBs3Tab) {
-                    final BS3Grid owningGrid = thisBs3Tab.getGrid();
-                    owningGrid.visit(new BS3Grid.VisitorAdapter() {
+                public boolean test(final BSTab thisBs3Tab) {
+                    final BSGrid owningGrid = thisBs3Tab.getGrid();
+                    owningGrid.visit(new BSGrid.VisitorAdapter() {
 
                         /**
                          * if found the tab, then reset 'foundContent' to false, and then use 'visitingTheNode' as
@@ -117,14 +117,14 @@ public class BS3Tab extends BS3ElementAbstract implements BS3RowOwner {
                          * 'foundContent' flag.
                          */
                         @Override
-                        public void preVisit(final BS3Tab bs3Tab) {
+                        public void preVisit(final BSTab bs3Tab) {
                             if(bs3Tab == thisBs3Tab) {
                                 foundContent.set(false);
                                 visitingTheNode.set(true);
                             }
                         }
 
-                        @Override public void postVisit(final BS3Tab bs3Tab) {
+                        @Override public void postVisit(final BSTab bs3Tab) {
                             if(bs3Tab == thisBs3Tab) {
                                 visitingTheNode.set(false);
                             }
@@ -167,12 +167,12 @@ public class BS3Tab extends BS3ElementAbstract implements BS3RowOwner {
     @Override
     @XmlTransient
     @Programmatic
-    public BS3Grid getGrid() {
+    public BSGrid getGrid() {
         return getOwner().getGrid();
     }
 
     @Override public String toString() {
-        return "BS3Tab{" +
+        return "BSTab{" +
                 "name='" + name + '\'' +
                 '}';
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTabGroup.java
similarity index 85%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTabGroup.java
index de7eaffc30..a633a008d2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTabGroup.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -29,7 +29,7 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Programmatic;
 
 /**
- * Represents a tab group containing one or more {@link BS3Tab tab}s.
+ * Represents a tab group containing one or more {@link BSTab tab}s.
  *
  * @since 1.x {@index}
  */
@@ -40,7 +40,7 @@ import org.apache.isis.applib.annotation.Programmatic;
                 "metadataError"
         }
         )
-public class BS3TabGroup extends BS3ElementAbstract implements BS3TabOwner {
+public class BSTabGroup extends BSElementAbstract implements BSTabOwner {
 
     private static final long serialVersionUID = 1L;
 
@@ -51,7 +51,7 @@ public class BS3TabGroup extends BS3ElementAbstract implements BS3TabOwner {
      * Whether this tab group should be used to hold any unreferenced collections (contributed or &quot;native&quot;).
      *
      * <p>
-     *     Any layout must have precisely one tab group or {@link BS3Col col} that has this attribute set.
+     *     Any layout must have precisely one tab group or {@link BSCol col} that has this attribute set.
      * </p>
      */
     @XmlAttribute(required = false)
@@ -81,21 +81,21 @@ public class BS3TabGroup extends BS3ElementAbstract implements BS3TabOwner {
 
 
 
-    private List<BS3Tab> tabs = new ArrayList<>();
+    private List<BSTab> tabs = new ArrayList<>();
 
     // no wrapper; required=false because may be auto-generated
     @Override
     @XmlElement(name = "tab", required = false)
-    public List<BS3Tab> getTabs() {
+    public List<BSTab> getTabs() {
         return tabs;
     }
 
-    public void setTabs(final List<BS3Tab> tabs) {
+    public void setTabs(final List<BSTab> tabs) {
         this.tabs = tabs;
     }
 
 
-    private BS3TabGroupOwner owner;
+    private BSTabGroupOwner owner;
 
     /**
      * Owner.
@@ -105,11 +105,11 @@ public class BS3TabGroup extends BS3ElementAbstract implements BS3TabOwner {
      * </p>
      */
     @XmlTransient
-    public BS3TabGroupOwner getOwner() {
+    public BSTabGroupOwner getOwner() {
         return owner;
     }
 
-    public void setOwner(final BS3TabGroupOwner owner) {
+    public void setOwner(final BSTabGroupOwner owner) {
         this.owner = owner;
     }
 
@@ -132,7 +132,7 @@ public class BS3TabGroup extends BS3ElementAbstract implements BS3TabOwner {
     @Override
     @XmlTransient
     @Programmatic
-    public BS3Grid getGrid() {
+    public BSGrid getGrid() {
         return getOwner().getGrid();
     }
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTabGroupOwner.java
similarity index 85%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTabGroupOwner.java
index cef45277d6..60c8307f3d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTabGroupOwner.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.util.List;
 
@@ -25,7 +25,7 @@ import org.apache.isis.applib.layout.component.Owner;
 /**
  * @since 1.x {@index}
  */
-public interface BS3TabGroupOwner extends Owner, WithinGrid {
+public interface BSTabGroupOwner extends Owner, WithinGrid {
 
-    List<BS3TabGroup> getTabGroups();
+    List<BSTabGroup> getTabGroups();
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTabOwner.java
similarity index 87%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTabOwner.java
index 52c02438e8..e913d75bd3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/BSTabOwner.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.util.List;
 
@@ -25,7 +25,7 @@ import org.apache.isis.applib.layout.component.Owner;
 /**
  * @since 1.x {@index}
  */
-public interface BS3TabOwner extends Owner, WithinGrid {
+public interface BSTabOwner extends Owner, WithinGrid {
 
-    List<BS3Tab> getTabs();
+    List<BSTab> getTabs();
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/HasCssId.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/HasCssId.java
similarity index 94%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/HasCssId.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/HasCssId.java
index e2de04d8c1..b9e382626e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/HasCssId.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/HasCssId.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 /**
  * @since 2.0 {@index}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/Size.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/Size.java
similarity index 95%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/Size.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/Size.java
index 3206974e53..6f470d588f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/Size.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/Size.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 /**
  * As per <a href="https://getbootstrap.com/docs/4.6/layout/grid/#grid-options">grid options</a>
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpan.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/SizeSpan.java
similarity index 98%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpan.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/SizeSpan.java
index a5b98137d6..e9ce3f6791 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpan.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/SizeSpan.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import java.io.Serializable;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/WithinGrid.java
similarity index 92%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/WithinGrid.java
index 532e9a1bef..f62894889c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/WithinGrid.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.grid.bootstrap3;
+package org.apache.isis.applib.layout.grid.bootstrap;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
@@ -26,5 +26,5 @@ import org.apache.isis.applib.annotation.Programmatic;
 public interface WithinGrid {
 
     @Programmatic
-    BS3Grid getGrid();
+    BSGrid getGrid();
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/package-info.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/package-info.java
similarity index 96%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/package-info.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/package-info.java
index 6fcc0e7333..7e48f7041b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/package-info.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap/package-info.java
@@ -34,4 +34,4 @@
                 @javax.xml.bind.annotation.XmlNs(
                         namespaceURI = "http://isis.apache.org/applib/layout/grid/bootstrap3", prefix = "bs3")
         })
-package org.apache.isis.applib.layout.grid.bootstrap3;
\ No newline at end of file
+package org.apache.isis.applib.layout.grid.bootstrap;
\ No newline at end of file
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenu.java
similarity index 90%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenu.java
index 20348bc082..b0858dd154 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenu.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.menubars.bootstrap3;
+package org.apache.isis.applib.layout.menubars.bootstrap;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -45,14 +45,14 @@ import lombok.ToString;
         }
         )
 @ToString(of = "named")
-public class BS3Menu implements Menu, Serializable {
+public class BSMenu implements Menu, Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    public BS3Menu() {
+    public BSMenu() {
     }
 
-    public BS3Menu(String named) {
+    public BSMenu(String named) {
         this.named = named;
     }
 
@@ -84,11 +84,11 @@ public class BS3Menu implements Menu, Serializable {
 
 
 
-    private List<BS3MenuSection> sections = new ArrayList<>();
+    private List<BSMenuSection> sections = new ArrayList<>();
 
     // no wrapper
     @XmlElement(name = "section", required = true)
-    public List<BS3MenuSection> getSections() {
+    public List<BSMenuSection> getSections() {
         return sections;
     }
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenuBar.java
similarity index 85%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenuBar.java
index 7758cef39f..4241045bfb 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenuBar.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.menubars.bootstrap3;
+package org.apache.isis.applib.layout.menubars.bootstrap;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -40,23 +40,23 @@ import org.apache.isis.applib.layout.menubars.MenuBar;
                 "menus"
         }
         )
-public class BS3MenuBar implements MenuBar, Serializable {
+public class BSMenuBar implements MenuBar, Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    public BS3MenuBar() {
+    public BSMenuBar() {
     }
 
 
-    private List<BS3Menu> menus = new ArrayList<>();
+    private List<BSMenu> menus = new ArrayList<>();
 
     // no wrapper
     @XmlElement(name = "menu", required = true)
-    public List<BS3Menu> getMenus() {
+    public List<BSMenu> getMenus() {
         return menus;
     }
 
-    public void setMenus(List<BS3Menu> menus) {
+    public void setMenus(List<BSMenu> menus) {
         this.menus = menus;
     }
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenuBars.java
similarity index 65%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenuBars.java
index 16aa228414..ec77c858c8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenuBars.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.menubars.bootstrap3;
+package org.apache.isis.applib.layout.menubars.bootstrap;
 
 import java.util.List;
 import java.util.function.Consumer;
@@ -46,45 +46,45 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
                 "metadataError"
         }
         )
-public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBarsAbstract {
+public class BSMenuBars extends org.apache.isis.applib.layout.menubars.MenuBarsAbstract {
 
     private static final long serialVersionUID = 1L;
 
-    public BS3MenuBars() {
+    public BSMenuBars() {
     }
 
-    private BS3MenuBar primary = new BS3MenuBar();
+    private BSMenuBar primary = new BSMenuBar();
 
-    public BS3MenuBar getPrimary() {
+    public BSMenuBar getPrimary() {
         return primary;
     }
 
-    public void setPrimary(final BS3MenuBar primary) {
+    public void setPrimary(final BSMenuBar primary) {
         this.primary = primary;
     }
 
-    private BS3MenuBar secondary = new BS3MenuBar();
+    private BSMenuBar secondary = new BSMenuBar();
 
-    public BS3MenuBar getSecondary() {
+    public BSMenuBar getSecondary() {
         return secondary;
     }
 
-    public void setSecondary(final BS3MenuBar secondary) {
+    public void setSecondary(final BSMenuBar secondary) {
         this.secondary = secondary;
     }
 
-    private BS3MenuBar tertiary = new BS3MenuBar();
+    private BSMenuBar tertiary = new BSMenuBar();
 
-    public BS3MenuBar getTertiary() {
+    public BSMenuBar getTertiary() {
         return tertiary;
     }
 
-    public void setTertiary(final BS3MenuBar tertiary) {
+    public void setTertiary(final BSMenuBar tertiary) {
         this.tertiary = tertiary;
     }
 
     @Override
-    public BS3MenuBar menuBarFor(final DomainServiceLayout.MenuBar menuBar) {
+    public BSMenuBar menuBarFor(final DomainServiceLayout.MenuBar menuBar) {
         switch (menuBar) {
         case PRIMARY:
             return getPrimary();
@@ -101,47 +101,47 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
     }
 
     public interface Visitor extends Consumer<ServiceActionLayoutData> {
-        void preVisit(final BS3MenuBar menuBar);
-        void visit(final BS3MenuBar menuBar);
-        void postVisit(final BS3MenuBar menuBar);
+        void preVisit(final BSMenuBar menuBar);
+        void visit(final BSMenuBar menuBar);
+        void postVisit(final BSMenuBar menuBar);
 
-        void preVisit(final BS3Menu menu);
-        void visit(final BS3Menu menu);
-        void postVisit(final BS3Menu menu);
+        void preVisit(final BSMenu menu);
+        void visit(final BSMenu menu);
+        void postVisit(final BSMenu menu);
 
-        void preVisit(final BS3MenuSection menuSection);
-        void visit(final BS3MenuSection section);
-        void postVisit(final BS3MenuSection menuSection);
+        void preVisit(final BSMenuSection menuSection);
+        void visit(final BSMenuSection section);
+        void postVisit(final BSMenuSection menuSection);
     }
 
-    public static class VisitorAdapter implements BS3MenuBars.Visitor {
-        @Override public void preVisit(final BS3MenuBar menuBar) { }
-        @Override public void visit(final BS3MenuBar menuBar) { }
-        @Override public void postVisit(final BS3MenuBar menuBar) { }
+    public static class VisitorAdapter implements BSMenuBars.Visitor {
+        @Override public void preVisit(final BSMenuBar menuBar) { }
+        @Override public void visit(final BSMenuBar menuBar) { }
+        @Override public void postVisit(final BSMenuBar menuBar) { }
 
-        @Override public void preVisit(final BS3Menu menu) { }
-        @Override public void visit(final BS3Menu menu) { }
-        @Override public void postVisit(final BS3Menu menu) { }
+        @Override public void preVisit(final BSMenu menu) { }
+        @Override public void visit(final BSMenu menu) { }
+        @Override public void postVisit(final BSMenu menu) { }
 
-        @Override public void preVisit(final BS3MenuSection menuSection) { }
-        @Override public void visit(final BS3MenuSection section) { }
-        @Override public void postVisit(final BS3MenuSection menuSection) { }
+        @Override public void preVisit(final BSMenuSection menuSection) { }
+        @Override public void visit(final BSMenuSection section) { }
+        @Override public void postVisit(final BSMenuSection menuSection) { }
 
         @Override public void accept(final ServiceActionLayoutData serviceActionLayoutData) { }
 
         // -- PREDEFINED SHORTCUTS
 
-        public static VisitorAdapter visitingMenuSections(Consumer<BS3MenuSection> onVisit) {
+        public static VisitorAdapter visitingMenuSections(Consumer<BSMenuSection> onVisit) {
             return new VisitorAdapter() {
-                @Override public void visit(final BS3MenuSection section) {
+                @Override public void visit(final BSMenuSection section) {
                     onVisit.accept(section);
                 }
             };
         }
 
-        public static VisitorAdapter visitingMenus(Consumer<BS3Menu> onVisit) {
+        public static VisitorAdapter visitingMenus(Consumer<BSMenu> onVisit) {
             return new VisitorAdapter() {
-                @Override public void visit(final BS3Menu menu) {
+                @Override public void visit(final BSMenu menu) {
                     onVisit.accept(menu);
                 }
             };
@@ -156,7 +156,7 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
         traverseMenuBar(getTertiary(), visitor);
     }
 
-    private void traverseMenuBar(final BS3MenuBar menuBar, final Consumer<ServiceActionLayoutData> visitor) {
+    private void traverseMenuBar(final BSMenuBar menuBar, final Consumer<ServiceActionLayoutData> visitor) {
 
         final Visitor bs3Visitor = visitor instanceof Visitor ? (Visitor) visitor : null;
 
@@ -165,7 +165,7 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
             bs3Visitor.visit(menuBar);
         }
 
-        for (BS3Menu menu : menuBar.getMenus()) {
+        for (BSMenu menu : menuBar.getMenus()) {
             traverseMenu(menu, visitor);
         }
 
@@ -174,7 +174,7 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
         }
     }
 
-    private void traverseMenu(final BS3Menu menu, final Consumer<ServiceActionLayoutData> visitor) {
+    private void traverseMenu(final BSMenu menu, final Consumer<ServiceActionLayoutData> visitor) {
 
         final Visitor bs3Visitor = visitor instanceof Visitor ? (Visitor) visitor : null;
 
@@ -183,8 +183,8 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
             bs3Visitor.visit(menu);
         }
 
-        final List<BS3MenuSection> sections = menu.getSections();
-        for (BS3MenuSection section : sections) {
+        final List<BSMenuSection> sections = menu.getSections();
+        for (BSMenuSection section : sections) {
             traverseSection(section, visitor);
         }
 
@@ -193,7 +193,7 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
         }
     }
 
-    private void traverseSection(final BS3MenuSection section, final Consumer<ServiceActionLayoutData> visitor) {
+    private void traverseSection(final BSMenuSection section, final Consumer<ServiceActionLayoutData> visitor) {
 
         final Visitor bs3Visitor = visitor instanceof Visitor ? (Visitor) visitor : null;
         if(bs3Visitor != null) {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenuSection.java
similarity index 90%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenuSection.java
index 9af5957951..2316192049 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/BSMenuSection.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.layout.menubars.bootstrap3;
+package org.apache.isis.applib.layout.menubars.bootstrap;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -31,7 +31,7 @@ import org.apache.isis.applib.layout.menubars.MenuSection;
 
 
 /**
- * Corresponds to a domain service that contributes its serviceActions under a particular {@link BS3MenuBar}.
+ * Corresponds to a domain service that contributes its serviceActions under a particular {@link BSMenuBar}.
  *
  * @since 1.x {@index}
  */
@@ -42,11 +42,11 @@ import org.apache.isis.applib.layout.menubars.MenuSection;
                 "serviceActions"
         }
         )
-public class BS3MenuSection implements MenuSection, Serializable, ServiceActionLayoutDataOwner {
+public class BSMenuSection implements MenuSection, Serializable, ServiceActionLayoutDataOwner {
 
     private static final long serialVersionUID = 1L;
 
-    public BS3MenuSection() {
+    public BSMenuSection() {
     }
 
     private String named;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/package-info.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/package-info.java
similarity index 96%
rename from api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/package-info.java
rename to api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/package-info.java
index a3ea1b7782..8cbe8588a0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/package-info.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap/package-info.java
@@ -35,4 +35,4 @@
                         namespaceURI = "http://isis.apache.org/applib/layout/menubars/bootstrap3", prefix = "mb3")
         }
         )
-package org.apache.isis.applib.layout.menubars.bootstrap3;
\ No newline at end of file
+package org.apache.isis.applib.layout.menubars.bootstrap;
\ No newline at end of file
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java
index 0414fa54bb..f0148d7f7c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java
@@ -18,10 +18,10 @@
  */
 package org.apache.isis.applib.services.menu;
 
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBars;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuBars;
 
 /**
- * Returns the {@link BS3MenuBars} instance (bootstrap3-specific subtype of
+ * Returns the {@link BSMenuBars} instance (bootstrap3-specific subtype of
  * {@link org.apache.isis.applib.layout.menubars.MenuBars}, for the UI.
  *
  * <p>
@@ -49,9 +49,9 @@ public interface MenuBarsLoaderService {
     boolean supportsReloading();
 
     /**
-     * Returns a new instance of a {@link BS3MenuBars} if possible,
+     * Returns a new instance of a {@link BSMenuBars} if possible,
      * else <tt>null</tt>.
      */
-    BS3MenuBars menuBars();
+    BSMenuBars menuBars();
 
 }
diff --git a/api/applib/src/test/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ColTest.java b/api/applib/src/test/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ColTest.java
index ea1eb3472a..0418b924a1 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ColTest.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ColTest.java
@@ -25,12 +25,16 @@ import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
+import org.apache.isis.applib.layout.grid.bootstrap.Size;
+import org.apache.isis.applib.layout.grid.bootstrap.SizeSpan;
+
 public class BS3ColTest {
 
-    BS3Col bs3Col;
+    BSCol bs3Col;
     @Before
     public void setUp() throws Exception {
-        bs3Col = new BS3Col();
+        bs3Col = new BSCol();
     }
 
     @Test
diff --git a/api/applib/src/test/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpanTest.java b/api/applib/src/test/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpanTest.java
index 47c4c02a57..db2a42c01e 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpanTest.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpanTest.java
@@ -25,6 +25,9 @@ import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
+import org.apache.isis.applib.layout.grid.bootstrap.Size;
+import org.apache.isis.applib.layout.grid.bootstrap.SizeSpan;
+
 public class SizeSpanTest {
 
     SizeSpan ss;
diff --git a/api/applib/src/test/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars_roundtrip_Test.java b/api/applib/src/test/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars_roundtrip_Test.java
index 8253113d2e..0c29e4c274 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars_roundtrip_Test.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars_roundtrip_Test.java
@@ -25,6 +25,9 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenu;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuBars;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuSection;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.jaxb.JaxbService.Simple;
 
@@ -46,17 +49,17 @@ public class BS3MenuBars_roundtrip_Test {
     public void happyCase() throws Exception {
 
         // given
-        BS3MenuBars menuBars = new BS3MenuBars();
-        BS3Menu menu = new BS3Menu();
+        BSMenuBars menuBars = new BSMenuBars();
+        BSMenu menu = new BSMenu();
         menu.setNamed("Parties");
 
-        BS3MenuSection organisationMenu = new BS3MenuSection();
+        BSMenuSection organisationMenu = new BSMenuSection();
         organisationMenu.getServiceActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "findByReference"));
         organisationMenu.getServiceActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "findByName"));
         organisationMenu.getServiceActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "create"));
         menu.getSections().add(organisationMenu);
 
-        BS3MenuSection personMenu = new BS3MenuSection();
+        BSMenuSection personMenu = new BSMenuSection();
         personMenu.getServiceActions().add(new ServiceActionLayoutData("parties.PersonMenu", "findByUsername"));
         personMenu.getServiceActions().add(new ServiceActionLayoutData("parties.PersonMenu", "create"));
         menu.getSections().add(personMenu);
@@ -67,8 +70,8 @@ public class BS3MenuBars_roundtrip_Test {
         String xml = jaxbService.toXml(menuBars);
 
         // when
-        BS3MenuBars menuBars2 =
-                jaxbService.fromXml(BS3MenuBars.class, xml);
+        BSMenuBars menuBars2 =
+                jaxbService.fromXml(BSMenuBars.class, xml);
 
         // then
         String xml2 = jaxbService.toXml(menuBars2);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
index 02583f6526..af21969242 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
@@ -30,7 +30,7 @@ import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.layout.grid.Grid;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.layout.grid.bootstrap.BSGrid;
 import org.apache.isis.applib.services.grid.GridSystemService;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
@@ -82,7 +82,7 @@ public class GridReaderUsingJaxb {
     private void initForTesting() {
         if(jaxbContext==null) {
             try {
-                jaxbContext = JAXBContext.newInstance(BS3Grid.class);
+                jaxbContext = JAXBContext.newInstance(BSGrid.class);
             } catch (JAXBException e) {
                 // leave as null
             }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBootstrap.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBootstrap.java
index 512bd868fa..a88d6d7b27 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBootstrap.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBootstrap.java
@@ -44,12 +44,12 @@ import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
 import org.apache.isis.applib.layout.component.FieldSet;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.applib.layout.grid.Grid;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
-import org.apache.isis.applib.layout.grid.bootstrap3.Size;
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
+import org.apache.isis.applib.layout.grid.bootstrap.BSGrid;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTab;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTabGroup;
+import org.apache.isis.applib.layout.grid.bootstrap.Size;
 import org.apache.isis.applib.mixins.layout.LayoutMixinConstants;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.jaxb.JaxbService;
@@ -89,7 +89,7 @@ import lombok.extern.log4j.Log4j2;
 @Qualifier("Bootstrap")
 @Log4j2
 public class GridSystemServiceBootstrap
-extends GridSystemServiceAbstract<BS3Grid> {
+extends GridSystemServiceAbstract<BSGrid> {
 
     public static final String TNS = "http://isis.apache.org/applib/layout/grid/bootstrap3";
     public static final String SCHEMA_LOCATION = "http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd";
@@ -109,8 +109,8 @@ extends GridSystemServiceAbstract<BS3Grid> {
     }
 
     @Override
-    public Class<BS3Grid> gridImplementation() {
-        return BS3Grid.class;
+    public Class<BSGrid> gridImplementation() {
+        return BSGrid.class;
     }
 
     @Override
@@ -125,14 +125,14 @@ extends GridSystemServiceAbstract<BS3Grid> {
 
 
     @Override
-    public BS3Grid defaultGrid(final Class<?> domainClass) {
+    public BSGrid defaultGrid(final Class<?> domainClass) {
 
         try {
             final String content = _Resources.loadAsStringUtf8(getClass(), "GridFallbackLayout.xml");
             return Optional.ofNullable(content)
                     .map(xml -> gridReader.loadGrid(xml))
-                    .filter(BS3Grid.class::isInstance)
-                    .map(BS3Grid.class::cast)
+                    .filter(BSGrid.class::isInstance)
+                    .map(BSGrid.class::cast)
                     .map(bs3Grid -> withDomainClass(bs3Grid, domainClass))
                     .orElseGet(() -> fallback(domainClass))
                     ;
@@ -145,24 +145,24 @@ extends GridSystemServiceAbstract<BS3Grid> {
     // only ever called if fail to load DefaultGrid.layout.xml,
     // which *really* shouldn't happen
     //
-    private BS3Grid fallback(final Class<?> domainClass) {
-        final BS3Grid bs3Grid = withDomainClass(new BS3Grid(), domainClass);
+    private BSGrid fallback(final Class<?> domainClass) {
+        final BSGrid bs3Grid = withDomainClass(new BSGrid(), domainClass);
 
-        final BS3Row headerRow = new BS3Row();
+        final BSRow headerRow = new BSRow();
         bs3Grid.getRows().add(headerRow);
-        final BS3Col headerRowCol = new BS3Col();
+        final BSCol headerRowCol = new BSCol();
         headerRowCol.setSpan(12);
         headerRowCol.setUnreferencedActions(true);
         headerRowCol.setDomainObject(new DomainObjectLayoutData());
         headerRow.getCols().add(headerRowCol);
 
-        final BS3Row propsRow = new BS3Row();
+        final BSRow propsRow = new BSRow();
         bs3Grid.getRows().add(propsRow);
 
         // if no layout hints
         addFieldSetsToColumn(propsRow, 4, Arrays.asList("General"), true);
 
-        final BS3Col col = new BS3Col();
+        final BSCol col = new BSCol();
         col.setUnreferencedCollections(true);
         col.setSpan(12);
         propsRow.getCols().add(col);
@@ -170,19 +170,19 @@ extends GridSystemServiceAbstract<BS3Grid> {
         return bs3Grid;
     }
 
-    private static BS3Grid withDomainClass(final BS3Grid bs3Grid, final Class<?> domainClass) {
+    private static BSGrid withDomainClass(final BSGrid bs3Grid, final Class<?> domainClass) {
         bs3Grid.setDomainClass(domainClass);
         return bs3Grid;
     }
 
     static void addFieldSetsToColumn(
-            final BS3Row propsRow,
+            final BSRow propsRow,
             final int span,
             final List<String> memberGroupNames,
             final boolean unreferencedProperties) {
 
         if(span > 0 || unreferencedProperties) {
-            final BS3Col col = new BS3Col();
+            final BSCol col = new BSCol();
             col.setSpan(span); // in case we are here because of 'unreferencedProperties' needs setting
             propsRow.getCols().add(col);
             final List<String> leftMemberGroups = memberGroupNames;
@@ -204,7 +204,7 @@ extends GridSystemServiceAbstract<BS3Grid> {
             final Grid grid,
             final Class<?> domainClass) {
 
-        val bs3Grid = (BS3Grid) grid;
+        val bs3Grid = (BSGrid) grid;
         val objectSpec = specificationLoader.specForTypeElseFail(domainClass);
 
         val oneToOneAssociationById = ObjectMember.mapById(objectSpec.streamProperties(MixedIn.INCLUDED));
@@ -335,7 +335,7 @@ extends GridSystemServiceAbstract<BS3Grid> {
             final List<String> sortedMissingCollectionIds =
                     _Lists.map(sortedCollections, ObjectAssociation::getId);
 
-            final BS3TabGroup bs3TabGroup = gridModel.getTabGroupForUnreferencedCollectionsRef();
+            final BSTabGroup bs3TabGroup = gridModel.getTabGroupForUnreferencedCollectionsRef();
             if(bs3TabGroup != null) {
                 addCollectionsTo(
                         bs3TabGroup,
@@ -343,7 +343,7 @@ extends GridSystemServiceAbstract<BS3Grid> {
                         objectSpec,
                         layoutDataFactory::createCollectionLayoutData);
             } else {
-                final BS3Col bs3Col = gridModel.getColForUnreferencedCollectionsRef();
+                final BSCol bs3Col = gridModel.getColForUnreferencedCollectionsRef();
                 if(bs3Col != null) {
                     addCollectionsTo(
                         bs3Col,
@@ -451,7 +451,7 @@ extends GridSystemServiceAbstract<BS3Grid> {
         }
 
         if(!missingActionIds.isEmpty()) {
-            final BS3Col bs3Col = gridModel.getColForUnreferencedActionsRef();
+            final BSCol bs3Col = gridModel.getColForUnreferencedActionsRef();
             if(bs3Col != null) {
                 addActionsTo(
                         bs3Col,
@@ -496,7 +496,7 @@ extends GridSystemServiceAbstract<BS3Grid> {
     }
 
     private void addCollectionsTo(
-            final BS3Col tabRowCol,
+            final BSCol tabRowCol,
             final Collection<String> collectionIds,
             final Function<String, CollectionLayoutData> layoutFactory,
             final BiConsumer<String, CollectionLayoutData> onNewLayoutData) {
@@ -509,13 +509,13 @@ extends GridSystemServiceAbstract<BS3Grid> {
     }
 
     private void addCollectionsTo(
-            final BS3TabGroup tabGroup,
+            final BSTabGroup tabGroup,
             final Collection<String> collectionIds,
             final ObjectSpecification objectSpec,
             final Function<String, CollectionLayoutData> layoutFactory) {
 
         for (final String collectionId : collectionIds) {
-            final BS3Tab bs3Tab = new BS3Tab();
+            final BSTab bs3Tab = new BSTab();
 
             val feature = objectSpec.getCollectionElseFail(collectionId);
             val featureCanonicalFriendlyName = feature.getCanonicalFriendlyName();
@@ -524,11 +524,11 @@ extends GridSystemServiceAbstract<BS3Grid> {
             tabGroup.getTabs().add(bs3Tab);
             bs3Tab.setOwner(tabGroup);
 
-            final BS3Row tabRow = new BS3Row();
+            final BSRow tabRow = new BSRow();
             tabRow.setOwner(bs3Tab);
             bs3Tab.getRows().add(tabRow);
 
-            final BS3Col tabRowCol = new BS3Col();
+            final BSCol tabRowCol = new BSCol();
             tabRowCol.setSpan(12);
             tabRowCol.setSize(Size.MD);
             tabRowCol.setOwner(tabRow);
@@ -540,7 +540,7 @@ extends GridSystemServiceAbstract<BS3Grid> {
     }
 
     protected void addActionsTo(
-            final BS3Col bs3Col,
+            final BSCol bs3Col,
             final Collection<String> actionIds,
             final Function<String, ActionLayoutData> layoutFactory,
             final BiConsumer<String, ActionLayoutData> onNewLayoutData) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/_GridModel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/_GridModel.java
index 653ef6f9bf..2d3a16db90 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/_GridModel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/_GridModel.java
@@ -24,10 +24,10 @@ import java.util.LinkedHashSet;
 import java.util.Optional;
 
 import org.apache.isis.applib.layout.component.FieldSet;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
+import org.apache.isis.applib.layout.grid.bootstrap.BSGrid;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTabGroup;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.core.metamodel.facets.members.layout.group.GroupIdAndName;
@@ -44,15 +44,15 @@ import lombok.val;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 final class _GridModel {
         private final LinkedHashSet<String> allIds = _Sets.newLinkedHashSet();
-        private final LinkedHashMap<String, BS3Row> rows = _Maps.newLinkedHashMap();
-        private final LinkedHashMap<String, BS3Col> cols = _Maps.newLinkedHashMap();
+        private final LinkedHashMap<String, BSRow> rows = _Maps.newLinkedHashMap();
+        private final LinkedHashMap<String, BSCol> cols = _Maps.newLinkedHashMap();
         private final LinkedHashMap<String, FieldSet> fieldSets = _Maps.newLinkedHashMap();
 
-        @Getter private BS3Col colForUnreferencedActionsRef;
-        @Getter private BS3Col colForUnreferencedCollectionsRef;
+        @Getter private BSCol colForUnreferencedActionsRef;
+        @Getter private BSCol colForUnreferencedCollectionsRef;
         @Getter private FieldSet fieldSetForUnreferencedActionsRef;
         @Getter private FieldSet fieldSetForUnreferencedPropertiesRef;
-        @Getter private BS3TabGroup tabGroupForUnreferencedCollectionsRef;
+        @Getter private BSTabGroup tabGroupForUnreferencedCollectionsRef;
 
         private boolean gridErrorsDetected = false;
 
@@ -78,13 +78,13 @@ final class _GridModel {
          * @param bs3Grid
          * @return empty if not valid
          */
-        public static Optional<_GridModel> createFrom(BS3Grid bs3Grid) {
+        public static Optional<_GridModel> createFrom(BSGrid bs3Grid) {
 
             val gridModel = new _GridModel();
 
-            bs3Grid.visit(new BS3Grid.VisitorAdapter(){
+            bs3Grid.visit(new BSGrid.VisitorAdapter(){
                 @Override
-                public void visit(final BS3Row bs3Row) {
+                public void visit(final BSRow bs3Row) {
                     final String id = bs3Row.getId();
                     if(id == null) {
                         return;
@@ -98,7 +98,7 @@ final class _GridModel {
                 }
 
                 @Override
-                public void visit(final BS3Col bs3Col) {
+                public void visit(final BSCol bs3Col) {
                     final String id = bs3Col.getId();
                     if(id == null) {
                         return;
@@ -133,10 +133,10 @@ final class _GridModel {
                 return Optional.empty();
             }
 
-            bs3Grid.visit(new BS3Grid.VisitorAdapter(){
+            bs3Grid.visit(new BSGrid.VisitorAdapter(){
 
                 @Override
-                public void visit(final BS3Col bs3Col) {
+                public void visit(final BSCol bs3Col) {
                     if(isSet(bs3Col.isUnreferencedActions())) {
                         if(gridModel.colForUnreferencedActionsRef != null) {
                             bs3Col.setMetadataError("More than one col with 'unreferencedActions' attribute set");
@@ -178,7 +178,7 @@ final class _GridModel {
                 }
 
                 @Override
-                public void visit(final BS3TabGroup bs3TabGroup) {
+                public void visit(final BSTabGroup bs3TabGroup) {
                     if(isSet(bs3TabGroup.isUnreferencedCollections())) {
                         if(gridModel.tabGroupForUnreferencedCollectionsRef != null) {
                             bs3TabGroup.setMetadataError("More than one tabgroup with 'unreferencedCollections' attribute set");
@@ -212,11 +212,11 @@ final class _GridModel {
 
         }
 
-        private void putRow(String id, BS3Row bs3Row) {
+        private void putRow(String id, BSRow bs3Row) {
             rows.put(id, bs3Row);
             allIds.add(id);
         }
-        private void putCol(String id, BS3Col bs3Col) {
+        private void putCol(String id, BSCol bs3Col) {
             cols.put(id, bs3Col);
             allIds.add(id);
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java
index 4fe3069130..964f403041 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java
@@ -24,7 +24,7 @@ import java.util.function.Predicate;
 
 import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.layout.grid.bootstrap.BSGrid;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -75,11 +75,11 @@ public final class Facets {
         .orElseGet(OptionalInt::empty);
     }
 
-    public Optional<BS3Grid> bootstrapGrid(
+    public Optional<BSGrid> bootstrapGrid(
             final ObjectSpecification objectSpec, final ManagedObject objectAdapter) {
         return objectSpec.lookupFacet(GridFacet.class)
         .map(gridFacet->gridFacet.getGrid(objectAdapter))
-        .flatMap(grid->_Casts.castTo(BS3Grid.class, grid));
+        .flatMap(grid->_Casts.castTo(BSGrid.class, grid));
     }
 
     public Optional<String> cssClassFor(
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/GridXmlRoundtripTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/GridXmlRoundtripTest.java
index c1b6570af4..4fd262b9f0 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/GridXmlRoundtripTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/GridXmlRoundtripTest.java
@@ -29,11 +29,11 @@ import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
 import org.apache.isis.applib.layout.component.FieldSet;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
+import org.apache.isis.applib.layout.grid.bootstrap.BSGrid;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTab;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTabGroup;
 import org.apache.isis.applib.services.grid.GridService;
 import org.apache.isis.applib.services.jaxb.IsisSchemas;
 import org.apache.isis.applib.services.jaxb.JaxbService;
@@ -60,12 +60,12 @@ extends MetaModelTestAbstract {
     @Test
     void happy_case() throws Exception {
 
-        final BS3Grid bs3Grid = new BS3Grid();
+        final BSGrid bs3Grid = new BSGrid();
 
         // header
-        final BS3Row headerRow = new BS3Row();
+        final BSRow headerRow = new BSRow();
         bs3Grid.getRows().add(headerRow);
-        final BS3Col headerCol = new BS3Col();
+        final BSCol headerCol = new BSCol();
         headerRow.getCols().add(headerCol);
         headerCol.setSpan(12);
 
@@ -78,24 +78,24 @@ extends MetaModelTestAbstract {
         headerCol.getActions().add(deleteActionLayoutData);
 
         // content
-        final BS3Row contentRow = new BS3Row();
+        final BSRow contentRow = new BSRow();
         bs3Grid.getRows().add(contentRow);
 
-        final BS3Col contentCol = new BS3Col();
+        final BSCol contentCol = new BSCol();
         contentRow.getCols().add(contentCol);
         contentCol.setSpan(12);
 
         // a tabgroup containing a 'Common' tab
-        final BS3TabGroup tabGroup = new BS3TabGroup();
+        final BSTabGroup tabGroup = new BSTabGroup();
         contentCol.getTabGroups().add(tabGroup);
-        BS3Tab bs3Tab = new BS3Tab();
+        BSTab bs3Tab = new BSTab();
         tabGroup.getTabs().add(bs3Tab);
         bs3Tab.setName("Common");
 
         // with a left col...
-        final BS3Row tabRow = new BS3Row();
+        final BSRow tabRow = new BSRow();
         bs3Tab.getRows().add(tabRow);
-        final BS3Col tabLeftCol = new BS3Col();
+        final BSCol tabLeftCol = new BSCol();
         tabRow.getCols().add(tabLeftCol);
         tabLeftCol.setSpan(6);
 
@@ -117,7 +117,7 @@ extends MetaModelTestAbstract {
         namePropertyLayoutData.getActions().add(updateNameActionLayoutData);
 
         // and the tab also has a right col...
-        final BS3Col tabRightCol = new BS3Col();
+        final BSCol tabRightCol = new BSCol();
         tabRow.getCols().add(tabRightCol);
         tabRightCol.setSpan(6);
 
@@ -132,7 +132,7 @@ extends MetaModelTestAbstract {
                 _Maps.unmodifiable(Marshaller.JAXB_SCHEMA_LOCATION, schemaLocations));
         println(xml);
 
-        BS3Grid bs3Pageroundtripped = jaxbService.fromXml(BS3Grid.class, xml);
+        BSGrid bs3Pageroundtripped = jaxbService.fromXml(BSGrid.class, xml);
         String xmlRoundtripped = jaxbService.toXml(bs3Pageroundtripped,
                 _Maps.unmodifiable(Marshaller.JAXB_SCHEMA_LOCATION, schemaLocations));
         assertThat(xml, is(equalTo(xmlRoundtripped)));
@@ -143,7 +143,7 @@ extends MetaModelTestAbstract {
         dumpXsd(bs3Grid);
     }
 
-    protected void dumpXsd(final BS3Grid bs3Page) {
+    protected void dumpXsd(final BSGrid bs3Page) {
         Map<String, String> schemas = jaxbService.toXsd(bs3Page, IsisSchemas.INCLUDE);
         for (Map.Entry<String, String> entry : schemas.entrySet()) {
             println(entry.getKey() + ":");
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/menubars/BS3MenuBarsTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/menubars/BS3MenuBarsTest.java
index 5fad4b927c..b211ab2181 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/menubars/BS3MenuBarsTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/menubars/BS3MenuBarsTest.java
@@ -25,7 +25,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBars;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuBars;
 import org.apache.isis.applib.services.jaxb.IsisSchemas;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.jaxb.JaxbService.Simple;
@@ -47,7 +47,7 @@ public class BS3MenuBarsTest {
     @Test
     public void happy_case() throws Exception {
 
-        BS3MenuBars menuBars = jaxbService.fromXml(BS3MenuBars.class,
+        BSMenuBars menuBars = jaxbService.fromXml(BSMenuBars.class,
                 _Resources.loadAsString(getClass(), "menubars.layout.xml", StandardCharsets.UTF_8));
 
         Map<String, String> schemas = jaxbService.toXsd(menuBars, IsisSchemas.INCLUDE);
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/MenuBarsLoaderServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/MenuBarsLoaderServiceDefault.java
index 82549dd430..0ddd2179da 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/MenuBarsLoaderServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/MenuBarsLoaderServiceDefault.java
@@ -33,7 +33,7 @@ import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBars;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuBars;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.menu.MenuBarsLoaderService;
 import org.apache.isis.commons.internal.base._Strings;
@@ -91,14 +91,14 @@ implements MenuBarsLoaderService {
     }
 
     @Override
-    public BS3MenuBars menuBars() {
+    public BSMenuBars menuBars() {
         return loadMenuBars(loadMenubarsLayoutResource());
     }
 
     // public, in support of JUnit testing
-    public BS3MenuBars loadMenuBars(String xmlString) {
+    public BSMenuBars loadMenuBars(String xmlString) {
         try {
-            return jaxbService.fromXml(BS3MenuBars.class, xmlString);
+            return jaxbService.fromXml(BSMenuBars.class, xmlString);
         } catch (Exception e) {
             severeCannotLoad(menubarsLayoutXmlResourceRef.get(), e);
             return null;
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/bootstrap3/MenuBarsServiceBS3.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/bootstrap3/MenuBarsServiceBS3.java
index 370e1d3e6f..47dae06c68 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/bootstrap3/MenuBarsServiceBS3.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/bootstrap3/MenuBarsServiceBS3.java
@@ -37,10 +37,10 @@ import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3Menu;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBar;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBars;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuSection;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenu;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuBar;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuBars;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuSection;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.menu.MenuBarsLoaderService;
 import org.apache.isis.applib.services.menu.MenuBarsService;
@@ -103,12 +103,12 @@ implements MenuBarsService {
     private final IsisSystemEnvironment isisSystemEnvironment;
     private final MetaModelContext metaModelContext;
 
-    private final _Lazy<BS3MenuBars> menuBarsFromAnnotationsOnly = _Lazy.threadSafe(this::menuBarsFromAnnotationsOnly);
+    private final _Lazy<BSMenuBars> menuBarsFromAnnotationsOnly = _Lazy.threadSafe(this::menuBarsFromAnnotationsOnly);
 
-    BS3MenuBars menuBars;
+    BSMenuBars menuBars;
 
     @Override
-    public BS3MenuBars menuBars(final Type type) {
+    public BSMenuBars menuBars(final Type type) {
 
         val menuBarsFromAnnotationsOnly = this.menuBarsFromAnnotationsOnly.get();
 
@@ -121,7 +121,7 @@ implements MenuBarsService {
 
     // -- HELPER
 
-    private BS3MenuBars menuBarsDefault() {
+    private BSMenuBars menuBarsDefault() {
 
         val menuBarsFromAnnotationsOnly = this.menuBarsFromAnnotationsOnly.get();
 
@@ -133,7 +133,7 @@ implements MenuBarsService {
         return menuBars;
     }
 
-    private BS3MenuBars loadOrElse(final BS3MenuBars menuBarsFromAnnotationsOnly) {
+    private BSMenuBars loadOrElse(final BSMenuBars menuBarsFromAnnotationsOnly) {
 
         val menuBars = Optional.ofNullable(menuBarsLoaderService.menuBars())
                 .map(this::updateFacetsFromActionLayoutXml)
@@ -149,12 +149,12 @@ implements MenuBarsService {
         // add in any missing actions from the fallback
         val referencedActionsByObjectTypeAndId = menuBars.getAllServiceActionsByObjectTypeAndId();
 
-        menuBarsFromAnnotationsOnly.visit(BS3MenuBars.VisitorAdapter.visitingMenuSections(menuSection->{
+        menuBarsFromAnnotationsOnly.visit(BSMenuBars.VisitorAdapter.visitingMenuSections(menuSection->{
 
             // created only if required to collect unreferenced actions
             // for this menuSection into a new section within the designated
             // unreferencedActionsMenu
-            BS3MenuSection section = null;
+            BSMenuSection section = null;
 
             for (val serviceActionLayout : menuSection.getServiceActions()) {
                 val logicalTypeNameAndId = serviceActionLayout.getLogicalTypeNameAndId();
@@ -176,7 +176,7 @@ implements MenuBarsService {
         return menuBars;
     }
 
-    private BS3MenuBars updateFacetsFromActionLayoutXml(final BS3MenuBars menuBarsFromXml) {
+    private BSMenuBars updateFacetsFromActionLayoutXml(final BSMenuBars menuBarsFromXml) {
         final Map<String, ServiceActionLayoutData> serviceActionLayoutDataByActionId = _Maps.newHashMap();
         menuBarsFromXml.visit(serviceActionLayoutData->
             serviceActionLayoutDataByActionId.put(
@@ -230,34 +230,34 @@ implements MenuBarsService {
         return menuBarsFromXml;
     }
 
-    private BS3MenuBars addTnsAndSchemaLocation(final BS3MenuBars menuBars) {
+    private BSMenuBars addTnsAndSchemaLocation(final BSMenuBars menuBars) {
         menuBars.setTnsAndSchemaLocation(tnsAndSchemaLocation());
         return menuBars;
     }
 
-    private static BS3MenuSection addSectionToMenu(final BS3Menu menu) {
-        val section = new BS3MenuSection();
+    private static BSMenuSection addSectionToMenu(final BSMenu menu) {
+        val section = new BSMenuSection();
         menu.getSections().add(section);
         return section;
     }
 
     private static void bindActionToSection(
             final ServiceActionLayoutData serviceAction,
-            final BS3MenuSection section) {
+            final BSMenuSection section) {
 
         // detach from fallback, attach to this section
         serviceAction.setOwner(section);
         section.getServiceActions().add(serviceAction);
     }
 
-    private BS3Menu validateAndGetUnreferencedActionMenu(final BS3MenuBars menuBars) {
+    private BSMenu validateAndGetUnreferencedActionMenu(final BSMenuBars menuBars) {
 
         if (menuBars == null) {
             return null;
         }
 
-        val menusWithUnreferencedActionsFlagSet = _Lists.<BS3Menu>newArrayList();
-        menuBars.visit(BS3MenuBars.VisitorAdapter.visitingMenus(menu->{
+        val menusWithUnreferencedActionsFlagSet = _Lists.<BSMenu>newArrayList();
+        menuBars.visit(BSMenuBars.VisitorAdapter.visitingMenus(menu->{
             if(Boolean.TRUE.equals(menu.isUnreferencedActions())) {
                 menusWithUnreferencedActionsFlagSet.add(menu);
             }
@@ -278,8 +278,8 @@ implements MenuBarsService {
         return null;
     }
 
-    private BS3MenuBars menuBarsFromAnnotationsOnly() {
-        final BS3MenuBars menuBars = new BS3MenuBars();
+    private BSMenuBars menuBarsFromAnnotationsOnly() {
+        final BSMenuBars menuBars = new BSMenuBars();
 
         val visibleServiceAdapters = metaModelContext.streamServiceAdapters()
                 .filter(this::isVisibleAdapterForMenu)
@@ -291,7 +291,7 @@ implements MenuBarsService {
 
         menuBars.setTnsAndSchemaLocation(tnsAndSchemaLocation());
 
-        final BS3Menu otherMenu = new BS3Menu();
+        final BSMenu otherMenu = new BSMenu();
         otherMenu.setNamed("Other");
         otherMenu.setUnreferencedActions(true);
         menuBars.getPrimary().getMenus().add(otherMenu);
@@ -314,7 +314,7 @@ implements MenuBarsService {
 
     private void appendFromAnnotationsOnly(
             final Can<ManagedObject> serviceAdapters,
-            final BS3MenuBar menuBar,
+            final BSMenuBar menuBar,
             final DomainServiceLayout.MenuBar menuBarPos) {
 
         val serviceActions = _Lists.<ServiceAndAction>newArrayList();
@@ -335,27 +335,27 @@ implements MenuBarsService {
         // prune any service names that have no service actions
         serviceNamesInOrder.retainAll(serviceActionsByName.keySet());
 
-        List<BS3Menu> menus = buildMenuItemsFromAnnotationsOnly(serviceNamesInOrder, serviceActionsByName);
+        List<BSMenu> menus = buildMenuItemsFromAnnotationsOnly(serviceNamesInOrder, serviceActionsByName);
         menuBar.getMenus().addAll(menus);
     }
 
-    private static List<BS3Menu> buildMenuItemsFromAnnotationsOnly(
+    private static List<BSMenu> buildMenuItemsFromAnnotationsOnly(
             final Set<String> serviceNamesInOrder,
             final Map<String, List<ServiceAndAction>> serviceActionsByName) {
 
-        final List<BS3Menu> menus = _Lists.newArrayList();
+        final List<BSMenu> menus = _Lists.newArrayList();
         for (String serviceName : serviceNamesInOrder) {
 
-            BS3Menu menu = new BS3Menu(serviceName);
+            BSMenu menu = new BSMenu(serviceName);
             menus.add(menu);
 
-            BS3MenuSection menuSection = new BS3MenuSection();
+            BSMenuSection menuSection = new BSMenuSection();
             final List<ServiceAndAction> serviceActionsForName = serviceActionsByName.get(serviceName);
             for (ServiceAndAction serviceAndAction : serviceActionsForName) {
 
                 if(serviceAndAction.isPrependSeparator() && !menuSection.getServiceActions().isEmpty()) {
                     menu.getSections().add(menuSection);
-                    menuSection = new BS3MenuSection();
+                    menuSection = new BSMenuSection();
                 }
 
                 val objectAction = serviceAndAction.getObjectAction();
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java
index c291cdd0bc..6aa760c2a6 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java
@@ -35,7 +35,7 @@ import org.apache.isis.applib.layout.component.FieldSet;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
 import org.apache.isis.applib.layout.grid.Grid;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBars;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuBars;
 import org.apache.isis.applib.services.grid.GridService;
 import org.apache.isis.applib.services.layout.Style;
 import org.apache.isis.applib.services.menu.MenuBarsService;
@@ -71,7 +71,7 @@ public class SitemapServiceDefault implements SitemapService {
 
         val menuBars = menuBarsService.menuBars(MenuBarsService.Type.DEFAULT);
 
-        menuBars.visit(BS3MenuBars.VisitorAdapter.visitingMenus(menu->{
+        menuBars.visit(BSMenuBars.VisitorAdapter.visitingMenus(menu->{
             val menuName = _Strings.isNotEmpty(menu.getNamed())
                 ? menu.getNamed()
                 : "Unnamed Menu";
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
index c0f8b7aa8c..387158db1d 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
@@ -26,11 +26,11 @@ import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
 import org.apache.isis.applib.layout.component.FieldSet;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3ClearFix;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.grid.bootstrap.BSClearFix;
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTab;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTabGroup;
 import org.apache.isis.commons.internal.assertions._Assert;
 import org.apache.isis.core.metamodel.interactions.managed.ActionInteraction;
 import org.apache.isis.core.metamodel.interactions.managed.CollectionInteraction;
@@ -99,13 +99,13 @@ public class ObjectViewFx extends VBox {
             }
 
             @Override
-            protected Pane newRow(final Pane container, final BS3Row bs3Row) {
+            protected Pane newRow(final Pane container, final BSRow bs3Row) {
                 val uiRow = _fx.newFlowPane(container);
                 return uiRow;
             }
 
             @Override
-            protected Pane newCol(final Pane container, final BS3Col bs3col) {
+            protected Pane newCol(final Pane container, final BSCol bs3col) {
 
                 val uiCol = _fx.newVBox(container);
 
@@ -132,13 +132,13 @@ public class ObjectViewFx extends VBox {
             }
 
             @Override
-            protected TabPane newTabGroup(final Pane container, final BS3TabGroup tabGroupData) {
+            protected TabPane newTabGroup(final Pane container, final BSTabGroup tabGroupData) {
                 val uiTabGroup = _fx.newTabGroup(container);
                 return uiTabGroup;
             }
 
             @Override
-            protected Pane newTab(final TabPane container, final BS3Tab tabData) {
+            protected Pane newTab(final TabPane container, final BSTab tabData) {
                 val uiTab = _fx.newTab(container, tabData.getName());
                 val uiTabContentPane = new VBox();
                 uiTab.setContent(uiTabContentPane);
@@ -161,7 +161,7 @@ public class ObjectViewFx extends VBox {
 
 
             @Override
-            protected void onClearfix(final Pane container, final BS3ClearFix clearFixData) {
+            protected void onClearfix(final Pane container, final BSClearFix clearFixData) {
                 // TODO Auto-generated method stub
             }
 
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
index 3f86bc6802..09d9dee0fa 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
@@ -38,11 +38,11 @@ import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
 import org.apache.isis.applib.layout.component.FieldSet;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3ClearFix;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.grid.bootstrap.BSClearFix;
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTab;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTabGroup;
 import org.apache.isis.commons.internal.assertions._Assert;
 import org.apache.isis.core.metamodel.interactions.managed.ActionInteraction;
 import org.apache.isis.core.metamodel.interactions.managed.CollectionInteraction;
@@ -106,7 +106,7 @@ public class ObjectViewVaa extends VerticalLayout {
             }
 
             @Override
-            protected HasComponents newRow(final HasComponents container, final BS3Row bs3Row) {
+            protected HasComponents newRow(final HasComponents container, final BSRow bs3Row) {
                 val uiRow = _vaa.add(container, new FlexLayout());
 
                 uiRow.setWidthFull();
@@ -123,7 +123,7 @@ public class ObjectViewVaa extends VerticalLayout {
             }
 
             @Override
-            protected HasComponents newCol(final HasComponents container, final BS3Col bs3col) {
+            protected HasComponents newCol(final HasComponents container, final BSCol bs3col) {
 
                 val uiCol = _vaa.add(container, new VerticalLayout());
 
@@ -146,7 +146,7 @@ public class ObjectViewVaa extends VerticalLayout {
             }
 
             @Override
-            protected Tabs newTabGroup(final HasComponents container, final BS3TabGroup tabGroupData) {
+            protected Tabs newTabGroup(final HasComponents container, final BSTabGroup tabGroupData) {
                 val uiTabGroup = _vaa.add(container, new Tabs());
 
                 uiTabGroup.setOrientation(Tabs.Orientation.HORIZONTAL);
@@ -154,7 +154,7 @@ public class ObjectViewVaa extends VerticalLayout {
             }
 
             @Override
-            protected HasComponents newTab(final Tabs container, final BS3Tab tabData) {
+            protected HasComponents newTab(final Tabs container, final BSTab tabData) {
                 val uiTab = _vaa.add(container, new Tab(tabData.getName()));
                 return uiTab;
             }
@@ -180,7 +180,7 @@ public class ObjectViewVaa extends VerticalLayout {
 
 
             @Override
-            protected void onClearfix(final HasComponents container, final BS3ClearFix clearFixData) {
+            protected void onClearfix(final HasComponents container, final BSClearFix clearFixData) {
                 // TODO Auto-generated method stub
             }
 
diff --git a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/rest/DomainObjectResourceTest.java b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/rest/DomainObjectResourceTest.java
index fac94d16a4..011889d5a4 100644
--- a/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/rest/DomainObjectResourceTest.java
+++ b/regressiontests/incubating/src/test/java/org/apache/isis/testdomain/rest/DomainObjectResourceTest.java
@@ -33,7 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.layout.grid.bootstrap.BSGrid;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.config.presets.IsisPresets;
@@ -100,7 +100,7 @@ class DomainObjectResourceTest {
 
         val resourceContext = domainObjectResourceServerside.resourceContextForTesting(layoutResourceDescriptor, /*params*/null);
 
-        val grid = (BS3Grid) spec.getFacet(GridFacet.class).getGrid(objectAdapter);
+        val grid = (BSGrid) spec.getFacet(GridFacet.class).getGrid(objectAdapter);
 
         DomainObjectResourceServerside.addLinks(resourceContext, domainType, instanceId, grid);
 
@@ -136,7 +136,7 @@ class DomainObjectResourceTest {
 
         val resourceContext = domainObjectResourceServerside.resourceContextForTesting(layoutResourceDescriptor, /*params*/null);
 
-        val grid = (BS3Grid) spec.getFacet(GridFacet.class).getGrid(objectAdapter);
+        val grid = (BSGrid) spec.getFacet(GridFacet.class).getGrid(objectAdapter);
 
         DomainObjectResourceServerside.addLinks(resourceContext, domainType, instanceId, grid);
 
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java
index d9ec2d2c45..19bc78d1c8 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java
@@ -26,12 +26,12 @@ import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
 import org.apache.isis.applib.layout.component.FieldSet;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3ClearFix;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.grid.bootstrap.BSClearFix;
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
+import org.apache.isis.applib.layout.grid.bootstrap.BSGrid;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTab;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTabGroup;
 import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Sets;
@@ -51,13 +51,13 @@ public class UiGridLayout {
     public static abstract class Visitor<C, T> {
         private final C rootContainer;
         protected abstract C newActionPanel(C container);
-        protected abstract C newRow(C container, BS3Row rowData);
-        protected abstract C newCol(C container, BS3Col colData);
-        protected abstract T newTabGroup(C container, BS3TabGroup tabGroupData);
-        protected abstract C newTab(T tabGroup, BS3Tab tabData);
+        protected abstract C newRow(C container, BSRow rowData);
+        protected abstract C newCol(C container, BSCol colData);
+        protected abstract T newTabGroup(C container, BSTabGroup tabGroupData);
+        protected abstract C newTab(T tabGroup, BSTab tabData);
         protected abstract C newFieldSet(C container, FieldSet fieldSetData);
         protected abstract void onObjectTitle(C container, DomainObjectLayoutData domainObjectData);
-        protected abstract void onClearfix(C container, BS3ClearFix clearFixData);
+        protected abstract void onClearfix(C container, BSClearFix clearFixData);
         protected abstract void onAction(C container, ActionLayoutData actionData);
         protected abstract void onProperty(C container, PropertyLayoutData propertyData);
         protected abstract void onCollection(C container, CollectionLayoutData collectionData);
@@ -65,7 +65,7 @@ public class UiGridLayout {
     }
 
     @NonNull private final ManagedObject managedObject;
-    private _Lazy<Optional<BS3Grid>> gridData = _Lazy.threadSafe(this::initGridData);
+    private _Lazy<Optional<BSGrid>> gridData = _Lazy.threadSafe(this::initGridData);
 
     public <C, T> void visit(final Visitor<C, T> visitor) {
 
@@ -79,25 +79,25 @@ public class UiGridLayout {
 
     }
 
-    private Optional<BS3Grid> initGridData() {
+    private Optional<BSGrid> initGridData() {
         return managedObject.getSpecification().lookupFacet(GridFacet.class)
         .map(gridFacet->gridFacet.getGrid(managedObject))
-        .filter(grid->grid instanceof BS3Grid)
-        .map(BS3Grid.class::cast)
+        .filter(grid->grid instanceof BSGrid)
+        .map(BSGrid.class::cast)
         .map(this::attachAssociatedActions)
         ;
     }
 
     //TODO[refactor] this should not be necessary here, the GridFacet should already have done that for us
-    private BS3Grid attachAssociatedActions(final BS3Grid bS3Grid) {
+    private BSGrid attachAssociatedActions(final BSGrid bSGrid) {
 
-        val primedActions = bS3Grid.getAllActionsById();
+        val primedActions = bSGrid.getAllActionsById();
         final Set<String> actionIdsAlreadyAdded = _Sets.newHashSet(primedActions.keySet());
 
         managedObject.getSpecification().streamProperties(MixedIn.INCLUDED)
         .forEach(property->{
             Optional.ofNullable(
-                    bS3Grid.getAllPropertiesById().get(property.getId()))
+                    bSGrid.getAllPropertiesById().get(property.getId()))
             .ifPresent(pl->{
 
                 ObjectAction.Util.findForAssociation(managedObject, property)
@@ -111,75 +111,75 @@ public class UiGridLayout {
 
 
         });
-        return bS3Grid;
+        return bSGrid;
     }
 
-    private <C, T> void visitRow(final BS3Row bs3Row, final C container, final Visitor<C, T> visitor) {
+    private <C, T> void visitRow(final BSRow bs3Row, final C container, final Visitor<C, T> visitor) {
 
         val uiRow = visitor.newRow(container, bs3Row);
 
         for(val bs3RowContent: bs3Row.getCols()) {
-            if(bs3RowContent instanceof BS3Col) {
+            if(bs3RowContent instanceof BSCol) {
 
-                visitCol((BS3Col) bs3RowContent, uiRow, visitor);
+                visitCol((BSCol) bs3RowContent, uiRow, visitor);
 
-            } else if (bs3RowContent instanceof BS3ClearFix) {
-                visitor.onClearfix(uiRow, (BS3ClearFix) bs3RowContent);
+            } else if (bs3RowContent instanceof BSClearFix) {
+                visitor.onClearfix(uiRow, (BSClearFix) bs3RowContent);
             } else {
-                throw new IllegalStateException("Unrecognized implementation of BS3RowContent");
+                throw new IllegalStateException("Unrecognized implementation of BSRowContent");
             }
         }
     }
 
-    private <C, T> void visitCol(final BS3Col bS3Col, final C container, final Visitor<C, T> visitor) {
-        val uiCol = visitor.newCol(container, bS3Col);
+    private <C, T> void visitCol(final BSCol bSCol, final C container, final Visitor<C, T> visitor) {
+        val uiCol = visitor.newCol(container, bSCol);
 
-        val hasDomainObject = bS3Col.getDomainObject()!=null;
-        val hasActions = _NullSafe.size(bS3Col.getActions())>0;
-        val hasRows = _NullSafe.size(bS3Col.getRows())>0;
+        val hasDomainObject = bSCol.getDomainObject()!=null;
+        val hasActions = _NullSafe.size(bSCol.getActions())>0;
+        val hasRows = _NullSafe.size(bSCol.getRows())>0;
 
         if(hasDomainObject || hasActions) {
             val uiActionPanel = visitor.newActionPanel(uiCol);
             if(hasDomainObject) {
-                visitor.onObjectTitle(uiActionPanel, bS3Col.getDomainObject());
+                visitor.onObjectTitle(uiActionPanel, bSCol.getDomainObject());
             }
             if(hasActions) {
-                for(val action : bS3Col.getActions()) {
+                for(val action : bSCol.getActions()) {
                     visitor.onAction(uiActionPanel, action);
                 }
             }
         }
 
-        for(val fieldSet : bS3Col.getFieldSets()) {
+        for(val fieldSet : bSCol.getFieldSets()) {
             visitFieldSet(fieldSet, uiCol, visitor);
         }
 
-        for(val tabGroup : bS3Col.getTabGroups()) {
+        for(val tabGroup : bSCol.getTabGroups()) {
             visitTabGroup(tabGroup, uiCol, visitor);
         }
 
         if(hasRows) {
-            for(val bs3Row: bS3Col.getRows()) {
+            for(val bs3Row: bSCol.getRows()) {
                 visitRow(bs3Row, uiCol, visitor);
             }
         }
 
-        for(val collectionData : bS3Col.getCollections()) {
+        for(val collectionData : bSCol.getCollections()) {
             visitor.onCollection(uiCol, collectionData);
         }
 
     }
 
-    private <C, T> void visitTabGroup(final BS3TabGroup bS3ColTabGroup, final C container, final Visitor<C, T> visitor) {
+    private <C, T> void visitTabGroup(final BSTabGroup bS3ColTabGroup, final C container, final Visitor<C, T> visitor) {
         val uiTabGroup = visitor.newTabGroup(container, bS3ColTabGroup);
         for(val bs3Tab: bS3ColTabGroup.getTabs()) {
             visitTab(bs3Tab, uiTabGroup, visitor);
         }
     }
 
-    private <C, T> void visitTab(final BS3Tab bS3Tab, final T container, final Visitor<C, T> visitor) {
-        val uiTab = visitor.newTab(container, bS3Tab);
-        for(val bs3Row: bS3Tab.getRows()) {
+    private <C, T> void visitTab(final BSTab bSTab, final T container, final Visitor<C, T> visitor) {
+        val uiTab = visitor.newTab(container, bSTab);
+        for(val bs3Row: bSTab.getRows()) {
             visitRow(bs3Row, uiTab, visitor);
         }
     }
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel.java
index 881e443ae6..b87fd97286 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel.java
@@ -23,7 +23,7 @@ import java.util.List;
 import java.util.Locale;
 
 import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBar;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuBar;
 import org.apache.isis.core.runtime.context.IsisAppCommonContext;
 
 import lombok.Getter;
@@ -50,7 +50,7 @@ public class MenuUiModel implements Serializable {
             final MenuVisitor menuBuilder) {
 
         val menuBars = commonContext.getMenuBarsService().menuBars();
-        val menuBar = (BS3MenuBar) menuBars.menuBarFor(getMenuBarSelect());
+        val menuBar = (BSMenuBar) menuBars.menuBarFor(getMenuBarSelect());
 
         MenuUiModel_buildMenuItems.buildMenuItems(
                 commonContext,
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java
index 2ffc4e72bb..9cfc84b8fa 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java
@@ -22,9 +22,9 @@ import java.util.concurrent.atomic.LongAdder;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3Menu;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBar;
-import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuSection;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenu;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuBar;
+import org.apache.isis.applib.layout.menubars.bootstrap.BSMenuSection;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
 import org.apache.isis.core.runtime.context.IsisAppCommonContext;
@@ -40,7 +40,7 @@ final class MenuUiModel_buildMenuItems {
 
     public static void buildMenuItems(
             IsisAppCommonContext commonContext,
-            BS3MenuBar menuBar,
+            BSMenuBar menuBar,
             MenuVisitor menuBuilder) {
 
         val itemsPerSectionCounter = new LongAdder();
@@ -98,16 +98,16 @@ final class MenuUiModel_buildMenuItems {
         private final IsisAppCommonContext commonContext;
         private final MenuVisitor menuVisitor;
 
-        private BS3Menu currentTopLevel;
+        private BSMenu currentTopLevel;
         private boolean pushedCurrentTopLevel = false;
 
-        public void addTopLevel(BS3Menu menu) {
+        public void addTopLevel(BSMenu menu) {
             currentTopLevel = menu;
             pushedCurrentTopLevel = false;
         }
 
         public void addSubMenu(
-                @NonNull BS3MenuSection menuSection,
+                @NonNull BSMenuSection menuSection,
                 @NonNull ManagedAction managedAction,
                 boolean isFirstInSection,
                 ServiceActionLayoutData actionLayoutData) {
@@ -152,7 +152,7 @@ final class MenuUiModel_buildMenuItems {
      */
     private static MenuItemDto topLevelDto(
             final IsisAppCommonContext commonContext,
-            final BS3Menu menu) {
+            final BSMenu menu) {
 
         val menuItemIsUserProfile = _Strings.isNullOrEmpty(menu.getNamed()); // top level menu item name
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/BS3GridPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/BS3GridPanel.java
index f32db09d9f..7eaf402e1e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/BS3GridPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/BS3GridPanel.java
@@ -23,8 +23,8 @@ import java.util.Optional;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
+import org.apache.isis.applib.layout.grid.bootstrap.BSGrid;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -45,7 +45,7 @@ extends PanelAbstract<ManagedObject, EntityModel> {
 
     private static final String ID_ROWS = "rows";
 
-    private final BS3Grid bs3Page;
+    private final BSGrid bs3Page;
 
     public static Optional<BS3GridPanel> extraContentForMixin(final String id, final ActionModel actionModel) {
         final ObjectAction action = actionModel.getAction();
@@ -70,7 +70,7 @@ extends PanelAbstract<ManagedObject, EntityModel> {
     }
 
 
-    public BS3GridPanel(final String id, final EntityModel entityModel, final BS3Grid bs3Grid) {
+    public BS3GridPanel(final String id, final EntityModel entityModel, final BSGrid bs3Grid) {
         super(id, entityModel);
         this.bs3Page = bs3Grid;
         buildGui();
@@ -82,7 +82,7 @@ extends PanelAbstract<ManagedObject, EntityModel> {
 
         final RepeatingView rv = new RepeatingView(ID_ROWS);
 
-        for(final BS3Row bs3Row: this.bs3Page.getRows()) {
+        for(final BSRow bs3Row: this.bs3Page.getRows()) {
             final String id = rv.newChildId();
             final WebMarkupContainer row = new Row(id, getModel(), bs3Row);
             rv.add(row);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/clearfix/ClearFix.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/clearfix/ClearFix.java
index 2650e28ed3..042d401a62 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/clearfix/ClearFix.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/clearfix/ClearFix.java
@@ -20,7 +20,7 @@ package org.apache.isis.viewer.wicket.ui.components.layout.bs3.clearfix;
 
 import org.apache.wicket.markup.html.WebMarkupContainer;
 
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3ClearFix;
+import org.apache.isis.applib.layout.grid.bootstrap.BSClearFix;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
@@ -33,12 +33,12 @@ extends PanelAbstract<ManagedObject, EntityModel> {
 
     private static final String ID_COL = "clearfix";
 
-    private final BS3ClearFix bs3ClearFix;
+    private final BSClearFix bs3ClearFix;
 
     public ClearFix(
             final String id,
             final EntityModel entityModel,
-            final BS3ClearFix bs3ClearFix) {
+            final BSClearFix bs3ClearFix) {
 
         super(id, entityModel);
         this.bs3ClearFix = bs3ClearFix;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
index 80bc82f24f..a55668ead1 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/col/Col.java
@@ -29,10 +29,10 @@ import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
 import org.apache.isis.applib.layout.component.FieldSet;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTab;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTabGroup;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
@@ -65,11 +65,11 @@ implements HasDynamicallyVisibleContent {
     private static final String ID_FIELD_SETS = "fieldSets";
     private static final String ID_COLLECTIONS = "collections";
 
-    private final BS3Col bs3Col;
+    private final BSCol bs3Col;
 
     public Col(
             final String id,
-            final EntityModel entityModel, final BS3Col bs3Col) {
+            final EntityModel entityModel, final BSCol bs3Col) {
 
         super(id, entityModel);
 
@@ -144,7 +144,7 @@ implements HasDynamicallyVisibleContent {
 
 
         // rows
-        final List<BS3Row> rows = _Lists.newArrayList(this.bs3Col.getRows());
+        final List<BSRow> rows = _Lists.newArrayList(this.bs3Col.getRows());
         if(!rows.isEmpty()) {
             final RepeatingViewWithDynamicallyVisibleContent rowsRv = buildRows(ID_ROWS, rows);
             div.add(rowsRv);
@@ -155,12 +155,12 @@ implements HasDynamicallyVisibleContent {
 
 
         // tab groups
-        final List<BS3TabGroup> tabGroupsWithNonEmptyTabs =
+        final List<BSTabGroup> tabGroupsWithNonEmptyTabs =
                 _NullSafe.stream(bs3Col.getTabGroups())
                 .filter(_NullSafe::isPresent)
                 .filter(bs3TabGroup ->
                         _NullSafe.stream(bs3TabGroup.getTabs())
-                                .anyMatch(BS3Tab.Predicates.notEmpty())
+                                .anyMatch(BSTab.Predicates.notEmpty())
                 )
                 .collect(Collectors.toList());
 
@@ -168,11 +168,11 @@ implements HasDynamicallyVisibleContent {
             final RepeatingViewWithDynamicallyVisibleContent tabGroupRv =
                     new RepeatingViewWithDynamicallyVisibleContent(ID_TAB_GROUPS);
 
-            for (BS3TabGroup bs3TabGroup : tabGroupsWithNonEmptyTabs) {
+            for (BSTabGroup bs3TabGroup : tabGroupsWithNonEmptyTabs) {
 
                 final String id = tabGroupRv.newChildId();
-                final List<BS3Tab> tabs = _NullSafe.stream(bs3TabGroup.getTabs())
-                        .filter(BS3Tab.Predicates.notEmpty())
+                final List<BSTab> tabs = _NullSafe.stream(bs3TabGroup.getTabs())
+                        .filter(BSTab.Predicates.notEmpty())
                         .collect(Collectors.toList());
 
                 switch (tabs.size()) {
@@ -181,9 +181,9 @@ implements HasDynamicallyVisibleContent {
                     throw new IllegalStateException("Cannot render tabGroup with no tabs");
                 case 1:
                     if(bs3TabGroup.isCollapseIfOne() == null || bs3TabGroup.isCollapseIfOne()) {
-                        final BS3Tab bs3Tab = tabs.get(0);
+                        final BSTab bs3Tab = tabs.get(0);
                         // render the rows of the one-and-only tab of this tab group.
-                        final List<BS3Row> tabRows = bs3Tab.getRows();
+                        final List<BSRow> tabRows = bs3Tab.getRows();
                         final RepeatingViewWithDynamicallyVisibleContent rowsRv = buildRows(id, tabRows);
                         tabGroupRv.add(rowsRv);
                         break;
@@ -282,11 +282,11 @@ implements HasDynamicallyVisibleContent {
 
     }
 
-    private RepeatingViewWithDynamicallyVisibleContent buildRows(final String owningId, final List<BS3Row> rows) {
+    private RepeatingViewWithDynamicallyVisibleContent buildRows(final String owningId, final List<BSRow> rows) {
         final RepeatingViewWithDynamicallyVisibleContent rowRv =
                 new RepeatingViewWithDynamicallyVisibleContent(owningId);
 
-        for(final BS3Row bs3Row: rows) {
+        for(final BSRow bs3Row: rows) {
             final String id = rowRv.newChildId();
             final Row row = new Row(id, getModel(), bs3Row);
             rowRv.add(row);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/row/Row.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/row/Row.java
index 8255bd82a2..91d698a047 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/row/Row.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/row/Row.java
@@ -20,10 +20,10 @@ package org.apache.isis.viewer.wicket.ui.components.layout.bs3.row;
 
 import org.apache.wicket.markup.html.WebMarkupContainer;
 
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3ClearFix;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3RowContent;
+import org.apache.isis.applib.layout.grid.bootstrap.BSClearFix;
+import org.apache.isis.applib.layout.grid.bootstrap.BSCol;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRowContent;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.components.layout.bs3.clearfix.ClearFix;
@@ -42,12 +42,12 @@ implements HasDynamicallyVisibleContent {
 
     private static final String ID_ROW_CONTENTS = "rowContents";
 
-    private final BS3Row bs3Row;
+    private final BSRow bs3Row;
 
     public Row(
             final String id,
             final EntityModel entityModel,
-            final BS3Row bs3Row) {
+            final BSRow bs3Row) {
 
         super(id, entityModel);
 
@@ -61,24 +61,24 @@ implements HasDynamicallyVisibleContent {
         final RepeatingViewWithDynamicallyVisibleContent rv =
                 new RepeatingViewWithDynamicallyVisibleContent(ID_ROW_CONTENTS);
 
-        for(final BS3RowContent bs3RowContent: bs3Row.getCols()) {
+        for(final BSRowContent bs3RowContent: bs3Row.getCols()) {
 
             final String id = rv.newChildId();
 
             final WebMarkupContainer rowContent;
-            if(bs3RowContent instanceof BS3Col) {
+            if(bs3RowContent instanceof BSCol) {
 
-                final BS3Col bs3Col = (BS3Col) bs3RowContent;
+                final BSCol bs3Col = (BSCol) bs3RowContent;
                 final Col col = new Col(id, getModel(), bs3Col);
 
                 visible = visible || col.isVisible();
                 rowContent = col;
 
-            } else if (bs3RowContent instanceof BS3ClearFix) {
-                final BS3ClearFix bs3ClearFix = (BS3ClearFix) bs3RowContent;
+            } else if (bs3RowContent instanceof BSClearFix) {
+                final BSClearFix bs3ClearFix = (BSClearFix) bs3RowContent;
                 rowContent = new ClearFix(id, getModel(), bs3ClearFix);
             } else {
-                throw new IllegalStateException("Unrecognized implementation of BS3RowContent");
+                throw new IllegalStateException("Unrecognized implementation of BSRowContent");
             }
 
             rv.add(rowContent);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
index 23019b29d4..36ea072345 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
@@ -28,8 +28,8 @@ import org.apache.wicket.extensions.markup.html.tabs.TabbedPanel;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTab;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTabGroup;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.util.ComponentHintKey;
@@ -51,11 +51,11 @@ implements HasDynamicallyVisibleContent {
     private final ComponentHintKey selectedTabHintKey;
     private final EntityModel entityModel;
 
-    private static List<ITab> tabsFor(final EntityModel entityModel, final BS3TabGroup bs3TabGroup) {
+    private static List<ITab> tabsFor(final EntityModel entityModel, final BSTabGroup bs3TabGroup) {
         final List<ITab> tabs = new ArrayList<>();
 
-        final List<BS3Tab> tablist = _NullSafe.stream(bs3TabGroup.getTabs())
-                .filter(BS3Tab.Predicates.notEmpty())
+        final List<BSTab> tablist = _NullSafe.stream(bs3TabGroup.getTabs())
+                .filter(BSTab.Predicates.notEmpty())
                 .collect(Collectors.toList());
 
         for (val bs3Tab : tablist) {
@@ -78,7 +78,7 @@ implements HasDynamicallyVisibleContent {
         return tabs;
     }
 
-    public TabGroupPanel(final String id, final EntityModel entityModel, final BS3TabGroup bs3TabGroup) {
+    public TabGroupPanel(final String id, final EntityModel entityModel, final BSTabGroup bs3TabGroup) {
         super(id, tabsFor(entityModel, bs3TabGroup));
         this.entityModel = entityModel;
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabPanel.java
index 5a5227055d..6cc79207f4 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabPanel.java
@@ -20,8 +20,8 @@ package org.apache.isis.viewer.wicket.ui.components.layout.bs3.tabs;
 
 import org.apache.wicket.markup.html.WebMarkupContainer;
 
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
-import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
+import org.apache.isis.applib.layout.grid.bootstrap.BSRow;
+import org.apache.isis.applib.layout.grid.bootstrap.BSTab;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.wicket.model.hints.HasUiHintDisambiguator;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
@@ -41,13 +41,13 @@ implements HasUiHintDisambiguator, HasDynamicallyVisibleContent {
     private static final String ID_TAB_PANEL = "tabPanel";
     private static final String ID_ROWS = "rows";
 
-    private final BS3Tab bs3Tab;
+    private final BSTab bs3Tab;
 
-    public TabPanel(final String id, final EntityModel model, final BS3Tab bs3Tab) {
+    public TabPanel(final String id, final EntityModel model, final BSTab bs3Tab) {
         this(id, model, bs3Tab, null);
     }
 
-    public TabPanel(final String id, final EntityModel model, final BS3Tab bs3Tab, final RepeatingViewWithDynamicallyVisibleContent repeatingViewWithDynamicallyVisibleContent) {
+    public TabPanel(final String id, final EntityModel model, final BSTab bs3Tab, final RepeatingViewWithDynamicallyVisibleContent repeatingViewWithDynamicallyVisibleContent) {
         super(id);
 
         this.bs3Tab = bs3Tab;
@@ -63,7 +63,7 @@ implements HasUiHintDisambiguator, HasDynamicallyVisibleContent {
         return bs3Tab.getName();
     }
 
-    protected void buildGui(final EntityModel model, final BS3Tab bs3Tab, final RepeatingViewWithDynamicallyVisibleContent rvIfAny) {
+    protected void buildGui(final EntityModel model, final BSTab bs3Tab, final RepeatingViewWithDynamicallyVisibleContent rvIfAny) {
 
         final WebMarkupContainer div = new WebMarkupContainer(ID_TAB_PANEL);
 
@@ -81,10 +81,10 @@ implements HasUiHintDisambiguator, HasDynamicallyVisibleContent {
 
     }
 
-    public static RepeatingViewWithDynamicallyVisibleContent newRows(final EntityModel model, final BS3Tab bs3Tab) {
+    public static RepeatingViewWithDynamicallyVisibleContent newRows(final EntityModel model, final BSTab bs3Tab) {
         final RepeatingViewWithDynamicallyVisibleContent rv = new RepeatingViewWithDynamicallyVisibleContent(ID_ROWS);
 
-        for(final BS3Row bs3Row: bs3Tab.getRows()) {
+        for(final BSRow bs3Row: bs3Tab.getRows()) {
             final String newChildId = rv.newChildId();
             final Row row = new Row(newChildId, model, bs3Row);
             rv.add(row);