             fields[name] = value
         return fields
 
+    # Prepare a disco#info stanza.
+    # @return [ltx.Element] Stanza with `<query/>` as active sub-Element
+    makeDiscoInfoIq: (from, to, id) ->
+        return @makeIq("get", from, to, id)
+            .c("query", xmlns: NS.DISCO_INFO)
+
     # Parse a disco#info result stanza.
     # @param [ltx.Element] iq IQ stanza containing the disco result
     # @return [Object] Parsed results. `attrs` has the attributes of the

    # @param [Object] fields Fields to add to the form
    # @return [ltx.Element] `<x xmlns="jabber:x:data>...</x>`
    makeForm: (type, form_type, fields) ->
        el = new ltx.Element("x", xmlns: "jabber:x:data", type: type)
            .c("field", var: "FORM_TYPE", type: "hidden")
            .c("value").t(form_type)
            .up().up()

    #   name, for easier matching), `features` the returned features, and `form`
    #   a parsed data form if there was one.
    parseDiscoInfo: (iq) ->
        qEl = iq.getChild("query", NS.DISCO_INFO)
        should.exist(qEl)

        disco =
