 
       # makes o renderable using the given function or renderable
       renderable: (o, fn) ->
-        if fn._lead_render?
+        if is_component fn
+          o._lead_render = fn
+        else if fn._lead_render?
           o._lead_render = fn._lead_render
         else
           nested_context = @create_nested_context
-            renderable_list_builder: add_renderable: -> throw new Error 'Output functions not allowed inside a renderable'
+            renderable_list_builder: add_component: -> throw new Error 'Output functions not allowed inside a renderable'
           o._lead_render = -> nested_context.apply_to fn
         o
 
-      create_nested_renderable_context: ($item) ->
-        renderable = delayed_then_immediate_renderable_list_builder()
+      create_nested_renderable_context: ->
+        component = component_list()
         @create_nested_context
-          renderable_list_builder: renderable
+          renderable_list_builder: component
 
       create_nested_context: (overrides) ->
         nested_context = _.extend create_new_run_context(@), overrides

          restoring_context fn, arguments

      add_renderable: (renderable) ->
        @renderable_list_builder.add_renderable renderable
        ignore

      add_component: (component) ->
        @add_rendering ->
          wrapper = document.createElement 'div'
          React.renderComponent component, wrapper
          wrapper

      add_rendered: (rendered) ->
        @add_rendering -> rendered

      # adds a function that can render
      add_rendering: (rendering) -> @add_renderable _lead_render: @keeping_context(rendering)

      render: render

        true

  handle_renderable = (object) ->
    if is_renderable object
      @add_renderable object
      true

