diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+## 2.2
+
+* Export renderToFile from top-level Lucid module.
+
+## 2.1
+
+* Add some extra HTML tags.
+
 ## 2.0
 
 * Use variadic HTML terms.
diff --git a/lucid.cabal b/lucid.cabal
--- a/lucid.cabal
+++ b/lucid.cabal
@@ -1,5 +1,5 @@
 name:                lucid
-version:             2.1
+version:             2.2
 synopsis:            Clear to write, read and edit DSL for HTML
 description:         Clear to write, read and edit DSL for HTML. See the 'Lucid' module
                      for description and documentation.
diff --git a/src/Lucid.hs b/src/Lucid.hs
--- a/src/Lucid.hs
+++ b/src/Lucid.hs
@@ -13,6 +13,7 @@
   ,renderBS
   ,renderTextT
   ,renderBST
+  ,renderToFile
    -- * Running
    -- $running
   ,execHtmlT
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -27,6 +27,7 @@
   describe "attributes-with" testAttributesWith
   describe "extension" testExtension
   describe "special-elements" testSpecials
+  describe "self-closing" testSelfClosing
 
 -- | Test text/unicode.
 testText :: Spec
@@ -178,3 +179,15 @@
      it "style"
         (renderText (style_ "body{background:url('Hello, World!')}") ==
          "<style>body{background:url('Hello, World!')}</style>")
+
+-- | Elements which do not contain children.
+testSelfClosing :: Spec
+testSelfClosing =
+  do it "br" (renderText (br_ []) == "<br>")
+     it "hr" (renderText (hr_ []) == "<br>")
+     it "input"
+        (renderText (input_ []) ==
+         "<input>")
+     it "input"
+        (renderText (input_ [type_ "text"]) ==
+         "<input type=\"text\">")
