     <bevel-button> ;
 
 : <toolbar> ( target -- toolbar )
-    [
-        "toolbar" over class command-map commands>> swap
-        [ -rot <command-button> gadget, ] curry assoc-each
-    ] make-shelf ;
+  <shelf>
+    swap
+    "toolbar" over class command-map commands>> swap
+    [ -rot <command-button> add-gadget ] curry assoc-each ;
 
 : toolbar, ( -- ) g <toolbar> f track, ;

    over set-button-selected?
    relayout-1 ;

: <radio-controls> ( model assoc quot -- )
    #! quot has stack effect ( value model label -- )
    swapd [ swapd call gadget, ] 2curry assoc-each ; inline

: radio-button-theme ( gadget -- gadget )
    { 5 5 } >>gap

    { 5 5 } >>gap drop ;

: <radio-buttons> ( model assoc -- gadget )
  <filled-pile>
    -rot
    [ <radio-button> ] <radio-controls>
  dup radio-buttons-theme ;

: <toggle-button> ( value model label -- gadget )
    <radio-control> bevel-button-theme ;

: <toggle-buttons> ( model assoc -- gadget )
  <shelf>
    -rot
    [ <toggle-button> ] <radio-controls> ;

: command-button-quot ( target command -- quot )
    [ invoke-command drop ] 2curry ;
