define [], ->

  class Controller

    viewClass: null

    constructor: (@options) ->

    start: (@options) ->
      do @registerEvents
      do @renderView

    registerEvents: ->
      do @unregisterEvents

    unregisterEvents: ->

    renderView: ->
      if @viewClass
        @view = new @viewClass(@options)
        @view.render()

    stop: ->
      do @unregisterEvents
      if @view?
        @view.undelegateEvents?()
        @view.remove?()
