     # List of subviews
     subviews: null
     subviewsByName: null
-
-    # Wrap a `method` in order to call and `afterMethod`
-    wrapMethod = (obj, name) ->
-      func = obj[name]
-      # Create a method on the instance which wraps the inherited
-      obj[name] = ->
+    
+    # Method wrapping to enable `afterRender` and `afterInitialize`
+    # -------------------------------------------------------------
+    
+    # Wrap a method in order to call the corresponding
+    # `after-` method automatically
+    wrapMethod: (name) ->
+      instance = @
+      # Enclose the original function
+      func = instance[name]
+      # Set a flag
+      instance["#{name}IsWrapped"] = true
+      # Create the wrapper method
+      instance[name] = ->
         # Call the original method
-        func.apply obj, arguments
+        func.apply instance, arguments
         # Call the corresponding `after-` method
-        obj["after#{utils.upcase(name)}"].apply obj, arguments
+        instance["after#{utils.upcase(name)}"] arguments...
 
     constructor: ->
       # Wrap `initialize` so `afterInitialize` is called afterwards
       # Only wrap if there is an overring method, otherwise we
-      # call the after method directly
-      unless @initialize is ChaplinView::initialize
-        wrapMethod this, 'initialize'
+      # can call the `after-` method directly
+      unless @initialize is View::initialize
+        @wrapMethod 'initialize'
 
       # Wrap `render` so `afterRender` is called afterwards
-      unless @initialize is ChaplinView::initialize
-        wrapMethod this, 'render'
-      else
-        # Otherwise just bind the `render` method normally
+      unless @render is View::render
+        @wrapMethod 'render'
+      else
+        # Otherwise just bind the `render` method
         @render = _(@render).bind this
 
       # Call Backbone’s constructor


    # Get attributes from model or collection
    getTemplateData: ->

      modelAttributes = @model and @model.getAttributes()
      templateData = if modelAttributes
        # Return an object which delegates to the returned attributes

    initialize: (options) ->
      ###console.debug 'ChaplinView#initialize', this, 'options', options###
      # No super call here, Backbone’s `initialize` is a no-op

      # Copy some options to instance properties
      if options
        for prop in ['autoRender', 'container', 'containerMethod']
          if options[prop]?
            @[prop] = options[prop]

      # Initialize subviews
      @subviews = []
