 
     return this
 
-  nextForm: ->
-    requirement = @nextRequirement()
-    return  unless requirement?
-    
-    provider = @nextProvider requirement
-    return  unless provider?
-
-    @showForm provider
-
-    return provider
+  nextForm: -> try @showForm @nextProvider()
 
   nextRequirement: -> @collector.nextRequirement()
 
-  nextProvider: (key, from) ->
+  nextProvider: (key = @nextRequirement(), from) ->
     providers = @providers[key]
     providers.i = from ? providers.i ? 0
     provider = providers[providers.i++]


  hideForms: (forms = @getFormNames()) ->
    @forms[form]?.hide() for form in forms
    return this

  showForm: (form) ->

        fields = @getFields()
        fields.push (child.getFields yes)... for own _, child of @children
        return fields

      (key for own key of @fields when not (key of @children))

    nextNode: ->
      node = @ordered[@index]
