def update_filter(*args)

      action = args.shift
      action = action.kind_of?(Symbol) ? action : action.to_sym

      key = args.shift
      key = key.kind_of?(Symbol) ? key : key.to_sym

      # list will always be concatenated to the target array
      list = []

      # build the list array depending on what the user passed to the method
      args.each do |item|
        if item.kind_of?(Array) && item.any?
          list.concat(item)
        else
          list.push(item)
        end
      end

      # convert all of the items in the list to symbols
      # for :actions or :verbs
      if key.eql?(:actions) || key.eql?(:verbs)
        list.each_with_index do |item, index|
          unless item.kind_of?(Symbol)
            list[index] = item.to_sym
          end
        end
      end

      self.current_filter[action][key].concat(list)
      self.current_filter[action][key].uniq!

      opposite_action = action.eql?(:exclude) ? :include : :exclude

      self.current_filter[action][key].each do |value|
#puts "action: #{action} key: #{key} value: #{value}"
        self.current_filter[opposite_action][key].delete(value)
      end

      #if action == :include

        ## now, simply concatenate the resulting list and make sure the final array is unique
        #self.current_filter[key].concat(list)
        #self.current_filter[key].uniq!

      #elsif action == :exclude

        #self.current_filter[key].reject! {|item| list.include?(item)}

      #end

      return nil
    end
def update_filter(*args)

      action = args.shift
      action = action.kind_of?(Symbol) ? action : action.to_sym

      key = args.shift
      key = key.kind_of?(Symbol) ? key : key.to_sym

      # list will always be concatenated to the target array
      list = []

      # build the list array depending on what the user passed to the method
      args.each do |item|
        if item.kind_of?(Array) && item.any?
          list.concat(item)
        else
          list.push(item)
        end
      end

      # convert all of the items in the list to symbols
      # for :actions or :verbs
      if key.eql?(:actions) || key.eql?(:verbs)
        list.each_with_index do |item, index|
          unless item.kind_of?(Symbol)
            list[index] = item.to_sym
          end
        end
      end

      self.current_filter[action][key].concat(list)
      self.current_filter[action][key].uniq!

      opposite_action = action.eql?(:exclude) ? :include : :exclude

      self.current_filter[action][key].each do |value|
#puts "action: #{action} key: #{key} value: #{value}"
        self.current_filter[opposite_action][key].delete(value)
      end

      #if action == :include

        ## now, simply concatenate the resulting list and make sure the final array is unique
        #self.current_filter[key].concat(list)
        #self.current_filter[key].uniq!

      #elsif action == :exclude

        #self.current_filter[key].reject! {|item| list.include?(item)}

      #end

      return nil
    end
Adds or removes value(s) to or from the {#current_filter}.  This method is called by {#include_filter} and {#exclude_filter}.
 @overload update_filter(action, key, value)
   @param [Symbol, String]        action The action to perform:  :include or :exclude.
   @param [Symbol, String]        key    The type of filter to update. :actions, :verbs, :names, :controllers.
   @param [String, Symbol, Array] value  A single or Array of items to be added to the filter section specified via key.
 @return [NilClass]