 
   @doc "See `Drab.Query.select/2`"
   def select(socket, method, options)
-  def select(socket, method, from: selector) when method in @methods or method == :all do
+  def select(socket, method, from: selector) when method in @methods or method == :all or method in @methods_plural do
     do_query(socket, selector, jquery_method(method), :select, @no_broadcast)
-  end
-  def select(socket, :classes, from: selector) do
-    socket |> select(attr: "class", from: selector) |>  Enum.map(&String.split/1)
   end
   def select(_socket, method, from: selector) do
     wrong_query! selector, method 

    """
  end

  defp build_js(selector, method_javascripted, :select) do
    """
    $('#{selector}').map(function() {
      return $(this).#{method_javascripted}
    }).toArray()
    """
  end

  defp build_js(selector, method_javascripted, type) when type in ~w(update insert delete execute)a do
    # update events only when running .html() method
    update_events = if Regex.match?(@html_modifiers, method_javascripted) do
      "Drab.set_event_handlers('#{selector}')"

    do_update(socket, broadcast, attr: "class", set: value, on: selector)
  end
  defp do_update(socket, broadcast, :class, toggle: value, on: selector) do
    {:ok, do_query(socket, selector, {:toggleClass, "(\"#{value}\")"}, :update, broadcast)}    
  end
  defp do_update(socket, broadcast, :class, set: values, on: selector) when is_list(values) do
    # switch classes: updates the attr: "class" string with replacement of class, if it is on the list
    c = socket |> select(attrs: "class", from: selector)
    one_element_selector_only!(c, selector)

    classes = Map.values(c) |> Enum.map(&String.split/1) |> List.first()
    replaced = Enum.map(classes, fn c -> 
      if c in values do 
        next_in_list(values, c) 
