       _.each @regions, (region) ->
         region.close()
 
+      @off() # Remove all event listeners
       @remove()
       @unbind()
-      cleanObject()
+      dispose(@)
       return @

    initialize: () ->
      @regions = new Regions(@regions, @)

    _renderDom: (data) ->
      @$el?.html(@template?(data) or @template)

    # Update page title
    updateTitle: () ->
      document.title = settings.titlePrefix + @pageTitle if @pageTitle

    _render: () ->
      data = @model?.toJSON() or @collection?.toJSON() or {}

      if typeof @templateHelpers is 'function'


    close: () ->
      @empty()
      dispose()

  class Regions
    constructor: (regions = {}, $context) ->
