         @selectedChoice = null
       @display()
 
+    ####################
+    # "public" methods #
+    ####################
+
+    publicMethods: ['getChoices', 'setChoices', 'getValue', 'setValue', 'destroy']
+
     # return array of choices
     getChoices: ->
       @choices

    setValue: (newValue) ->
      @selectChoiceByValue newValue
      @getValue()

  $.fn[pluginName] = (options) ->
    args = Array.prototype.slice.call(arguments, 1)

        if options? and typeof options is 'string'
          plugin = $.data(this, "plugin_" + pluginName)
          method = options
          if method in plugin.publicMethods
            outputs.push plugin[method].apply plugin, args
          else
            throw new Error "#{pluginName} has no method '#{method}'"
      else
        outputs.push $.data this, "plugin_" + pluginName, new ImmyBox this, options

