diff --git a/config/install/paragraphs.paragraphs_type.container.yml b/config/install/paragraphs.paragraphs_type.container.yml
index 16bce23..9f76e59 100644
--- a/config/install/paragraphs.paragraphs_type.container.yml
+++ b/config/install/paragraphs.paragraphs_type.container.yml
@@ -12,3 +12,6 @@ description: 'Use <em>Container</em> to group paragraphs to apply a common style
 behavior_plugins:
   style:
     enabled: true
+    groups:
+      general_group:
+        default: ''
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..9983872 100644
--- a/modules/paragraphs_collection_demo/paragraphs_collection_demo.install
+++ b/modules/paragraphs_collection_demo/paragraphs_collection_demo.install
@@ -82,11 +82,10 @@ function _paragraphs_collection_demo_add_background_plugin_field() {
     ],
     'style' => [
       'enabled' => TRUE,
-      'group' => '',
+      'groups' => ['general_group' => ['default' => '']],
     ],
   ]);
   $container->save();
-
 }
 
 /**
@@ -108,7 +107,7 @@ function _paragraphs_collection_demo_create_demo_article() {
     'type' => 'container',
     'paragraphs_container_paragraphs' => [$style_text_paragraph],
   ]);
-  $style_paragraph->setBehaviorSettings('style', ['style' => 'paragraphs-green']);
+  $style_paragraph->setBehaviorSettings('style', ['styles' => ['general_group' => 'paragraphs-green']]);
   $style_paragraph->save();
   $paragraphs[] = $style_paragraph;
 
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.module b/paragraphs_collection.module
index 41f4a0b..dc952ab 100644
--- a/paragraphs_collection.module
+++ b/paragraphs_collection.module
@@ -68,7 +68,7 @@ function paragraphs_collection_theme() {
  * * Implements hook_modules_installed().
  */
 function paragraphs_collection_modules_installed($modules) {
-  \Drupal::cache('discovery')->deleteMultiple(['paragraphs_collection_grid_layouts', 'paragraphs_collection_style']);
+  \Drupal::cache('discovery')->deleteMultiple(['paragraphs_collection_grid_layouts', 'paragraphs_collection_style', 'paragraphs_collection_style_group']);
 }
 
 /**
diff --git a/paragraphs_collection.services.yml b/paragraphs_collection.services.yml
index de5bbbd..0e70941 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', '@string_translation', '@controller_resolver', '@cache.discovery', '@theme_handler', '@config.factory']
   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..b04be1d 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,23 @@ 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'];
+      }
+      //debug($this->yamlStyleDiscovery->getStyleOptions());
+      $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 +147,43 @@ 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'),
+      '#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 +194,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 +211,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 +219,7 @@ class ParagraphsStylePlugin extends ParagraphsBehaviorBase implements ContainerF
    */
   public function defaultConfiguration() {
     return [
-      'group' => '',
-      'default' => '',
+      'groups' => [],
     ];
   }
 
