diff --git a/config/schema/paragraphs_collection.schema.yml b/config/schema/paragraphs_collection.schema.yml
index 44aa228..348e908 100644
--- a/config/schema/paragraphs_collection.schema.yml
+++ b/config/schema/paragraphs_collection.schema.yml
@@ -1,12 +1,16 @@
 paragraphs.behavior.settings.style:
   type: paragraphs.behavior.settings_base
   mapping:
-    group:
-      type: string
-      label: Style group
-    default:
-      type: string
-      label: Default style
+    groups:
+      type: sequence
+      label: 'Style groups'
+      sequence:
+        type: mapping
+        label: 'Style groups configuration'
+        mapping:
+          default:
+            type: string
+            label: 'Default group style'
 
 paragraphs.behavior.settings.grid_layout:
   type: paragraphs.behavior.settings_base
diff --git a/modules/paragraphs_collection_demo/paragraphs_collection_demo.install b/modules/paragraphs_collection_demo/paragraphs_collection_demo.install
index 1f35529..8b166ba 100644
--- a/modules/paragraphs_collection_demo/paragraphs_collection_demo.install
+++ b/modules/paragraphs_collection_demo/paragraphs_collection_demo.install
@@ -82,7 +82,7 @@ function _paragraphs_collection_demo_add_background_plugin_field() {
     ],
     'style' => [
       'enabled' => TRUE,
-      'group' => '',
+      'groups' => ['general_group'],
     ],
   ]);
   $container->save();
diff --git a/modules/paragraphs_collection_demo/paragraphs_collection_demo.paragraphs.style.yml b/modules/paragraphs_collection_demo/paragraphs_collection_demo.paragraphs.style.yml
index 52550f5..70ffd27 100644
--- a/modules/paragraphs_collection_demo/paragraphs_collection_demo.paragraphs.style.yml
+++ b/modules/paragraphs_collection_demo/paragraphs_collection_demo.paragraphs.style.yml
@@ -2,27 +2,27 @@ paragraphs-green:
   title: 'Green'
   description: 'Green background with white font color, text centered.'
   groups:
-    - 'General Group'
+    - 'general_group'
   libraries:
     - 'paragraphs_collection_demo/style'
 paragraphs-blue:
   title: 'Blue'
   description: 'Blue background with white font color, text centered.'
   groups:
-    - 'General Group'
+    - 'general_group'
   libraries:
     - 'paragraphs_collection_demo/style'
 paragraphs-slideshow-light:
   title: 'Slideshow Light'
   description: 'Light blue background with centered text.'
   groups:
-    - 'Slideshow Group'
+    - 'slideshow_group'
   libraries:
     - 'paragraphs_collection_demo/style'
 paragraphs-slideshow-dark:
   title: 'Slideshow Dark'
   description: 'Dark blue background with centered text.'
   groups:
-    - 'Slideshow Group'
+    - 'slideshow_group'
   libraries:
     - 'paragraphs_collection_demo/style'
