 
 class ui.ComponentType
   constructor: ({@name, @width, @height, @isCounter, @stackProperty, @stackAfter,
-                 @displayNameSingular, @displayNamePlural,
-                 @draggable, @template, @summaryTemplate} = {}) ->
+                 @displayNameSingular, @displayNamePlural, @controllerClass,
+                 @draggable, @contains, @template, @summaryTemplate} = {}) ->
     check @name, String
     check @width, Match.Optional Number
     check @height, Match.Optional Number

    if @panel.contains.length
      new Blaze.Template =>
        owner ?= Template.currentData().owner
        # XXX: Not sure why I used _.map instead of coffee's for.
        # It does have the side effect of skipping undefineds (counters).
        _.map @panel.contains, (typeName) =>
          typeId = typeName.replace /\s/g, '-'
          type = @rules.getComponentType typeName

    check @displayNameSingular, String
    @displayNamePlural ?= @displayNameSingular
    check @displayNamePlural, String
    @controllerClass ?= ui.ComponentController
    check @controllerClass, CBGA.Match.ClassOrSubclass ui.Controller
    @draggable ?= false
    check @draggable, Boolean
    @contains ?= []
    check @contains, [String]
    check @template, Match.Optional String
    check @summaryTemplate, Match.Optional String

  render: (component) ->
    new Blaze.Template =>
