diff --git a/Text/XHtml/Extras.hs b/Text/XHtml/Extras.hs
--- a/Text/XHtml/Extras.hs
+++ b/Text/XHtml/Extras.hs
@@ -96,7 +96,8 @@
 --
 
 widget :: String -> String -> [HtmlAttr] -> Html
-widget w n markupAttrs = input ! ([thetype w,name n,identifier n] ++ markupAttrs)
+widget w n markupAttrs = input ! ([thetype w] ++ ns ++ markupAttrs)
+  where ns = if null n then [] else [name n,identifier n]
 
 checkbox :: String -> String -> Html
 hidden   :: String -> String -> Html
@@ -118,6 +119,7 @@
 afile    n   = widget "file"     n []
 clickmap n   = widget "image"    n []
 
+{-# DEPRECATED menu "menu generates strange XHTML, and is not flexible enough. Roll your own that suits your needs." #-}
 menu :: String -> [Html] -> Html
 menu n choices
    = select ! [name n] << [ option << p << choice | choice <- choices ]
diff --git a/Text/XHtml/Frameset.hs b/Text/XHtml/Frameset.hs
--- a/Text/XHtml/Frameset.hs
+++ b/Text/XHtml/Frameset.hs
@@ -7,7 +7,7 @@
      -- * Primitives and basic combinators
      (<<), concatHtml, (+++), 
      noHtml, isNoHtml, tag, itag,
-     emptyAttr, intAttr, strAttr,
+     emptyAttr, intAttr, strAttr, htmlAttr,
      primHtml, 
      -- * Rendering
      showHtml, renderHtml, prettyHtml, 
diff --git a/Text/XHtml/Internals.hs b/Text/XHtml/Internals.hs
--- a/Text/XHtml/Internals.hs
+++ b/Text/XHtml/Internals.hs
@@ -149,6 +149,9 @@
 strAttr :: String -> String -> HtmlAttr
 strAttr s t = HtmlAttr s (stringToHtmlString t)
 
+htmlAttr :: String -> Html -> HtmlAttr
+htmlAttr s t = HtmlAttr s (show t)
+
 
 {-
 foldHtml :: (String -> [HtmlAttr] -> [a] -> a) 
diff --git a/Text/XHtml/Strict.hs b/Text/XHtml/Strict.hs
--- a/Text/XHtml/Strict.hs
+++ b/Text/XHtml/Strict.hs
@@ -7,7 +7,7 @@
      -- * Primitives and basic combinators
      (<<), concatHtml, (+++), 
      noHtml, isNoHtml, tag, itag,
-     emptyAttr, intAttr, strAttr,
+     emptyAttr, intAttr, strAttr, htmlAttr,
      primHtml, 
      -- * Rendering
      showHtml, renderHtml, prettyHtml, 
diff --git a/Text/XHtml/Transitional.hs b/Text/XHtml/Transitional.hs
--- a/Text/XHtml/Transitional.hs
+++ b/Text/XHtml/Transitional.hs
@@ -7,7 +7,7 @@
      -- * Primitives and basic combinators
      (<<), concatHtml, (+++), 
      noHtml, isNoHtml, tag, itag,
-     emptyAttr, intAttr, strAttr,
+     emptyAttr, intAttr, strAttr, htmlAttr,
      primHtml, 
      -- * Rendering
      showHtml, renderHtml, prettyHtml, 
diff --git a/xhtml.cabal b/xhtml.cabal
--- a/xhtml.cabal
+++ b/xhtml.cabal
@@ -1,5 +1,5 @@
 Name: xhtml
-Version: 3000.0.2.1
+Version: 3000.0.2.2
 Copyright: Bjorn Bringert 2004-2006, Andy Gill, and the Oregon Graduate 
            Institute of Science and Technology, 1999-2001
 Maintainer: bjorn@bringert.net
