           @settings[flag] = $.extend {}, $.fn.atWho.default, settings
         else
           @settings[flag] = $.extend {}, @settings[flag], settings
+        this.setup_callback_methods_for(flag)
         this
+
+      setup_callback_methods_for: (flag) ->
+        @callbacks[flag] = $.extend {}, DEFAULT_CALLBACKS, this.get_opt("callbacks", {})
+
+      callbacks: (flag) ->
+        @callbacks[flag]
 
       get_opt: (key, default) ->
         try


      render_view: (data) ->
        data = data.splice(0, this.get_opt('limit'))
        data = @callbacks["data_refactor"].call(this, data)
        search_key = this.get_opt("search_key")
        data = @callbacks["sorter"].call(this, @query.text, data, search_key)

        @view.render data



        query = ""
        $.each this.settings, (flag, settings) =>
          query = this.callbacks("matcher").call(this, flag, subtext) || ""
          @current_flag = flag
          return false