@@ -201,34 +229,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 +309,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/StyleDiscovery.php b/src/StyleDiscovery.php
index 2137729..978920c 100644
--- a/src/StyleDiscovery.php
+++ b/src/StyleDiscovery.php
@@ -102,7 +102,7 @@ class StyleDiscovery implements StyleDiscoveryInterface {
     $enabled_styles = $this->configFactory->get('paragraphs_collection.settings')->get('enabled_styles');
     foreach ($style_collection as $style => $definition) {
       if (empty($enabled_styles) || in_array($style, $enabled_styles)) {
-        if ((empty($group) || in_array($group, $definition['groups']))) {
+        if (empty($group) || in_array($group, $definition['groups'])) {
           $options[$style] = $definition['title'];
         }
       }
diff --git a/src/StyleDiscovery.php b/src/StyleGroupDiscovery.php
similarity index 52%
copy from src/StyleDiscovery.php
copy to src/StyleGroupDiscovery.php
index 2137729..ec7abfe 100644
--- a/src/StyleDiscovery.php
+++ b/src/StyleGroupDiscovery.php
@@ -12,21 +12,13 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\Core\StringTranslation\TranslationInterface;
 
 /**
- * Provides common helper methods for style discovery.
- * @todo Create documentation for style discovery https://www.drupal.org/node/2837995
+ * Provides common helper methods for style group discovery.
  */
-class StyleDiscovery implements StyleDiscoveryInterface {
+class StyleGroupDiscovery implements StyleGroupDiscoveryInterface {
 
   use StringTranslationTrait;
 
   /**
-   * Collection of styles with its definition.
-   *
-   * @var array
-   */
-  protected $stylesCollection;
-
-  /**
    * Collection of style groups with their definition.
    *
    * @var array
@@ -96,90 +88,46 @@ class StyleDiscovery implements StyleDiscoveryInterface {
   /**
    * {@inheritdoc}
    */
-  public function getStyleOptions($group = '') {
-    $options = [];
-    $style_collection = $this->getStyles();
-    $enabled_styles = $this->configFactory->get('paragraphs_collection.settings')->get('enabled_styles');
-    foreach ($style_collection as $style => $definition) {
-      if (empty($enabled_styles) || in_array($style, $enabled_styles)) {
-        if ((empty($group) || in_array($group, $definition['groups']))) {
-          $options[$style] = $definition['title'];
-        }
-      }
-    };
-    uasort($options, 'strcasecmp');
-    return $options;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getStyles() {
-    $cache_id = 'paragraphs_collection_style';
-    if ($this->stylesCollection !== NULL) {
-      return $this->stylesCollection;
+  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->stylesCollection = $cached->data;
+      $this->groupCollection = $cached->data;
     }
     else {
       $yaml_discovery = $this->getYamlDiscovery();
-      $this->stylesCollection = [];
-      foreach ($yaml_discovery->findAll() as $module => $styles) {
-        foreach ($styles as $style => $definition) {
-          if (empty($definition['title'])) {
-            throw new InvalidStyleException('The "title" of "' . $style . '" must be non-empty.');
-          }
-          $definition['title'] = $this->t($definition['title']);
-          if (!empty($definition['description'])) {
-            $definition['description'] = $this->t($definition['description']);
+      $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->stylesCollection[$style] = ['name' => $style];
-          $this->stylesCollection[$style] += $definition + ['libraries' => []];
+          $this->groupCollection[$group] = $this->t($definition['label']);
         }
       }
-      $this->cache->set($cache_id, $this->stylesCollection);
+      $this->cache->set($cache_id, $this->groupCollection);
     }
-    return $this->stylesCollection;
+    return $this->groupCollection;
   }
 
   /**
    * {@inheritdoc}
    */
-  public function getStyle($style, $default = NULL) {
-    $styles = $this->getStyles();
-    $enabled_styles = $this->configFactory->get('paragraphs_collection.settings')->get('enabled_styles');
-    if (empty($enabled_styles) || in_array($style, $enabled_styles)) {
-      if (isset($styles[$style])) {
-        return $styles[$style];
-      }
-
-      if ($default && isset($styles[$default])) {
-        return $styles[$default];
-      }
+  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 getStyleGroups() {
-    if ($this->groupCollection !== NULL) {
-      return $this->groupCollection;
-    }
-    else if (!empty($styles = $this->getStyles())) {
-      foreach ($styles as $style => $definition) {
-        foreach ($definition['groups'] as $group) {
-          $this->groupCollection[$group] = $group;
-        }
-      }
-    }
-    else {
-      $this->groupCollection = [];
-    }
-    return $this->groupCollection;
+  public function getGroupId($group_label) {
+    return strtolower(str_replace(' ', '_', $group_label));
   }
 
   /**
@@ -189,15 +137,7 @@ class StyleDiscovery implements StyleDiscoveryInterface {
    *   The YAML discovery.
    */
   protected function getYamlDiscovery() {
-    return new YamlDiscovery('paragraphs.style', $this->moduleHandler->getModuleDirectories() + $this->themeHandler->getThemeDirectories());
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getLibraries($style) {
-    $collection = $this->getStyles();
-    return $collection[$style]['libraries'];
+    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..5fbee17 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,36 +261,52 @@ 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);
 
     // Add a node with paragraphs and check the available styles.
     $this->drupalGet('node/add/paragraphed_test');
-    $this->drupalPostAjaxForm(NULL, NULL, 'paragraphs_container_add_more');
+    $this->drupalPostAjaxForm(NULL, NULL, 'paragraphs_' . $paragraph_type . '_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'
+      'paragraphs[0][behavior_plugins][style][style_wrapper][styles][bold_test_group]' => 'bold'
     ];
     $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->drupalPostAjaxForm('admin/structure/paragraphs_type/' . $paragraph_type, $edit, 'behavior_plugins[style][settings][groups][]');
+    $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');
@@ -301,21 +317,156 @@ class ParagraphsStylePluginTest extends ParagraphsExperimentalTestBase {
     $this->clickLink('Edit');
     // Assert that only the two enabled styles are available.
     $options = $this->xpath('//*[contains(@class,"paragraphs-style")]/option');
-    $this->assertEqual(3, count($options));
+    $this->assertEqual(2, 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'
-    ];
-    $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][groups_defaults][italic_test_group][default]")]/option');
     $this->assertEqual(2, count($options));
     $this->assertEqual($options[0], '- None -');
     $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
