         default       : 'recurring'
       feeAmount       :
         type          : Number
-        required      : yes
+        validate      : [
+          'invalid fee amount'
+          (value) -> not value? or value >= 0
+        ]
       feeInterval     :
         type          : Number
         default       : 1

    success: (client, formData, callback) ->
      @create client.context.group, formData, callback

  @savePlanToRecurly = (product, callback) ->
    if product.overageEnabled or product.soldAlone

      planData =
        code        : product.planCode
        title       : "#{ product.title } - Overage"
        feeAmount   : product.feeAmount
        feeInterval : switch product.subscriptionType
          when 'recurring' then 1
          when 'single'    then 9999 # wat



    JGroup = require '../group'

    { subscriptionType, overageEnabled, soldAlone,
      priceIsVolatile, title, description, feeAmount,
      feeUnit, feeInterval } = formData

    product = new this {
      planCode: createId()
      title
      description
      feeAmount
      feeUnit
      feeInterval
      subscriptionType
      priceIsVolatile
      overageEnabled
      soldAlone
      group
    }

    product.save (err) =>
      return callback err  if err

      product.savePlanToRecurly (err, plan) ->
        return callback err  if err

        JGroup.one slug: group, (err, group) ->
