       @set 'current', @get('current') + 1
       (@get 'list')[@get 'current']
 
-  class BaseSLView extends Backbone.View
+  class BaseView extends Backbone.View
+    initialize: (n, c) ->
+      @name = n
+      @cls  = c
+      Master.register @, n, c
+      log "$ #{@name} initialized.", DEBUG
+    terminate: ->
+      Master.unregister @cls
+      @undelegateEvents()
+      log "$ #{@name} terminated.", DEBUG
+
+  class BaseSLView extends BaseView
     el: $ "#main-activity"
-    events:
+    events: ->   # for children to extend
       "keypress": 'enterKey'
       "click #btn-gsl-next": 'nextCountry'
     initialize: (n, c) ->
-      @name = n
-      @cls  = c
+      super n, c
       @listenTo @model, "change:list", @renderList
-      Master.register @, n, c
-      log '$ BaseSLView initialized.', DEBUG
     render: ->
       @$el.html ''
       @renderCurrent()

      h += '<button class="btn btn-info" id="btn-exit-umc">Close this Un-moderated Caucus</button>'
      @$el.html h

  class RollCallView extends Backbone.View
    el: $ "#main-activity"
    events:
      "click #btn-roll-call-present": "countryPresent"
      "click #btn-roll-call-absent":  "countryAbsent"
    className: 'roll-call-view'
    initialize: ->
      @current = 0
      @countryList = Master.get 'countryList'
      Master.register @, 'Roll Call', @className
      Master.set 'presentList', []
      appView.disable 'btn-roll-call'
      log '$ RollCallView initialized.', DEBUG
    render: ->
      if @current == @countryList.length
        @terminate()

      @current++
      @render()
    terminate: ->
      super()
      success 'Roll Call completed.'
      appView.enable 'btn-roll-call'
      appView.enable 'btn-gsl'
      appView.enable 'btn-motion'

  class SettingsModalView extends Backbone.View
    el: $ "#modal-settings"
