         label           : "Title"
         placeholder     : options.placeholders?.title
         defaultValue    : data.decoded 'title'
+        required        : 'Title is required!'
 
       description       :
         label           : "Description"
         placeholder     : options.placeholders?.description or "(optional)"
         defaultValue    : data.decoded 'description'
 
-
       subscriptionType  :
         label           : "Subscription type"
         itemClass       : KDSelectBox
         defaultValue    : data.subscriptionType ? "mo"
-        selectOptions   : do ->
-
-          selectOptions = [
-            { title: "Recurs every month",     value: 'mo' }
-            { title: "Recurs every 3 months",  value: '3 mo' }
-            { title: "Recurs every 6 months",  value: '6 mo' }
-            { title: "Recurs every year",      value: 'yr' }
-            { title: "Recurs every 2 years",   value: '2 yr' }
-            { title: "Recurs every 5 years",   value: '5 yr' }
-          ]
-
-          if options.isRecurOptional
-            selectOptions.push { title: "Single payment", value: 'single' }
-
-          return selectOptions
-
-        callback: @bound 'handleSubscriptionType'
+        selectOptions   : @getSubscriptionOptions()
+        callback        : @bound 'subscriptionTypeChanged'
 
     options.fields.feeAmount ?=
       label           : "Amount"

        type      : "submit"
      cancel      :
        cssClass  : "modal-cancel"
        callback  : =>
          @emit 'CancelRequested'

    options.fields ?=


        label         : "Price is volatile"
        itemClass     : KDOnOffSwitch
        defaultValue  : data.priceIsVolatile
        callback      : @bound 'priceVolatilityChanged'

    if options.showOverage
      options.fields.overageEnabled =
