diff --git a/opentech/apply/categories/blocks.py b/opentech/apply/categories/blocks.py
index c0916f17593b8f088fe5c81b5f2814ef44e8807a..e0c92bb60efdcaa50081e015a7c3c4c35853e9f4 100644
--- a/opentech/apply/categories/blocks.py
+++ b/opentech/apply/categories/blocks.py
@@ -5,7 +5,7 @@ from django.utils.translation import ugettext_lazy as _
 from wagtail.wagtailcore.blocks import BooleanBlock, CharBlock, ChooserBlock, TextBlock
 from wagtail.wagtailcore.utils import resolve_model_string
 
-from opentech.apply.stream_forms.blocks import FormFieldBlock
+from opentech.apply.stream_forms.blocks import OptionalFormFieldBlock
 
 
 class ModelChooserBlock(ChooserBlock):
@@ -20,7 +20,7 @@ class ModelChooserBlock(ChooserBlock):
         return resolve_model_string(self._target_model)
 
 
-class CategoryQuestionBlock(FormFieldBlock):
+class CategoryQuestionBlock(OptionalFormFieldBlock):
     # Overwrite field label and help text so we can defer to the category
     # as required
     field_label = CharBlock(
@@ -34,7 +34,6 @@ class CategoryQuestionBlock(FormFieldBlock):
     )
     category = ModelChooserBlock('categories.Category')
     multi = BooleanBlock(label='Multi select', required=False)
-    required = BooleanBlock(label='Required', required=False)
 
     def get_field_class(self, struct_value):
         if struct_value['multi']: