         # Return the view.
         this
 
-    # Initialize subviews collections.
-    @subviews = []
-    @subviewsByName = {}
-
     # Call Backbone’s constructor.
     super
 

  dispose: ->
    return if @disposed

    throw new Error('Your `initialize` method must include a super call to
      Chaplin `initialize`') unless @subviews?

    # Unregister all regions.
    @unregisterAllRegions()

    # Dispose subviews.
    subview.dispose() for subview in @subviews

    # Unbind handlers of global events.
    @unsubscribeAllEvents()


  # Getting or adding a subview.
  subview: (name, view) ->
    # Initialize subviews collections if they don’t exist yet.
    subviews = @subviews ?= []
    byName = @subviewsByName ?= {}

    if name and view
      # Add the subview, ensure it’s unique.
      @removeSubview name
      subviews.push view
      byName[name] = view
      view
    else if name
      # Get and return the subview by the given name.
      byName[name]

  # Removing a subview.
  removeSubview: (nameOrView) ->
    return unless nameOrView
    subviews = @subviews ?= []
    byName = @subviewsByName ?= {}

    if typeof nameOrView is 'string'
      # Name given, search for a subview by name.
      name = nameOrView
      view = byName[name]
    else
      # View instance given, search for the corresponding name.
      view = nameOrView
      for otherName, otherView of byName
        if view is otherView
          name = otherName
          break
