diff --git a/tobago-core/npm/scss/_tobago.scss b/tobago-core/npm/scss/_tobago.scss
index 09b9e50..b5a9a6a 100644
--- a/tobago-core/npm/scss/_tobago.scss
+++ b/tobago-core/npm/scss/_tobago.scss
@@ -40,6 +40,23 @@
 $page-padding-top: 1rem;
 
 /* main ---------------------------------------------------------- */
+@mixin buttonLinkDisabledCursor() {
+  &:disabled {
+    pointer-events: auto;
+
+    &:hover {
+      cursor: not-allowed;
+    }
+  }
+}
+
+@mixin dropdownMenuFormCheckComponents() {
+  .dropdown-menu .form-check {
+    /* move form-check components to the right, so checkbox/radio buttons are inside dropdown-menu */
+    padding-left: (($dropdown-item-padding-x ) + ($form-check-padding-left / 1em))
+  }
+}
+
 @mixin linkWithoutUnderline() {
   > .tobago-link {
     text-decoration: none;
@@ -143,10 +160,11 @@
   }
 }
 
-tobago-links {
+/* button, link ------------------------------------------------------- */
+.tobago-button {
+  @include buttonLinkDisabledCursor();
 }
 
-/* button, link ------------------------------------------------------- */
 .tobago-button, .tobago-link {
   > img + span {
     margin-left: .4em;
@@ -401,63 +419,25 @@
 
 h1, h2, h3, h4, h5, h6 {
   button.tobago-link {
+    font-size: inherit;
     font-weight: inherit;
   }
 }
 
 button {
-  &.tobago-link {
-    color: $blue;
-    border-width: 0;
+  &.tobago-link.btn {
+    @include buttonLinkDisabledCursor();
+
     padding: 0;
-    background-color: transparent;
-    text-align: left;
+    vertical-align: baseline;
 
-    &:focus, &:hover {
-      color: $link-hover-color;
-      cursor: pointer;
-      outline: none;
-      text-decoration: underline;
-    }
-
-    &:disabled {
-      color: $nav-link-disabled-color;
-
-      &:hover {
-        cursor: not-allowed;
-        text-decoration: none;
-      }
-
-      > img {
-        opacity: .65;
-      }
+    &:focus {
+      box-shadow: none;
     }
   }
 
   &.tobago-link.dropdown-item {
-    padding: $dropdown-item-padding-y $dropdown-item-padding-x;
-    color: $dropdown-link-color;
-    text-align: inherit;
-    white-space: nowrap;
-
-    &:active {
-      color: $dropdown-link-active-color;
-    }
-
-    &:focus, &:hover {
-      cursor: pointer;
-      text-decoration: none;
-    }
-
-    &:disabled {
-      color: $dropdown-link-disabled-color;
-    }
-  }
-
-  &.tobago-link.dropdown-toggle {
-    &:focus, &:hover {
-      text-decoration: none;
-    }
+    @include buttonLinkDisabledCursor();
   }
 
   &.nav-link { /* bootstrap don't know button.nav-link*/
@@ -470,12 +450,7 @@
   padding-right: 0;
 }
 
-span.dropdown {
-  display: inline-block;
-}
-
-.dropdown > .btn.dropdown-toggle {
-  width: 100%;
+tobago-links {
 }
 
 /* messages / help text ----------------------------------------------- */
@@ -553,13 +528,6 @@
 
 /* nav ----------------------------------------------------------- */
 
-/* styles for drop down menu first level */
-.dropdown-toggle {
-  &:focus, &:hover {
-    text-decoration: none;
-  }
-}
-
 /* no bottom border in navtabs, if panel-body under it */
 .nav-tabs {
   border-bottom-width: 0;
@@ -581,103 +549,35 @@
 
 /* dropdown ------------------------------------------------------- */
 tobago-dropdown {
-  display: inline-block;
-}
+  @include dropdownMenuFormCheckComponents();
 
-tobago-dropdown, .tobago-page-menuStore {
-  .tobago-dropdown-selected {
-    color: $dropdown-link-hover-color;
-    text-decoration: none;
-    @include gradient-bg($dropdown-link-hover-bg);
-  }
-}
-
-ul > tobago-dropdown {
-  display: list-item;
-}
-
-.dropdown-menu {
-  .form-check {
-    padding-left: 0;
-
-    .form-check-label.dropdown-item {
-      // todo check! this was BS4: padding-left: ($custom-control-gutter + $custom-control-indicator-size) + $dropdown-item-padding-x;
-      padding-left: ($spacer * 1.5 + $spacer) + $dropdown-item-padding-x;
-
-      &:before {
-        top: (($font-size-base * $line-height-base - $spacer) / 2) + $dropdown-item-padding-y;
-        left: $dropdown-item-padding-x;
-      }
-
-      &:after {
-        top: (($font-size-base * $line-height-base - $spacer) / 2) + $dropdown-item-padding-y;
-        left: $dropdown-item-padding-x;
-      }
-    }
-  }
-}
-
-/* dropdown-submenu ------------------------------------------------------- */
-
-.tobago-dropdown-submenu {
-  cursor: pointer;
-  position: relative;
-  width: 100%;
-
-  &:active {
-    > button.tobago-link {
-      color: $dropdown-link-active-color;
-    }
-  }
-
-  > .dropdown-menu {
-    top: 0;
-    left: 100%;
-    margin-top: -6px;
-    margin-left: -1px;
-    border-radius: 6px 6px 6px 6px;
-  }
-
-  > button:after {
-    display: none;
-  }
-
-  > button.tobago-link {
-    color: $dropdown-link-color;
-
-    &:focus, &:hover {
-      text-decoration: none;
-    }
-  }
-
-  &:after {
-    content: " ";
+  &.tobago-dropdown-submenu {
+    cursor: pointer;
+    position: relative;
+    width: 100%;
     float: right;
-    border-color: transparent;
-    border-style: solid;
-    border-width: 5px 0 5px 5px;
-    border-left-color: #cccccc;
-    margin-top: 7px;
-    margin-right: -10px;
-  }
 
-  &:hover, &.tobago-dropdown-open {
-    > .dropdown-menu {
-      display: block;
+    &:hover {
+      background-color: $dropdown-link-hover-bg;
 
-      > a:after {
-        border-left-color: $dropdown-bg;
+      > .dropdown-menu {
+        display: block;
+        top: 0;
+        left: 100%;
+        margin-top: -0.5rem;
+        margin-left: -1px;
       }
     }
-  }
 
-  &.pull-left {
-    float: none;
-
-    > .dropdown-menu {
-      left: -100%;
-      margin-left: 10px;
-      border-radius: 6px 0 6px 6px;
+    > .dropdown-item::after {
+      content: " ";
+      float: right;
+      border-color: transparent;
+      border-style: solid;
+      border-width: 5px 0 5px 5px;
+      border-left-color: #cccccc;
+      margin-top: 7px;
+      margin-right: -10px;
     }
   }
 }
@@ -1621,6 +1521,8 @@
 /* menuStore -------------------------------------------------------- */
 
 .tobago-page-menuStore {
+  @include dropdownMenuFormCheckComponents();
+
   position: absolute;
   top: 0;
   left: 0;
@@ -1682,3 +1584,7 @@
   custom styling is much more complicated. */
   margin-bottom: 1rem;
 }
+
+.tobago-dropdown-open, .tobago-dropdown-select {
+  // deprecated; must be added for test
+}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
index 504ef87..5dd94b6 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
@@ -115,7 +115,7 @@
         getRendererCssClass(),
         getRendererCssClass().createMarkup(component.getMarkup()),
         getCssItems(facesContext, component),
-        !parentOfCommands && dropdownSubmenu ? BootstrapClass.DROPDOWN_ITEM : null,
+        dropdownSubmenu ? BootstrapClass.DROPDOWN_ITEM : null,
         parentOfCommands && !dropdownSubmenu ? BootstrapClass.DROPDOWN_TOGGLE : null,
         component.getCustomClass(),
         isInside(facesContext, HtmlElements.TOBAGO_LINKS) ? BootstrapClass.NAV_LINK : null);
@@ -228,9 +228,7 @@
       writer.startElement(HtmlElements.TOBAGO_DROPDOWN);
       writer.writeIdAttribute(clientId);
 
-      writer.writeClassAttribute(
-          dropdownSubmenu ? TobagoClass.DROPDOWN__SUBMENU : BootstrapClass.DROPDOWN,
-          dropdownSubmenu ? BootstrapClass.DROPDOWN_ITEM : null);
+      writer.writeClassAttribute(dropdownSubmenu ? TobagoClass.DROPDOWN__SUBMENU : BootstrapClass.DROPDOWN);
     }
   }
 
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRenderer.java
index bc6a83d..3bc9903 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRenderer.java
@@ -24,6 +24,7 @@
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
 import org.apache.myfaces.tobago.renderkit.css.CssItem;
 import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
+import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
 
 import javax.faces.context.FacesContext;
 
@@ -36,9 +37,14 @@
 
   @Override
   protected CssItem[] getCssItems(final FacesContext facesContext, final T command) {
+    final boolean disabled = command.isDisabled();
+    final boolean anchor = (command.getLink() != null || command.getOutcome() != null) && !disabled;
+    final boolean dropdownSubmenu = isInside(facesContext, HtmlElements.COMMAND);
     final Markup markup = command.getMarkup() != null ? command.getMarkup() : Markup.NULL;
 
     return new CssItem[]{
+        !anchor && !dropdownSubmenu ? BootstrapClass.BTN : null,
+        !anchor && !dropdownSubmenu ? BootstrapClass.BTN_LINK : null,
         BootstrapClass.textColor(markup),
         BootstrapClass.fontStyle(markup)
     };
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 42403f3..6921a94 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
@@ -125,7 +125,15 @@
   COLLAPSED("tobago-collapsed"),
   DATE("tobago-date"),
   DATE__PICKER("tobago-date-picker"),
+  /**
+   * @deprecated since 5.0.0
+   */
+  @Deprecated
   DROPDOWN__OPEN("tobago-dropdown-open"),
+  /**
+   * @deprecated since 5.0.0
+   */
+  @Deprecated
   DROPDOWN__SELECTED("tobago-dropdown-selected"),
   FILE("tobago-file"),
   FIGURE("tobago-figure"),
diff --git a/tobago-core/src/test/resources/renderer/link/booleanInsideLink.html b/tobago-core/src/test/resources/renderer/link/booleanInsideLink.html
index a1a424d..3e2a0d0 100644
--- a/tobago-core/src/test/resources/renderer/link/booleanInsideLink.html
+++ b/tobago-core/src/test/resources/renderer/link/booleanInsideLink.html
@@ -16,7 +16,7 @@
 -->
 
 <tobago-dropdown id='id' class='dropdown'>
-  <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
+  <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link btn btn-link dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
   <div class='dropdown-menu' aria-labelledby='id::command' name='id'>
     <tobago-select-boolean-checkbox id='id' class='form-check dropdown-item'>
       <input class='form-check-input' type='checkbox' value='true' name='id' id='id::field'>
diff --git a/tobago-core/src/test/resources/renderer/link/manyInsideLink.html b/tobago-core/src/test/resources/renderer/link/manyInsideLink.html
index 887b42e..9601fe6 100644
--- a/tobago-core/src/test/resources/renderer/link/manyInsideLink.html
+++ b/tobago-core/src/test/resources/renderer/link/manyInsideLink.html
@@ -16,7 +16,7 @@
 -->
 
 <tobago-dropdown id='id' class='dropdown'>
-  <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
+  <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link btn btn-link dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
   <div class='dropdown-menu' aria-labelledby='id::command' name='id'>
     <tobago-select-many-checkbox>
       <div class='form-check dropdown-item'>
diff --git a/tobago-core/src/test/resources/renderer/link/radioInsideLink.html b/tobago-core/src/test/resources/renderer/link/radioInsideLink.html
index f982168..f3e71c6 100644
--- a/tobago-core/src/test/resources/renderer/link/radioInsideLink.html
+++ b/tobago-core/src/test/resources/renderer/link/radioInsideLink.html
@@ -16,7 +16,7 @@
 -->
 
 <tobago-dropdown id='id' class='dropdown'>
-  <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
+  <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link btn btn-link dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
   <div class='dropdown-menu' aria-labelledby='id::command' name='id'>
     <tobago-select-one-radio>
       <div class='form-check dropdown-item'>
diff --git a/tobago-core/src/test/resources/renderer/link/separatorInsideLink.html b/tobago-core/src/test/resources/renderer/link/separatorInsideLink.html
index e21ff09..43674b2 100644
--- a/tobago-core/src/test/resources/renderer/link/separatorInsideLink.html
+++ b/tobago-core/src/test/resources/renderer/link/separatorInsideLink.html
@@ -16,7 +16,7 @@
 -->
 
 <tobago-dropdown id='id' class='dropdown'>
-  <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
+  <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link btn btn-link dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
   <div class='dropdown-menu' aria-labelledby='id::command' name='id'>
     <a id='link1' name='link1' href='https://www.apache.org/' class='tobago-link dropdown-item'><tobago-behavior event='click' client-id='link1' omit='omit'></tobago-behavior><span>Link 1</span></a>
     <tobago-separator id='separator' class='dropdown-divider'>
diff --git a/tobago-core/src/test/resources/renderer/links/link-inside-links-sub.html b/tobago-core/src/test/resources/renderer/links/link-inside-links-sub.html
index 294ae20..9a04122 100644
--- a/tobago-core/src/test/resources/renderer/links/link-inside-links-sub.html
+++ b/tobago-core/src/test/resources/renderer/links/link-inside-links-sub.html
@@ -21,7 +21,7 @@
   <ul class='nav'>
     <li class='nav-item'>
       <tobago-dropdown id='id' class='dropdown'>
-        <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link dropdown-toggle nav-link'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>apache</span></button>
+        <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link btn btn-link dropdown-toggle nav-link'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>apache</span></button>
         <div class='dropdown-menu' aria-labelledby='id::command' name='id'>
           <a id='sub' name='sub' href='https://www.apache.org/' class='tobago-link dropdown-item nav-link'><tobago-behavior event='click' client-id='sub' omit='omit'></tobago-behavior><span>sub</span></a>
         </div>
