           for radio in radios
             radio.checked = false unless radio.getAttribute("disabled") || radio.getAttribute("readonly")
           field.checked = true
-          @fire "change", field
-
-        @fire "click", field
+          @fire "change", field, callback
+
+        @fire "click", field, callback
         return this
       throw new Error("No radio INPUT matching '#{selector}'")
 

    # * option -- option to unselect
    #
    # Returns this
    this.unselectOption = (option)->
      if(option && option.selected)
        select = @xpath("./ancestor::select", option).value[0]
        throw new Error("Cannot unselect in single select") unless select.multiple
        option.removeAttribute('selected')
        @fire "change", select
      return this

    # ### browser.button(selector) : Element

    # * value -- Field value
    #
    # Returns this
    this.fill = (selector, value, callback)->
      field = @field(selector)
      if field && (field.tagName == "TEXTAREA" || (field.tagName == "INPUT")) # && TEXT_TYPES.indexOf(field.type) >= 0))
        throw new Error("This INPUT field is disabled") if field.getAttribute("input")
        throw new Error("This INPUT field is readonly") if field.getAttribute("readonly")
        field.value = value
        @fire "change", field, callback
        return this
      throw new Error("No INPUT matching '#{selector}'")

    setCheckbox = (selector, value, callback)=>
      field = @field(selector)
      if field && field.tagName == "INPUT" && field.type == "checkbox"
        throw new Error("This INPUT field is disabled") if field.getAttribute("input")
        throw new Error("This INPUT field is readonly") if field.getAttribute("readonly")
        if(field.checked ^ value)
          @fire "click", field, callback
        return this
      else
        throw new Error("No checkbox INPUT matching '#{selector}'")