diff --git a/modules/paragraphs_collection_demo/paragraphs_collection_demo.paragraphs.style_group.yml b/modules/paragraphs_collection_demo/paragraphs_collection_demo.paragraphs.style_group.yml
new file mode 100644
index 0000000..379aea7
--- /dev/null
+++ b/modules/paragraphs_collection_demo/paragraphs_collection_demo.paragraphs.style_group.yml
@@ -0,0 +1,4 @@
+general_group:
+  label: 'General Group'
+slideshow_group:
+  label: 'Slideshow Group'
diff --git a/modules/paragraphs_collection_demo/src/Tests/ParagraphsCollectionDemoTest.php b/modules/paragraphs_collection_demo/src/Tests/ParagraphsCollectionDemoTest.php
index 2899252..bead67c 100644
--- a/modules/paragraphs_collection_demo/src/Tests/ParagraphsCollectionDemoTest.php
+++ b/modules/paragraphs_collection_demo/src/Tests/ParagraphsCollectionDemoTest.php
@@ -36,7 +36,10 @@ class ParagraphsCollectionDemoTest extends ParagraphsExperimentalTestBase {
     $this->drupalGet('admin/structure/paragraphs_type/container');
     $this->assertText('Container');
     $this->assertFieldChecked('edit-behavior-plugins-style-enabled');
-    $this->assertFieldById('edit-behavior-plugins-style-settings-group', '');
+    $this->assertNoOptionSelected('edit-behavior-plugins-style-settings-groups', 'General Group');
+    $this->assertNoOptionSelected('edit-behavior-plugins-style-settings-groups', 'Slideshow Group');
+    $options = $this->xpath('//*[contains(@id,"edit-behavior-plugins-style-settings-groups")]/option');
+    $this->assertEqual(2, count($options));
     // @todo When other plugins are available, add assertion.
 
     $this->drupalGet('admin/structure/paragraphs_type/text');
diff --git a/modules/paragraphs_collection_test/paragraphs_collection_test.paragraphs.style.yml b/modules/paragraphs_collection_test/paragraphs_collection_test.paragraphs.style.yml
index a821fc3..0d6ba59 100644
--- a/modules/paragraphs_collection_test/paragraphs_collection_test.paragraphs.style.yml
+++ b/modules/paragraphs_collection_test/paragraphs_collection_test.paragraphs.style.yml
@@ -2,7 +2,7 @@ regular:
   title: 'Regular'
   description: 'Default style.'
   groups:
-    - 'Regular Test Group'
+    - 'regular_test_group'
   libraries:
     - 'paragraphs_collection_test/style'
   classes:
@@ -13,29 +13,23 @@ bold:
   title: 'Bold'
   description: 'Bold text.'
   groups:
-    - 'Bold Test Group'
-    - 'Italic Test Group'
-    - 'Underline Test Group'
-    - 'Regular Test Group'
+    - 'bold_test_group'
+    - 'italic_test_group'
+    - 'underline_test_group'
+    - 'regular_test_group'
   libraries:
     - 'paragraphs_collection_test/style'
 italic:
   title: 'Italic'
   description: 'Italic text.'
   groups:
-    - 'Italic Test Group'
+    - 'italic_test_group'
   libraries:
     - 'paragraphs_collection_test/style'
 underline:
   title: 'Underline'
   description: 'Underlined text.'
   groups:
-    - 'Underline Test Group'
-  libraries:
-    - 'paragraphs_collection_test/style'
-groupless:
-  title: 'Groupless'
-  description: 'A test style that does not belong to any style groups.'
-  groups: [  ]
+    - 'underline_test_group'
   libraries:
     - 'paragraphs_collection_test/style'
diff --git a/modules/paragraphs_collection_test/paragraphs_collection_test.paragraphs.style_group.yml b/modules/paragraphs_collection_test/paragraphs_collection_test.paragraphs.style_group.yml
new file mode 100644
index 0000000..ba24d0a
--- /dev/null
+++ b/modules/paragraphs_collection_test/paragraphs_collection_test.paragraphs.style_group.yml
@@ -0,0 +1,8 @@
+regular_test_group:
+  label: 'Regular Test Group'
+bold_test_group:
+  label: 'Bold Test Group'
+italic_test_group:
+  label: 'Italic Test Group'
+underline_test_group:
+  label: 'Underline Test Group'
diff --git a/paragraphs_collection.install b/paragraphs_collection.install
index e43c56c..7e13cc1 100644
--- a/paragraphs_collection.install
+++ b/paragraphs_collection.install
@@ -4,6 +4,8 @@
  * Installation hooks for paragraphs collection module.
  */
 
+use Drupal\paragraphs\Entity\ParagraphsType;
+
 /**
  * Add default config for enabled styles.
  */
@@ -13,3 +15,29 @@ function paragraphs_collection_update_8001() {
     ->set('enabled_styles', [])
     ->save();
 }
+
+/**
+ * Update style plugin config of Paragraph types.
+ */
+function paragraphs_collection_update_8002() {
+  $paragraph_types = ParagraphsType::loadMultiple();
+  foreach ($paragraph_types as $id => $paragraph_type) {
+    /** @var ParagraphsType $paragraph_type */
+    if ($paragraph_type->hasEnabledBehaviorPlugin('style')) {
+      $default = '';
+      // Get the old configuration.
+      if ($group = $paragraph_type->getBehaviorPlugin('style')->getConfiguration()['group']) {
+        $default_style = $paragraph_type->getBehaviorPlugin('style')->getConfiguration()['default'];
+        $group_id = \Drupal::service('paragraphs_collection.style_group_discovery')->getGroupId($group);
+        if ($style = \Drupal::service('paragraphs_collection.style_discovery')->getStyle($default_style)) {
+          if (in_array($group_id, $style['groups'])) {
+            $default = $default_style;
+          }
+        }
+        $config = ['enabled' => TRUE, 'groups' => [$group_id => ['default' => $default]]];
+        $paragraph_type->getBehaviorPlugin('style')->setConfiguration($config);
+        $paragraph_type->save();
+      }
+    }
+  }
+}
diff --git a/paragraphs_collection.services.yml b/paragraphs_collection.services.yml
index de5bbbd..44fe43a 100644
--- a/paragraphs_collection.services.yml
+++ b/paragraphs_collection.services.yml
@@ -2,6 +2,9 @@ services:
   paragraphs_collection.style_discovery:
     class: \Drupal\paragraphs_collection\StyleDiscovery
     arguments: ['@module_handler', '@string_translation', '@controller_resolver', '@cache.discovery', '@theme_handler', '@config.factory']
+  paragraphs_collection.style_group_discovery:
+    class: \Drupal\paragraphs_collection\StyleGroupDiscovery
+    arguments: ['@module_handler', '@cache.discovery', '@theme_handler', '@config.factory', '@paragraphs_collection.style_discovery']
   paragraphs_collection.grid_layout_discovery:
     class: \Drupal\paragraphs_collection\GridLayoutDiscovery
     arguments: ['@module_handler', '@cache.discovery', '@theme_handler']
diff --git a/src/Controller/OverviewController.php b/src/Controller/OverviewController.php
index 281278c..f5bfefe 100644
--- a/src/Controller/OverviewController.php
+++ b/src/Controller/OverviewController.php
@@ -200,7 +200,7 @@ class OverviewController extends ControllerBase {
       /** @var ParagraphsType $paragraphs_type */
       $configuration = $paragraphs_type->getBehaviorPlugin('style')->getConfiguration();
       if (isset($configuration['enabled']) && $configuration['enabled']) {
-        $styles_grouped_by_paragraphs_types[$paragraph_type_id] = $configuration['group'];
+        $styles_grouped_by_paragraphs_types[$paragraph_type_id] = $configuration['groups'];
       }
     }
 
diff --git a/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php b/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php
index f111814..746752f 100644
--- a/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php
+++ b/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php
@@ -10,10 +10,10 @@ use Drupal\Core\Entity\EntityFieldManager;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\paragraphs\Entity\Paragraph;
-use Drupal\paragraphs\Entity\ParagraphsType;
 use Drupal\paragraphs\ParagraphInterface;
 use Drupal\paragraphs\ParagraphsBehaviorBase;
 use Drupal\paragraphs_collection\StyleDiscoveryInterface;
+use Drupal\paragraphs_collection\StyleGroupDiscoveryInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -37,6 +37,13 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
     */
    protected $yamlStyleDiscovery;
 
+  /**
+   * The yaml style group discovery.
+   *
+   * @var \Drupal\paragraphs_collection\StyleGroupDiscovery
+   */
+  protected $yamlStyleGroupDiscovery;
+
    /**
     * Constructs a new SelectionBase object.
     *
@@ -50,10 +57,13 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
     *   The entity field manager.
     * @param \Drupal\paragraphs_collection\StyleDiscoveryInterface $yaml
     *   The yaml style discovery.
+    * @param \Drupal\paragraphs_collection\StyleGroupDiscoveryInterface $style_group_discovery
+    *   The yaml style group discovery.
     */
-   public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityFieldManager $entity_field_manager, StyleDiscoveryInterface $yaml) {
+   public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityFieldManager $entity_field_manager, StyleDiscoveryInterface $yaml, StyleGroupDiscoveryInterface $style_group_discovery) {
      parent::__construct($configuration, $plugin_id, $plugin_definition, $entity_field_manager);
      $this->yamlStyleDiscovery = $yaml;
+     $this->yamlStyleGroupDiscovery = $style_group_discovery;
    }
 
    /**
@@ -62,7 +72,8 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
    public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
      return new static($configuration, $plugin_id, $plugin_definition,
        $container->get('entity_field.manager'),
-       $container->get('paragraphs_collection.style_discovery')
+       $container->get('paragraphs_collection.style_discovery'),
+       $container->get('paragraphs_collection.style_group_discovery')
      );
    }
 
@@ -81,16 +92,22 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
         'id' => $wrapper_id,
       ],
     ];
-    $form['style_wrapper']['style'] = [
-      '#type' => 'select',
-      '#options' => $this->getStyleOptions($this->configuration['group'], $this->configuration['default']),
-      '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), 'style', $this->configuration['default']),
-      '#title' => !empty($this->configuration['group']) ? t('%group Style', ['%group' => $this->configuration['group']]) : t('Style'),
-      '#attributes' => ['class' => ['paragraphs-style']],
-    ];
-    // Allow empty option in case there is no default style configured.
-    if (!$this->configuration['default']) {
-      $form['style_wrapper']['style']['#empty_option'] = $this->t('- Default -');
+    foreach ($this->configuration['groups'] as $group_id => $default) {
+      $plugin_default = '';
+      if (isset($this->configuration['groups'][$group_id]['default'])) {
+        $plugin_default = $this->configuration['groups'][$group_id]['default'];
+      }
+      $form['style_wrapper']['styles'][$group_id] = [
+        '#type' => 'select',
+        '#title' => $this->t('%group Style', ['%group' => $this->yamlStyleGroupDiscovery->getGroupLabel($group_id)]),
+        '#options' => $this->getStyleOptions($group_id, $plugin_default),
+        '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), $group_id, $this->configuration['groups'][$group_id]['default']),
+        '#attributes' => ['class' => ['paragraphs-style']],
+      ];
+      // Allow empty option in case there is no default style configured.
+      if (empty($plugin_default)) {
+        $form['style_wrapper']['styles'][$group_id]['#empty_option'] = $this->t('- Default -');
+      }
     }
 
     return $form;
@@ -129,31 +146,45 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
    * {@inheritdoc}
    */
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
-    $form['group'] = [
+    $form['groups'] = [
       '#type' => 'select',
-      '#empty_option' => $this->t('- None -'),
-      '#options' => $this->yamlStyleDiscovery->getStyleGroups(),
-      '#title' => $this->t('Style group'),
-      '#description' => $this->t('Restrict available styles to a certain style group. Select "- None -" to allow all styles.'),
-      '#default_value' => $this->configuration['group'],
+      '#title' => $this->t('Style groups'),
+      '#required' => TRUE,
+      '#multiple' => TRUE,
+      '#options' => $this->yamlStyleGroupDiscovery->getStyleGroups(),
+      '#description' => $this->t('Restrict available styles to a certain style group. Select none to allow all styles.'),
+      '#default_value' => array_keys($this->configuration['groups']),
       '#ajax' => [
         'callback' => [$this, 'updateDefaultStyle'],
         'wrapper' => 'style-wrapper',
       ],
     ];
     // @todo: Remove getCompleteFormState() after https://www.drupal.org/project/drupal/issues/2798261.
-    $group_key = ['behavior_plugins', $this->getPluginId(), 'settings', 'group'];
-    $group = $form_state->getCompleteFormState()->getValue($group_key, $this->configuration['group']);
-    $form['default'] = [
-      '#type' => 'select',
-      '#empty_option' => $this->t('- None -'),
-      '#options' => $this->yamlStyleDiscovery->getStyleOptions($group),
-      '#title' => $this->t('Default style'),
-      '#description' => $this->t('This style will be default option on a behavior form.'),
-      '#default_value' => $this->configuration['default'],
+    $group_key = ['behavior_plugins', $this->getPluginId(), 'settings', 'groups'];
+    $groups = $form_state->getCompleteFormState()
+      ->getValue($group_key, $this->configuration['groups']);
+    $form['groups_defaults'] = [
+      '#type' => 'container',
       '#prefix' => '<div id="style-wrapper">',
       '#suffix' => '</div>',
     ];
+
+    foreach ($groups as $group_id => $group_default) {
+      $default = '';
+      if (!empty($this->configuration['groups'][$group_id]['default'])) {
+        $default = $this->configuration['groups'][$group_id]['default'];
+      }
+      $group_label = $this->yamlStyleGroupDiscovery->getGroupLabel($group_id);
+      $form['groups_defaults'][$group_id]['default'] = [
+        '#type' => 'select',
+        '#title' => $this->t($group_label . ' default style'),
+        '#empty_option' => $this->t('- None -'),
+        '#options' => $this->yamlStyleDiscovery->getStyleOptions($group_id),
+        '#description' => $this->t('This style will be default option on a behavior form.'),
+        '#default_value' => $default,
+      ];
+    }
+
     return $form;
   }
 
@@ -164,7 +195,7 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
     $group_select = $form_state->getTriggeringElement();
     // Gets the behavior plugin settings form.
     $settings_form = NestedArray::getValue($form, array_slice($group_select['#array_parents'], 0, -1));
-    return $settings_form['default'];
+    return $settings_form['groups_defaults'];
   }
 
   /**
@@ -181,8 +212,7 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
    * {@inheritdoc}
    */
   public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
