     view.innerHTML = content
     view = if view.children.length == 1 then view.children[0] else view
 
-  tree: ({head, children, expand}) ->
-    @ink.tree.treeView(@render(head),
-                       children.map((x)=>@render @tags.div [x]),
+  tree: ({head, children, expand}, opts) ->
+    @ink.tree.treeView(@render(head, opts),
+                       children.map((x)=>@render(@tags.div([x]), opts)),
                        expand: expand)
 
-  lazy: ({head, id}) ->
+  lazy: ({head, id}, opts) ->
     conn = client.conn
-    view = @ink.tree.treeView @render(head), [],
+    view = @ink.tree.treeView @render(head, opts), [],
       onToggle: once =>
         return unless client.conn == conn
         getlazy(id).then (children) =>
           body = view.querySelector ':scope > .body'
-          children.map((x) => @render x).forEach (x) ->
+          children.map((x) => @render(x, opts)).forEach (x) ->
             body.appendChild x
 
   subtree: ({label, child}) ->
-    @render if child.type == "tree"
+    @render (if child.type == "tree"
       type: "tree"
       head: @tags.span [label, child.head]
       children: child.children
       # children: child.children.map((x) => @tags.span "gutted", x)
     else
-      @tags.span "gutted", [label, child]
+      @tags.span "gutted", [label, child]), opts
 
-  copy: ({view, text}) ->
-    view = @render view
+  copy: ({view, text}, opts) ->
+    view = @render view, opts
     atom.commands.add view,
       'core:copy': (e) ->
         atom.clipboard.write text

      if contents.constructor isnt Array
        contents = [contents]
      for child in contents
        view.appendChild @render child
    view

  html: ({content}) ->

    number:  (a...) -> views.number a...
    code:    (a...) -> views.code a...

  render: (data, opts = {}) ->
    if @views.hasOwnProperty(data.type)
      @views[data.type](data, opts)
    else if data?.constructor is String
      new Text data
    else
