diff --git editors/whizzywig.inc editors/whizzywig.inc
index d82cc0f..c1abc7f 100644
--- editors/whizzywig.inc
+++ editors/whizzywig.inc
@@ -22,6 +22,7 @@ function wysiwyg_whizzywig_editor() {
     'version callback' => 'wysiwyg_whizzywig_version',
     'settings callback' => 'wysiwyg_whizzywig_settings',
     'plugin callback' => 'wysiwyg_whizzywig_plugins',
+    'toolbar separator' => TRUE,
     'versions' => array(
       '55' => array(
         'js files' => array('whizzywig.js'),
@@ -93,12 +94,20 @@ function wysiwyg_whizzywig_settings($editor, $config, $theme) {
 
   // Add configured buttons or all available.
   $settings['buttons'] = array();
-  if (!empty($config['buttons'])) {
+  if (!empty($config['toolbar'])) {
+    // Whizzywig supports only one button group/row.
+    $group_config = $config['toolbar'][0][0];
     $buttons = array();
-    foreach ($config['buttons'] as $plugin) {
-      $buttons = array_merge($buttons, $plugin);
+    foreach ($group_config as $button_config) {
+      $button = $button_config['button'];
+      if ($button == 'separator') {
+        $buttons[] = '|';
+      }
+      else {
+        $buttons[] = $button;
+      }
     }
-    $settings['buttons'] = implode(' ', array_keys($buttons));
+    $settings['buttons'] = implode(' ', $buttons);
   }
 
   // Add editor content stylesheet.
diff --git editors/wymeditor.inc editors/wymeditor.inc
index 3e8ffd2..92d4b7b 100644
--- editors/wymeditor.inc
+++ editors/wymeditor.inc
@@ -113,34 +113,30 @@ function wysiwyg_wymeditor_settings($editor, $config, $theme) {
 
   // Add configured buttons.
   $settings['toolsItems'] = array();
-  if (!empty($config['buttons'])) {
+  if (!empty($config['toolbar'])) {
+    // WYMeditor only supports one group/row of buttons.
+    $group_config = $config['toolbar'][0][0];
     $buttoninfo = _wysiwyg_wymeditor_button_info();
     $plugins = wysiwyg_get_plugins($editor['name']);
-    foreach ($config['buttons'] as $plugin => $buttons) {
-      foreach ($buttons as $button => $enabled) {
-        // Iterate separately over buttons and extensions properties.
-        foreach (array('buttons', 'extensions') as $type) {
-          // Skip unavailable plugins.
-          if (!isset($plugins[$plugin][$type][$button])) {
-            continue;
-          }
-          // Add buttons.
-          if ($type == 'buttons') {
-            // Merge meta-data for internal default buttons.
-            if (isset($buttoninfo[$button])) {
-              $buttoninfo[$button] += array('name' => $button);
-              $settings['toolsItems'][] = $buttoninfo[$button];
-            }
-            // For custom buttons, try to provide a valid button definition.
-            else {
-              $settings['toolsItems'][] = array(
-                'name' => $button,
-                'title' => $plugins[$plugin][$type][$button],
-                'css' => 'wym_tools_' . $button,
-              );
-            }
-          }
-        }
+    foreach ($group_config as $button_config) {
+      $button = $button_config['button'];
+      $plugin = $button_config['plugin'];
+      // Skip unavailable plugins.
+      if (!isset($plugins[$plugin]['buttons'][$button])) {
+        continue;
+      }
+      // Merge meta-data for internal default buttons.
+      if (isset($buttoninfo[$button])) {
+        $buttoninfo[$button] += array('name' => $button);
+        $settings['toolsItems'][] = $buttoninfo[$button];
+      }
+      // For custom buttons, try to provide a valid button definition.
+      else {
+        $settings['toolsItems'][] = array(
+          'name' => $button,
+          'title' => $plugins[$plugin][$type][$button],
+          'css' => 'wym_tools_' . $button,
+        );
       }
     }
   }
diff --git editors/yui.inc editors/yui.inc
index 7e3c697..389bc26 100644
--- editors/yui.inc
+++ editors/yui.inc
@@ -45,6 +45,8 @@ function wysiwyg_yui_editor() {
     'load callback' => 'wysiwyg_yui_load',
     'settings callback' => 'wysiwyg_yui_settings',
     'plugin callback' => 'wysiwyg_yui_plugins',
+    'toolbar groups' => TRUE,
+    'toolbar separator' => TRUE,
     'versions' => array(
       '2.7.0' => array(
         'js files' => array('yui.js'),
@@ -151,10 +153,15 @@ function wysiwyg_yui_settings($editor, $config, $theme) {
       'buttons' => array(),
     ),
   );
-  if (!empty($config['buttons'])) {
+  if (!empty($config['toolbar'])) {
     $buttons = array();
-    foreach ($config['buttons'] as $plugin => $enabled_buttons) {
-      foreach ($enabled_buttons as $button => $enabled) {
+    // YUI Editor can only use one toolbar row.
+    $row = $config['toolbar'][0];
+    foreach ($row as $group_index => $group_config) {
+      $group = array('group' => 'group' . $group_index, 'label' => '', 'buttons' => array());
+      foreach ($group_config as $button_config) {
+        $button = $button_config['button'];
+        $plugin = $button_config['plugin'];
         $extra = array();
         if ($button == 'heading') {
           $extra = array('menu' => array(
@@ -190,12 +197,11 @@ function wysiwyg_yui_settings($editor, $config, $theme) {
             array('text' => 'Verdana'),
           ));
         }
-        $buttons[] = wysiwyg_yui_button_setting($editor, $plugin, $button, $extra);
+        $group['buttons'][] = wysiwyg_yui_button_setting($editor, $plugin, $button, $extra);
       }
+      $buttons[] = $group;
     }
-    // Group buttons in a dummy group.
-    $buttons = array('group' => 'default', 'label' => '', 'buttons' => $buttons);
-    $settings['toolbar']['buttons'] = array($buttons);
+    $settings['toolbar']['buttons'] = $buttons;
   }
 
   if (isset($config['css_setting'])) {