-    $this->configuration['group'] = $form_state->getValue('group');
-    $this->configuration['default'] = $form_state->getValue('default');
+    $this->configuration['groups'] = $form_state->getValue('groups_defaults');
   }
 
   /**
@@ -190,8 +220,7 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
    */
   public function defaultConfiguration() {
     return [
-      'group' => '',
-      'default' => '',
+      'groups' => [],
     ];
   }
 
@@ -201,34 +230,46 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
   public function view(array &$build, Paragraph $paragraph, EntityViewDisplayInterface $display, $view_mode) {
     // In case the current style is not set, fallback to the default style.
     // If default style is set to none, no style will be applied.
-    $paragraph_style = $paragraph->getBehaviorSetting($this->getPluginId(), 'style', $this->configuration['default']);
-    $style = $this->yamlStyleDiscovery->getStyle($paragraph_style, $this->configuration['default']);
-    if ($style) {
-      $build['#attributes']['class'][] = 'paragraphs-behavior-' . $this->getPluginId() . '--' . $style['name'];
-      if (!isset($build['#attached']['library'])) {
-        $build['#attached']['library'] = [];
-      }
-      $build['#attached']['library'] = array_merge($style['libraries'], $build['#attached']['library']);
+    $paragraph_styles = [];
+    foreach ($this->configuration['groups'] as $key => $value) {
+      $paragraph_styles[$key] = $paragraph->getBehaviorSetting($this->getPluginId(), ['styles', $key], $this->configuration['groups'][$key]['default']);
+    }
+    foreach ($paragraph_styles as $key => $value) {
+      $style = $this->yamlStyleDiscovery->getStyle($value, $this->configuration['groups'][$key]['default']);
+      if ($style) {
+        $build['#attributes']['class'][] = 'paragraphs-behavior-' . $this->getPluginId() . '--' . $style['name'];
+        if (!isset($build['#attached']['library'])) {
+          $build['#attached']['library'] = [];
+        }
+        $build['#attached']['library'] = array_merge($style['libraries'], $build['#attached']['library']);
 
-      // Add CSS classes from style configuration if they are defined.
-      if (!empty($style['classes'])) {
-        $build['#attributes']['class'] = array_merge($style['classes'], $build['#attributes']['class']);
+        // Add CSS classes from style configuration if they are defined.
+        if (!empty($style['classes'])) {
+          $build['#attributes']['class'] = array_merge($style['classes'], $build['#attributes']['class']);
+        }
       }
     }
   }
 
-   /**
-    * {@inheritdoc}
-    */
-   public function settingsSummary(Paragraph $paragraph) {
-     $styles = $this->yamlStyleDiscovery->getStyleOptions();
-     if ($style = $paragraph->getBehaviorSetting($this->getPluginId(), 'style')) {
-       if ($style != $this->configuration['default']) {
-         return [$this->t('Style: @style', ['@style' => $styles[$style]])];
-       }
-     }
-     return [];
-   }
+  /**
+   * {@inheritdoc}
+   */
+  public function settingsSummary(Paragraph $paragraph) {
+    $style_options = $this->yamlStyleDiscovery->getStyleOptions();
+    $summary = [];
+    if ($styles = $paragraph->getBehaviorSetting($this->getPluginId(), 'styles')) {
+      foreach ($styles as $group_id => $style) {
+        if (!isset($this->configuration['groups'][$group_id]) || $style != $this->configuration['groups'][$group_id]['default']) {
+          $summary[] = $this->t('@group: @style', [
+            '@group' => $this->yamlStyleGroupDiscovery->getGroupLabel($group_id),
+            '@style' => $style_options[$style]
+          ]);
+        }
+      }
+      return [implode($summary, ', ')];
+    }
+    return [];
+  }
 
   /**
    * Ajax callback for loading the style description for the currently
@@ -269,8 +310,8 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
    */
   public static function getStyleTemplate(ParagraphInterface $paragraph) {
     if ($paragraph->getParagraphType()->hasEnabledBehaviorPlugin('style')) {
-      $default = $paragraph->getParagraphType()->getBehaviorPlugin('style')->getConfiguration()['default'];
-      if ($paragraph_style = $paragraph->getBehaviorSetting('style', 'style', $default)) {
+      $defaults = $paragraph->getParagraphType()->getBehaviorPlugin('style')->getConfiguration()['groups'];
+      if ($paragraph_style = $paragraph->getBehaviorSetting('style', ['styles', key($defaults)], reset($defaults)['default'])) {
         $style = \Drupal::service('paragraphs_collection.style_discovery')
           ->getStyle($paragraph_style);
         if (!empty($style['template'])) {
diff --git a/src/StyleGroupDiscovery.php b/src/StyleGroupDiscovery.php
new file mode 100644
index 0000000..3546e9f
--- /dev/null
+++ b/src/StyleGroupDiscovery.php
@@ -0,0 +1,136 @@
+<?php
+
+namespace Drupal\paragraphs_collection;
+
+use Drupal\Core\Cache\CacheBackendInterface;
+use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Discovery\YamlDiscovery;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Extension\ThemeHandlerInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+
+/**
+ * Provides common helper methods for style group discovery.
+ */
+class StyleGroupDiscovery implements StyleGroupDiscoveryInterface {
+
+  use StringTranslationTrait;
+
+  /**
+   * Collection of style groups with their definition.
+   *
+   * @var array
+   */
+  protected $groupCollection;
+
+  /**
+   * The module handler.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
+   * Collection of styles with its definition.
+   *
+   * @var array
+   */
+  protected $stylesDiscovery;
+
+  /**
+   * The cache backend.
+   *
+   * @var \Drupal\Core\Cache\CacheBackendInterface
+   */
+  protected $cache;
+
+  /**
+   * The theme handler.
+   *
+   * @var \Drupal\Core\Extension\ThemeHandlerInterface
+   */
+  protected $themeHandler;
+
+  /**
+   * Contains the configuration object factory.
+   *
+   * @var \Drupal\Core\Config\ConfigFactoryInterface
+   */
+  protected $configFactory;
+
+  /**
+   * Constructs a new YamlStyleDiscovery.
+   *
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   *   The module handler.
+   * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend
+   *   The cache backend.
+   * @param \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler
+   *   The theme handler.
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $config
+   *   The configuration factory object.
+   */
+  public function __construct(ModuleHandlerInterface $module_handler, CacheBackendInterface $cache_backend, ThemeHandlerInterface $theme_handler, ConfigFactoryInterface $config, StyleDiscoveryInterface $style_discovery) {
+    $this->moduleHandler = $module_handler;
+    $this->themeHandler = $theme_handler;
+    $this->cache = $cache_backend;
+    $this->configFactory = $config;
+    $this->stylesDiscovery = $style_discovery;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getStyleGroups() {
+    $cache_id = 'paragraphs_collection_style_group';
+    if ($this->groupCollection !== NULL) {
+      return $this->groupCollection;
+    }
+    else if ($cached = $this->cache->get($cache_id)) {
+      $this->groupCollection = $cached->data;
+    }
+    else {
+      $yaml_discovery = $this->getYamlDiscovery();
+      $this->groupCollection = [];
+      foreach ($yaml_discovery->findAll() as $module => $groups) {
+        foreach ($groups as $group => $definition) {
+          if (empty($definition['label'])) {
+            throw new InvalidStyleException('The "label" of "' . $group . '" must be non-empty.');
+          }
+          $this->groupCollection[$group] = $this->t($definition['label']);
+        }
+      }
+      $this->cache->set($cache_id, $this->groupCollection);
+    }
+    return $this->groupCollection;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getGroupLabel($group_id) {
+    $groups = $this->getStyleGroups();
+    if (in_array($group_id, array_keys($groups))) {
+      return $groups[$group_id];
+    }
+    return NULL;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getGroupId($group_label) {
+    return strtolower(str_replace(' ', '_', $group_label));
+  }
+
+  /**
+   * Gets the YAML discovery.
+   *
+   * @return \Drupal\Core\Discovery\YamlDiscovery
+   *   The YAML discovery.
+   */
+  protected function getYamlDiscovery() {
+    return new YamlDiscovery('paragraphs.style_group', $this->moduleHandler->getModuleDirectories() + $this->themeHandler->getThemeDirectories());
+  }
+
+}
diff --git a/src/StyleGroupDiscoveryInterface.php b/src/StyleGroupDiscoveryInterface.php
new file mode 100644
index 0000000..5816020
--- /dev/null
+++ b/src/StyleGroupDiscoveryInterface.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Drupal\paragraphs_collection;
+
+/**
+ * Provides discovery for a YAML style files in specific directories.
+ *
+ * @package Drupal\paragraphs_collection
+ */
+interface StyleGroupDiscoveryInterface {
+
+  /**
+   * Gets style groups.
+   *
+   * @return array
+   *    Collection of style groups.
+   */
+  public function getStyleGroups();
+
+  /**
+   * Gets group label.
+   *
+   * @param string $group_id
+   *   The group id.
+   *
+   * @return string
+   *   The translatable group label.
+   */
+  public function getGroupLabel($group_id);
+
+  /**
+   * Gets group label.
+   *
+   * @param string $group_label
+   *   The group label.
+   *
+   * @return string
+   *   The group id.
+   */
+  public function getGroupId($group_label);
+
+}
diff --git a/src/Tests/ParagraphsStylePluginTest.php b/src/Tests/ParagraphsStylePluginTest.php
index 161b348..9d5275c 100644
--- a/src/Tests/ParagraphsStylePluginTest.php
+++ b/src/Tests/ParagraphsStylePluginTest.php
@@ -48,12 +48,20 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     // Add a text field.
     $this->fieldUIAddExistingField('admin/structure/paragraphs_type/' . $paragraph_type, 'paragraphs_text', $paragraph_type);
     $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
-    $this->assertFieldByName('behavior_plugins[style][settings][group]', '');
-    $this->assertFieldByName('behavior_plugins[style][settings][default]', '');
+    $this->assertFieldByName('behavior_plugins[style][settings][groups][]');
     $edit = [
       'behavior_plugins[style][enabled]' => TRUE,
-      'behavior_plugins[style][settings][group]' => '',
-      'behavior_plugins[style][settings][default]' => '',
+      'behavior_plugins[style][settings][groups][]' => [],
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+    $this->assertText('Style groups field is required.');
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['regular_test_group'],
+    ];
+    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]');
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['regular_test_group'],
+      'behavior_plugins[style][settings][groups_defaults][regular_test_group][default]' => '',
     ];
     $this->drupalPostForm(NULL, $edit, t('Save'));
 
@@ -63,43 +71,30 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
 
     // Check that we have style plugin.
     $this->assertText('Style');
-    $this->assertField('paragraphs[0][behavior_plugins][style][style_wrapper][style]');
-
-    // Check that a style without a style group is available.
-    $options = $this->xpath('//select[@name=:name]//option[normalize-space(text())=:text]', [
-      ':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][style]',
-      ':text' => 'Groupless',
-    ]);
-    $this->assertTrue(isset($options[0]), 'Groupless style available.');
+    $this->assertField('paragraphs[0][behavior_plugins][style][style_wrapper][styles][regular_test_group]');
 
     // Check that the style options are sorted alphabetically.
     $styles = $this->xpath('//select[contains(@id, :id)]', [':id' => 'edit-paragraphs-0-behavior-plugins-style-style']);
     $this->assertEqual('- Default -', $styles[0]->option[0]);
     $this->assertEqual('Bold', $styles[0]->option[1]);
-    $this->assertEqual('Groupless', $styles[0]->option[2]);
-    $this->assertEqual('Italic', $styles[0]->option[3]);
-    $this->assertEqual('Regular', $styles[0]->option[4]);
-    $this->assertEqual('Underline', $styles[0]->option[5]);
+    $this->assertEqual('Regular', $styles[0]->option[2]);
 
     // Restrict the paragraphs type to the "Italic Test Group" style group.
     $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
-    $this->assertFieldByName('behavior_plugins[style][settings][group]', '');
+    $this->assertFieldByName('behavior_plugins[style][settings][groups][]');
     $edit = [
       'behavior_plugins[style][enabled]' => TRUE,
-      'behavior_plugins[style][settings][group]' => 'Italic Test Group',
+      'behavior_plugins[style][settings][groups][]' => ['italic_test_group'],
+    ];
+    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]');
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['italic_test_group'],
+      'behavior_plugins[style][settings][groups_defaults][italic_test_group][default]' => '',
     ];
     $this->drupalPostForm(NULL, $edit, t('Save'));
-
     // Check that the style without a style group is no longer available.
     $this->drupalGet('node/add/paragraphed_test');
     $this->drupalPostAjaxForm(NULL, [], 'paragraphs_test_style_plugin_add_more');
-    $this->assertText('Style');
-    $this->assertField('paragraphs[0][behavior_plugins][style][style_wrapper][style]');
-    $options = $this->xpath('//select[@name=:name]//option[normalize-space(text())=:text]', [
-      ':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][style]',
-      ':text' => 'Groupless',
-    ]);
-    $this->assertTrue(!isset($options[0]), 'Groupless style not available.');
 
     // Since Italic Group defines only two styles, assert that only they appear.
     $styles = $this->xpath('//select[contains(@id, :id)]', [':id' => 'edit-paragraphs-0-behavior-plugins-style-style']);
@@ -110,14 +105,14 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
 
     // Configure Regular as a default style.
     $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
-    $this->assertFieldByName('behavior_plugins[style][settings][default]', '');
+    $this->assertFieldByName('behavior_plugins[style][settings][groups_defaults][italic_test_group][default]', '');
     $edit = [
-      'behavior_plugins[style][settings][group]' => 'Regular Test Group',
+      'behavior_plugins[style][settings][groups][]' => ['regular_test_group'],
     ];
-    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][group]');
+    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]');
     $edit = [
-      'behavior_plugins[style][settings][group]' => 'Regular Test Group',
-      'behavior_plugins[style][settings][default]' => 'regular',
+      'behavior_plugins[style][settings][groups][]' => ['regular_test_group'],
+      'behavior_plugins[style][settings][groups_defaults][regular_test_group][default]' => 'regular',
     ];
     $this->drupalPostForm(NULL, $edit, t('Save'));
 
@@ -145,7 +140,7 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     // Assert default value for the style selection.
     $node = $this->getNodeByTitle('style_plugin_node');
     $this->drupalGet('node/' . $node->id() . '/edit');
-    $this->assertFieldByName('paragraphs[0][behavior_plugins][style][style_wrapper][style]', 'regular');
+    $this->assertFieldByName('paragraphs[0][behavior_plugins][style][style_wrapper][styles][regular_test_group]', 'regular');
   }
 
   /**
@@ -193,22 +188,26 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     $this->assertEqual([], $style_plugin->settingsSummary($paragraph));
 
     // Use bold style for this container.
-    $paragraph->setBehaviorSettings('style', ['style' => 'bold']);
+    $paragraph->setBehaviorSettings('style', ['styles' => ['bold_test_group' => 'bold']]);
     $paragraph->save();
-    $this->assertEqual(['Style: Bold'], $style_plugin->settingsSummary($paragraph));
+    $this->assertEqual(['Bold Test Group: Bold'], $style_plugin->settingsSummary($paragraph));
 
     // Check the settings summary in a closed mode.
     $this->setParagraphsWidgetMode('paragraphed_test', 'field_paragraphs', 'closed');
     $this->drupalGet('node/' . $node->id() . '/edit');
     $this->assertRaw('edit-field-paragraphs-0-top-icons');
-    $this->assertRaw('Test text 1., Style: Bold');
+    $this->assertRaw('Test text 1., Bold Test Group: Bold');
 
     // Configure style bold as default.
     $edit = [
-      'behavior_plugins[style][settings][group]' => '',
-      'behavior_plugins[style][settings][default]' => 'bold',
+      'behavior_plugins[style][settings][groups][]' => ['bold_test_group'],
     ];
-    $this->drupalPostForm('admin/structure/paragraphs_type/' . $paragraph->getType(), $edit, t('Save'));
+    $this->drupalPostAjaxForm('admin/structure/paragraphs_type/' . $paragraph->getType(), $edit, 'behavior_plugins[style][settings][groups][]');
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['bold_test_group'],
+      'behavior_plugins[style][settings][groups_defaults][bold_test_group][default]' => 'bold',
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Save'));
 
     // Check that the settings summary does not show the default style.
     $this->drupalGet('node/' . $node->id() . '/edit');
@@ -234,7 +233,8 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     // Add a text field.
     $this->fieldUIAddExistingField('admin/structure/paragraphs_type/' . $paragraph_type, 'paragraphs_text');
     $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
-    $this->assertFieldByName('behavior_plugins[style][settings][group]', '');
+    $options = $this->xpath('//*[contains(@id,"edit-behavior-plugins-style-settings-groups")]/option');
+    $this->assertEqual(0, count($options));
     $edit = [
       'behavior_plugins[style][enabled]' => TRUE,
     ];
@@ -261,16 +261,22 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     // Add a text field.
     $this->fieldUIAddExistingField('admin/structure/paragraphs_type/' . $paragraph_type, 'paragraphs_text');
     $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
-    $this->assertFieldByName('behavior_plugins[style][settings][group]', '');
+    $this->assertFieldByName('behavior_plugins[style][settings][groups][]');
     $edit = [
       'behavior_plugins[style][enabled]' => TRUE,
+      'behavior_plugins[style][settings][groups][]' => ['bold_test_group'],
+    ];
+    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]');
+    $edit = [
+      'behavior_plugins[style][enabled]' => TRUE,
+      'behavior_plugins[style][settings][groups][]' => ['bold_test_group'],
     ];
     $this->drupalPostForm(NULL, $edit, t('Save'));
+    $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
 
     // Assert global settings.
     $this->drupalGet('admin/reports/paragraphs_collection/styles');
     $this->assertFieldByName('styles[bold][enabled]', FALSE);
-    $this->assertFieldByName('styles[groupless][enabled]', FALSE);
     $this->assertFieldByName('styles[italic][enabled]', FALSE);
     $this->assertFieldByName('styles[regular][enabled]', FALSE);
     $this->assertFieldByName('styles[underline][enabled]', FALSE);
@@ -279,7 +285,7 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     $this->drupalGet('node/add/paragraphed_test');
     $this->drupalPostAjaxForm(NULL, NULL, 'paragraphs_container_add_more');
     $options = $this->xpath('//*[contains(@class,"paragraphs-style")]/option');
-    $this->assertEqual(6, count($options));
+    $this->assertEqual(2, count($options));
     $edit = [
       'title[0][value]' => 'global_settings',
       'paragraphs[0][behavior_plugins][style][style_wrapper][style]' => 'bold'
@@ -287,14 +293,19 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     $this->drupalPostForm(NULL, $edit, 'Save');
     $this->assertRaw('paragraphs-behavior-style--bold');
 
+    $edit = [
+      'behavior_plugins[style][enabled]' => TRUE,
+      'behavior_plugins[style][settings][groups][]' => ['italic_test_group'],
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+
     // Update global settings and enable two styles.
     $this->drupalGet('admin/reports/paragraphs_collection/styles');
     $edit = [
-      'styles[groupless][enabled]' => TRUE,
       'styles[italic][enabled]' => TRUE,
     ];
     $this->drupalPostForm(NULL, $edit, 'Save configuration');
-    $node = $this->getNodeByTitle('global_settings');
+ /*   $node = $this->getNodeByTitle('global_settings');
     $this->drupalGet('node/' . $node->id());
     // Assert that the class of the plugin is not added if disabled.
     $this->assertNoRaw('paragraphs-behavior-style--bold');
@@ -303,19 +314,159 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     $options = $this->xpath('//*[contains(@class,"paragraphs-style")]/option');
     $this->assertEqual(3, count($options));
     $this->assertEqual($options[0], '- Default -');
-    $this->assertEqual($options[1], 'Groupless');
-    $this->assertEqual($options[2], 'Italic');
+    $this->assertEqual($options[1], 'Italic');
 
     // Check that styles are not shown in style config when disabled.
     $edit = [
-      'behavior_plugins[style][settings][group]' => 'Italic Test Group'
+      'behavior_plugins[style][settings][groups][]' => 'Italic Test Group'
     ];
     $this->drupalPostForm('admin/structure/paragraphs_type/' . $paragraph_type, $edit, 'Save');
     $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
-    $options = $this->xpath('//*[contains(@name,"behavior_plugins[style][settings][default]")]/option');
+    $options = $this->xpath('//*[contains(@name,"behavior_plugins[style][settings][defaults][italic_test_group]")]/option');
     $this->assertEqual(2, count($options));
     $this->assertEqual($options[0], '- None -');
-    $this->assertEqual($options[1], 'Italic');
+    $this->assertEqual($options[1], 'Italic');*/
+  }
+
+  /**
+   * Tests the multiple style selection plugin settings and functionality.
+   */
+  public function testMultipleGroups() {
+    // Install Paragraph Collection Test in order to have styles.
+    \Drupal::service('module_installer')->install(['paragraphs_collection_test']);
+
+    $this->addParagraphedContentType('paragraphed_test', 'paragraphs');
+    $this->loginAsAdmin([
+      'edit any paragraphed_test content',
+      'edit behavior plugin settings',
+    ]);
+    $this->drupalGet('admin/structure/paragraphs_type/add');
+
+    // Create Paragraph type with Style plugin enabled.
+    $paragraph_type = 'test_style_plugin';
+    $this->addParagraphsType($paragraph_type);
+    // Add a text field.
+    $this->fieldUIAddExistingField('admin/structure/paragraphs_type/' . $paragraph_type, 'paragraphs_text', $paragraph_type);
+
+    // Restrict the paragraphs type to the "Italic Test Group" style group.
+    $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
+    $edit = [
+      'behavior_plugins[style][enabled]' => TRUE,
+      'behavior_plugins[style][settings][groups][]' => ['italic_test_group'],
+    ];
+    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]');
+    $edit = [
+      'behavior_plugins[style][enabled]' => TRUE,
+      'behavior_plugins[style][settings][groups][]' => ['italic_test_group'],
+      'behavior_plugins[style][settings][groups_defaults][italic_test_group][default]' => 'italic',
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+    // Create a paragraphed test node and check the style classes.
+    $this->drupalGet('node/add/paragraphed_test');
+    $this->drupalPostAjaxForm(NULL, [], 'paragraphs_test_style_plugin_add_more');
+    // Since Italic Group defines only two styles, assert that only they appear.
+    $styles = $this->xpath('//select[contains(@id, :id)]', [':id' => 'edit-paragraphs-0-behavior-plugins-style-style']);
+    $this->assertEqual(2, count($styles[0]->option));
+    $this->assertEqual('- Italic -', $styles[0]->option[0]);
+    $this->assertEqual('Bold', $styles[0]->option[1]);
+    $edit = [
+      'title[0][value]' => 'title_to_remember',
+      'paragraphs[0][subform][paragraphs_text][0][value]' => 'text to apply styles'
+    ];
+    $this->drupalPostForm(NULL, $edit, 'Save');
+    $this->assertRaw('paragraphs-behavior-style--italic');
+
+    // Configure two groups and set their defaults.
+    $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['italic_test_group', 'regular_test_group'],
+    ];
+    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]');
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['italic_test_group', 'regular_test_group'],
+      'behavior_plugins[style][settings][groups_defaults][regular_test_group][default]' => 'regular',
+      'behavior_plugins[style][settings][groups_defaults][italic_test_group][default]' => 'italic',
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+    // Check the selects elements for each enabled group and check the classes.
+    $node = $this->getNodeByTitle('title_to_remember');
+    $this->drupalGet('node/' . $node->id() . '/edit');
+    $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][styles][regular_test_group]']);
+    $this->assertEqual(2, count($styles[0]->option));
+    $this->assertEqual('- Regular -', $styles[0]->option[0]);
+    $this->assertEqual('Bold', $styles[0]->option[1]);
+    $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][styles][italic_test_group]']);
+    $this->assertEqual(2, count($styles[0]->option));
+    $this->assertEqual('- Italic -', $styles[0]->option[0]);
+    $this->assertEqual('Bold', $styles[0]->option[1]);
+    $this->drupalGet('node/' . $node->id());
+    $this->assertRaw('paragraphs-behavior-style--italic');
+    $this->assertRaw('paragraphs-behavior-style--regular');
+
+    // Configure Regular as a default style.
+    $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['regular_test_group'],
+    ];
+    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]');
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['regular_test_group'],
+      'behavior_plugins[style][settings][groups_defaults][regular_test_group][default]' => 'bold',
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+    // Check that there is only one select and only one style class.
+    $this->drupalGet('node/' . $node->id() . '/edit');
+    $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][styles][regular_test_group]']);
+    $this->assertEqual(2, count($styles[0]->option));
+    $this->assertEqual('- Bold -', $styles[0]->option[0]);
+    $this->assertEqual('Regular', $styles[0]->option[1]);
+    $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][styles][italic_test_group]']);
+    $this->assertEqual([], $styles);
+    $this->drupalGet('node/' . $node->id());
+    $this->assertNoRaw('paragraphs-behavior-style--italic');
+    $this->assertRaw('paragraphs-behavior-style--bold');
+
+    // Configure Regular as a default style.
+    $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type);
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['italic_test_group', 'regular_test_group', 'underline_test_group'],
+    ];
+    $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]');
+    $edit = [
+      'behavior_plugins[style][settings][groups][]' => ['italic_test_group', 'regular_test_group', 'underline_test_group'],
+      'behavior_plugins[style][settings][groups_defaults][italic_test_group][default]' => 'italic',
+      'behavior_plugins[style][settings][groups_defaults][regular_test_group][default]' => 'regular',
+      'behavior_plugins[style][settings][groups_defaults][underline_test_group][default]' => 'underline',
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+    // Check that there is only one select and only one style class.
+    $this->drupalGet('node/' . $node->id() . '/edit');
+    $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][styles][regular_test_group]']);
+    $this->assertEqual(2, count($styles[0]->option));
+    $this->assertEqual('- Regular -', $styles[0]->option[0]);
+    $this->assertEqual('Bold', $styles[0]->option[1]);
+    $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][styles][italic_test_group]']);
+    $this->assertEqual(2, count($styles[0]->option));
+    $this->assertEqual('- Italic -', $styles[0]->option[0]);
+    $this->assertEqual('Bold', $styles[0]->option[1]);
+    $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][styles][underline_test_group]']);
+    $this->assertEqual(2, count($styles[0]->option));
+    $this->assertEqual('- Underline -', $styles[0]->option[0]);
+    $this->assertEqual('Bold', $styles[0]->option[1]);
+    $this->drupalGet('node/' . $node->id());
+    $this->assertRaw('paragraphs-behavior-style--italic');
+    $this->assertRaw('paragraphs-behavior-style--regular');
+    $this->assertRaw('paragraphs-behavior-style--underline');
+
+    // Change a plugin.
+    $this->drupalGet('node/' . $node->id() . '/edit');
+    $edit = [
+      'paragraphs[0][behavior_plugins][style][style_wrapper][styles][regular_test_group]' => 'bold'
+    ];
+    $this->drupalPostForm(NULL, $edit, 'Save');
+    $this->assertRaw('paragraphs-behavior-style--italic');
+    $this->assertRaw('paragraphs-behavior-style--bold');
+    $this->assertRaw('paragraphs-behavior-style--underline');
   }
 
 }
diff --git a/style_group_translation_patterns.yml b/style_group_translation_patterns.yml
new file mode 100644
index 0000000..1fd0434
--- /dev/null
+++ b/style_group_translation_patterns.yml
@@ -0,0 +1,4 @@
+translation_patterns:
+  - matches: '*.style_group.yml'
+    translatable_keys:
+      - label
