   # @example
   #   var todos = kb.collectionObservable(collection);
   #   kb.utils.release(todos); todos = null;
-  @release = (obj) ->
+  @release: (obj) ->
     return unless kb.isReleaseable(obj)
 
     # release array's items

  #   var el = kb.renderTemplate('my_template', kb.viewModel(new Backbone.Model({name: 'Bob'})));
  #   ...
  #   ko.removeNode(el); // removes el from the DOM and calls kb.release(view_model)
  @renderTemplate = (template, view_model, options={}) ->
    return console?.log 'renderTemplate: document is undefined' unless document?

    el = document.createElement('div')

  #   kb.releaseOnNodeRemove(view_model, el);
  #   ...
  #   ko.removeNode(el); // removes el from the DOM and calls kb.release(view_model)
  @releaseOnNodeRemove: (view_model, node) ->
    view_model or _throwUnexpected(@, 'missing view model')
    node or _throwUnexpected(@, 'missing node')
    ko.utils.domNodeDisposal.addDisposeCallback(node, -> kb.release(view_model))
