diff --git a/hshassets/forms/utils.py b/hshassets/forms/utils.py
index 31a1cf0b903133b0e4e4988991ce1bc281e61222..daa637c012ea36777a15d3d9c97e04b1c2e6f50e 100644
--- a/hshassets/forms/utils.py
+++ b/hshassets/forms/utils.py
@@ -27,7 +27,13 @@ def render_form_field(field, label=''):
         out = label_or_not(BulmaFieldMarkup.with_icons(field, field.as_widget()))
     elif input_type and getattr(BulmaFieldMarkup, input_type, None):
         # something else explicitly defined
-        out = getattr(BulmaFieldMarkup, input_type)(field, field.as_widget())
+        allow_multiple_selected = getattr(field.field.widget, 'allow_multiple_selected', False)
+        if input_type == 'checkbox' and allow_multiple_selected:
+            # Checkboxes for multi select have common label above and checkboxes
+            # with label of choice option.
+            out = label_or_not(BulmaFieldMarkup.div_control(field.as_widget()))
+        else:
+            out = getattr(BulmaFieldMarkup, input_type)(field, field.as_widget())
     else:
         # fallback default
         out = label_or_not(BulmaFieldMarkup.div_control(field.as_widget()))
@@ -48,7 +54,11 @@ class BulmaFieldMarkup(object):
         """Bulma requires to wrap every input field with this <div class="field">"""
         args_generator = ([str(e)] for e in field.errors)
         error_tags = format_html_join(str(), '<p class="help is-danger">{0}</p>', args_generator)
-        return format_html('<div class="field">{}{}</div>', content, error_tags)
+        if field.help_text:
+            help_tags = format_html('<p class=help>{}</p>', mark_safe(field.help_text))
+        else:
+            help_tags = ''
+        return format_html('<div class="field">{}{}{}</div>', content, error_tags, help_tags)
 
     @classmethod
     def div_control(cls, content, control_class='control'):
@@ -105,6 +115,7 @@ class BulmaFieldMarkup(object):
         """Checkboxes are super special, they wrap the input field with the label"""
         return cls.div_control(cls.label(mark_safe(content + ' ' + str(field.label)), css_class='checkbox'))
 
+
     @classmethod
     def radio(cls, field, content):
         choice_markup = ''
@@ -128,14 +139,14 @@ def render_form_generics(
     rendered_errors,
     rendered_submit_button,
     submit_only_once=True,
-    form_id=''
+    form_id='',
 ):
     csrf_field = defaulttags.CsrfTokenNode().render(context)
     submit_only_once = "true" if submit_only_once else "false"
     form_icon = None
     form_id = 'id={}'.format(form_id) if form_id else ''
     return format_html(
-        """
+        f"""
         <form method="post" {form_id} data-submit-only-once="{submit_only_once}">
             {csrf_field}
             {rendered_errors}
diff --git a/hshassets/templatetags/bulma.py b/hshassets/templatetags/bulma.py
index b2daafbc638b51fbbdb9d5da7fbfd6179974e011..0d2d35bf7a94063eaa685cb938389696fed12f7f 100644
--- a/hshassets/templatetags/bulma.py
+++ b/hshassets/templatetags/bulma.py
@@ -63,13 +63,20 @@ def bulma_form(
     submit_class="button is-outlined",
     submit_icon="fas fa-check",
     submit_only_once=True,
-    form_id=''
+    form_id='',
 ):
     """Renders whole form, including errors, csrf and a submit button."""
     fields = bulma_form_fields(form)
     errors = bulma_form_errors(form)
     submit = bulma_submit_button(text=submit_text, css_class=submit_class, icon=submit_icon)
-    return render_form_generics(context, fields, errors, submit, submit_only_once, form_id)
+    return render_form_generics(
+        context,
+        fields,
+        errors,
+        submit,
+        submit_only_once,
+        form_id,
+    )
 
 
 def render_layout(elements, form):
diff --git a/setup.py b/setup.py
index 0120713bdd81422629dab3c593817accc3e6a4fd..249ff9f94039bdb9935309685ec07bd28c83b2d0 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
 
 setup(
     name='django-hshassets',
-    version='2.2.18',
+    version='2.2.21',
     packages=find_packages(),
     include_package_data=True,
     license='MIT License',