         input.on "input", -> do -> field.removeClass "error"
         assert corner = $ "<div>", class: "ui corner label"
         assert asterisk = $ "<i>", class: "icon asterisk"
-        assert icon = $ "<i>", class: "icon #{icon}" if icon
+        sic = try _.isString(icon) and not _.isEmpty(icon)
+        assert icon = $ "<i>", class: "icon #{icon}" if sic
         assert input.attr placeholder: synopsis.toString()
         try $(field).data "identity", identity.toString()
         field.addClass try identity.toString() if identity

    # or agreement to some legal terms and conditions. The field
    # that it creates is rendered as inline (see semantic man).
    checkbox: (identity, synopsis, onpos, onneg) ->
        assert _.isString what = "ui checkbox".toString()
        assert _.isObject label = $ "<label>", class: "label"
        assert _.isObject input = $ "<input>", type: "checkbox"
        assert _.isObject input.attr name: identity.toString()

    # or agreement to some legal terms and conditions. The field
    # that it creates is rendered as inline (see semantic man).
    sliding: (identity, synopsis, onpos, onneg) ->
        assert _.isString(identity), "invalid field identity"
        assert _.isString(synopsis), "invalid field synopsis"
        assert _.isString what = "ui checkbox slider" # wrap sel
        assert _.isObject label = $ "<label>", class: "label"
        assert _.isObject input = $ "<input>", type: "checkbox"
        assert _.isObject input.attr name: identity.toString()
