       value = @options.model.get(@options.property)
       context = {}
       context[@options.property] = value
-      template_result = render (@template or @options.template), context
+      template_result = render @get_template(), context
       @$el.html(template_result)
       @
   
     initialize: (options) =>
-      if not @$el
-        throw 'ModelFieldView : error : you must specify a valid \'el\' when creating a ModelFieldView'
-      if not (@template or @options.template)
+      if not @get_template()
         @render = =>
           value = @options.model.get(@options.property)
           if value

      @
  
    initialize: =>
      if not @$el
        throw 'CompositeModelView : error : you must specify a valid \'el\' when creating a CompositeModelView'
      @_child_views = []
      @render()
      for binding, view of _.result(@, 'child_views')

  
  class CompositeModelView extends Backbone.View
    _rendered: false

    get_template: =>
      template = @template or @options.template
      if @className isnt template
        throw 'CompositeModelView : error : templates should be named after the semantic class (' + @className + ', ' + template + ')'
      template

    reassign_child_views: =>
      for view in @_child_views
        if view and view.el
