diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelLayoutRendererBase.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelLayoutRendererBase.java
index f625eb8..82d75d7 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelLayoutRendererBase.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelLayoutRendererBase.java
@@ -127,17 +127,17 @@
         flex = false;
     }
 
-    writer.startElement(getComponentTag());
     if (labelLayout == LabelLayout.gridLeft || labelLayout == LabelLayout.gridRight
         || labelLayout == LabelLayout.gridTop || labelLayout == LabelLayout.gridBottom) {
+      writer.startElement(HtmlElements.TOBAGO_LABEL);
       writer.writeIdAttribute(clientId + ComponentUtils.SUB_SEPARATOR + "label");
     } else {
+      writer.startElement(getComponentTag());
       writer.writeIdAttribute(clientId);
     }
     writer.writeClassAttribute(
         flex ? TobagoClass.FLEX_LAYOUT : null,
         flex ? BootstrapClass.D_FLEX : null,
-        TobagoClass.LABEL__CONTAINER,
         BootstrapClass.FORM_GROUP,
         ComponentUtils.getBooleanAttribute(component, Attributes.required) ? TobagoClass.REQUIRED : null,
         markup != null && markup.contains(Markup.SPREAD) ? TobagoClass.SPREAD : null);
@@ -163,12 +163,11 @@
       case gridRight:
       case gridTop:
       case gridBottom:
-        writer.endElement(HtmlElements.DIV);
+        writer.endElement(HtmlElements.TOBAGO_LABEL);
 
-        writer.startElement(HtmlElements.DIV);
+        writer.startElement(getComponentTag());
         writer.writeIdAttribute(clientId);
         writer.writeClassAttribute(
-            TobagoClass.LABEL__CONTAINER,
             BootstrapClass.FORM_GROUP,
             ComponentUtils.getBooleanAttribute(component, Attributes.required) ? TobagoClass.REQUIRED : null,
             markup != null && markup.contains(Markup.SPREAD) ? TobagoClass.SPREAD : null);
@@ -207,7 +206,7 @@
     if (StringUtils.isNotBlank(label)) {
       writer.startElement(HtmlElements.LABEL);
       writer.writeAttribute(HtmlAttributes.FOR, getFieldId(facesContext, component), false);
-      writer.writeClassAttribute(TobagoClass.LABEL, BootstrapClass.COL_FORM_LABEL);
+      writer.writeClassAttribute(BootstrapClass.COL_FORM_LABEL);
       if (component instanceof SupportsAccessKey) {
         final LabelWithAccessKey labelWithAccessKey = new LabelWithAccessKey((SupportsAccessKey) component);
         HtmlRendererUtils.writeLabelWithAccessKey(writer, labelWithAccessKey);
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelRenderer.java
index 8f04eb8..ea7b9fc 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LabelRenderer.java
@@ -74,10 +74,9 @@
     writer.startElement(HtmlElements.LABEL);
     HtmlRendererUtils.writeDataAttributes(facesContext, writer, label);
     writer.writeClassAttribute(
-        TobagoClass.LABEL,
+        BootstrapClass.COL_FORM_LABEL,
         TobagoClass.LABEL.createMarkup(markup),
         required ? TobagoClass.REQUIRED : null,
-        BootstrapClass.COL_FORM_LABEL,
         label.getCustomClass());
     writer.writeIdAttribute(clientId);
     if (forId != null) {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
index 33abe3a..731910e 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
@@ -140,7 +140,6 @@
   @Deprecated
   INPUT_GROUP_OUTER(INPUT__GROUP__OUTER.getName()),
   LABEL("tobago-label"),
-  LABEL__CONTAINER("tobago-label-container"),
   LINK("tobago-link"),
   LINKS("tobago-links"),
   MESSAGES("tobago-messages"),
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
index 5394f3c..da03315 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
@@ -135,6 +135,7 @@
 
   TOBAGO_BEHAVIOR("tobago-behavior"),
   TOBAGO_FILE("tobago-file"),
+  TOBAGO_LABEL("tobago-label"),
   TOBAGO_IN("tobago-in"),
   TOBAGO_PANEL("tobago-panel"),
   TOBAGO_POPUP("tobago-popup"),
diff --git a/tobago-core/src/main/resources/scss/_tobago.scss b/tobago-core/src/main/resources/scss/_tobago.scss
index 046b925..4a4090b 100644
--- a/tobago-core/src/main/resources/scss/_tobago.scss
+++ b/tobago-core/src/main/resources/scss/_tobago.scss
@@ -274,7 +274,7 @@
 }
 
 /* the non-label-element inside of a label-layout with flex box */
-.tobago-flexLayout.tobago-label-container > {
+tobago-label.tobago-flexLayout > {
   .form-control, .form-control-plaintext, .twitter-typeahead,
   .tobago-input-group-outer, .tobago-messages-container,
   .tobago-selectManyShuttle {
@@ -313,7 +313,7 @@
   grid-column-gap: $spacer-x; // old
   column-gap: $spacer-x;
 
-  .tobago-label-container > {
+  tobago-label > {
     .tobago-textarea, .tobago-selectManyListbox, .tobago-selectManyShuttle {
       height: 100%;
     }
@@ -360,11 +360,11 @@
 }
 
 /* label ----------------------------------------------------------- */
-.tobago-label {
+tobago-label {
   width: 100%;
 }
 
-.tobago-flexLayout > .tobago-label {
+.tobago-flexLayout > tobago-label {
   width: 155px;
 }
 
@@ -1624,7 +1624,7 @@
 }
 
 .tobago-required .tobago-label:after,
-.tobago-required.tobago-label:after {
+tobago-label.tobago-required:after {
   content: "*";
   color: theme-color("danger");
 }
diff --git a/tobago-theme/tobago-theme-speyside/src/main/scss/_speyside-overwrites.scss b/tobago-theme/tobago-theme-speyside/src/main/scss/_speyside-overwrites.scss
index 03d31c3..af09919 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/scss/_speyside-overwrites.scss
+++ b/tobago-theme/tobago-theme-speyside/src/main/scss/_speyside-overwrites.scss
@@ -127,7 +127,7 @@
   }
 }
 
-.form-group, .tobago-label {
+.form-group, tobago-label {
   ~ a.tobago-link {
     padding-top: 0.46em;
     margin-bottom: 0;
