diff --git a/Yesod/AtomFeed.hs b/Yesod/AtomFeed.hs
new file mode 100644
--- /dev/null
+++ b/Yesod/AtomFeed.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE CPP #-}
+---------------------------------------------------------
+--
+-- Module        : Yesod.AtomFeed
+-- Copyright     : Michael Snoyman
+-- License       : BSD3
+--
+-- Maintainer    : Michael Snoyman <michael@snoyman.com>
+-- Stability     : Stable
+-- Portability   : portable
+--
+-- Generating atom news feeds.
+--
+---------------------------------------------------------
+
+-- | Generation of Atom newsfeeds.
+module Yesod.AtomFeed
+    ( atomFeed
+    , atomLink
+    , RepAtom (..)
+    , module Yesod.FeedTypes
+    ) where
+
+import Yesod.Content
+import Yesod.Handler
+import Yesod.Widget
+import Yesod.FeedTypes
+import Text.Hamlet (Hamlet, xhamlet, hamlet, cdata)
+import qualified Data.ByteString.Char8 as S8
+import Control.Monad (liftM)
+
+newtype RepAtom = RepAtom Content
+instance HasReps RepAtom where
+    chooseRep (RepAtom c) _ = return (typeAtom, c)
+
+atomFeed :: Monad mo => Feed (Route master) -> GGHandler sub master mo RepAtom
+atomFeed = liftM RepAtom . hamletToContent . template
+
+template :: Feed url -> Hamlet url
+template arg =
+#if __GLASGOW_HASKELL__ >= 700
+                [xhamlet|
+#else
+                [$xhamlet|
+#endif
+\<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom"
+    <title>#{feedTitle arg}
+    <link rel=self href=@{feedLinkSelf arg}
+    <link href=@{feedLinkHome arg}
+    <updated>#{formatW3 $ feedUpdated arg}
+    <id>@{feedLinkHome arg}
+    $forall entry <- feedEntries arg
+        ^{entryTemplate entry}
+|]
+
+entryTemplate :: FeedEntry url -> Hamlet url
+entryTemplate arg =
+#if __GLASGOW_HASKELL__ >= 700
+                [xhamlet|
+#else
+                [$xhamlet|
+#endif
+<entry
+    <id>@{feedEntryLink arg}
+    <link href=@{feedEntryLink arg}
+    <updated>#{formatW3 $ feedEntryUpdated arg}
+    <title>#{feedEntryTitle arg}
+    <content type=html>#{cdata $ feedEntryContent arg}
+|]
+
+-- | Generates a link tag in the head of a widget.
+atomLink :: Route m
+         -> String -- ^ title
+         -> GWidget s m ()
+atomLink u title = addHamletHead
+#if __GLASGOW_HASKELL__ >= 700
+                [hamlet|
+#else
+                [$hamlet|
+#endif
+<link href=@{u} type=#{S8.unpack typeAtom} rel="alternate" title=#{title}
+|]
diff --git a/Yesod/Feed.hs b/Yesod/Feed.hs
new file mode 100644
--- /dev/null
+++ b/Yesod/Feed.hs
@@ -0,0 +1,40 @@
+-------------------------------------------------------------------------------
+--
+-- Module        : Yesod.Feed
+-- Copyright     : Patrick Brisbin
+-- License       : as-is
+--
+-- Maintainer    : Patrick Brisbin <me@pbrisbin.com>
+-- Stability     : Stable
+-- Portability   : Portable
+--
+-- Generic Feed and Feed Entry data types that can be used as either an
+-- Rss feed or an Atom feed (or both, or other).
+--
+-- Atom spec: <http://en.wikipedia.org/wiki/Atom_(standard)>
+-- Rss spec:  <http://www.rssboard.org/rss-specification>
+--
+-------------------------------------------------------------------------------
+module Yesod.Feed
+    ( newsFeed
+    , RepAtomRss (..)
+    , module Yesod.FeedTypes
+    ) where
+
+import Yesod.FeedTypes
+import Yesod.AtomFeed
+import Yesod.RssFeed
+import Yesod.Content (HasReps (chooseRep), typeAtom, typeRss)
+import Yesod.Handler (Route, GGHandler)
+
+data RepAtomRss = RepAtomRss RepAtom RepRss
+instance HasReps RepAtomRss where
+    chooseRep (RepAtomRss (RepAtom a) (RepRss r)) = chooseRep
+        [ (typeAtom, a)
+        , (typeRss, r)
+        ]
+newsFeed :: Monad mo => Feed (Route master) -> GGHandler sub master mo RepAtomRss
+newsFeed f = do
+    a <- atomFeed f
+    r <- rssFeed f
+    return $ RepAtomRss a r
diff --git a/Yesod/FeedTypes.hs b/Yesod/FeedTypes.hs
new file mode 100644
--- /dev/null
+++ b/Yesod/FeedTypes.hs
@@ -0,0 +1,34 @@
+module Yesod.FeedTypes
+    ( Feed (..)
+    , FeedEntry (..)
+    ) where
+
+import Text.Hamlet      (Html)
+import Data.Time.Clock  (UTCTime)
+import Data.Text        (Text)
+
+-- | The overal feed
+data Feed url = Feed
+    { feedTitle       :: Text
+    , feedLinkSelf    :: url
+    , feedLinkHome    :: url
+
+
+    -- | note: currently only used for Rss
+    , feedDescription :: Html
+
+    -- | note: currently only used for Rss, possible values: 
+    --   <http://www.rssboard.org/rss-language-codes>
+    , feedLanguage    :: Text
+
+    , feedUpdated     :: UTCTime
+    , feedEntries     :: [FeedEntry url]
+    }
+
+-- | Each feed entry
+data FeedEntry url = FeedEntry
+    { feedEntryLink    :: url
+    , feedEntryUpdated :: UTCTime
+    , feedEntryTitle   :: Text
+    , feedEntryContent :: Html
+    }
diff --git a/Yesod/Helpers/AtomFeed.hs b/Yesod/Helpers/AtomFeed.hs
deleted file mode 100644
--- a/Yesod/Helpers/AtomFeed.hs
+++ /dev/null
@@ -1,84 +0,0 @@
-{-# LANGUAGE QuasiQuotes #-}
-{-# LANGUAGE CPP #-}
----------------------------------------------------------
---
--- Module        : Yesod.Helpers.AtomFeed
--- Copyright     : Michael Snoyman
--- License       : BSD3
---
--- Maintainer    : Michael Snoyman <michael@snoyman.com>
--- Stability     : Stable
--- Portability   : portable
---
--- Generating atom news feeds.
---
----------------------------------------------------------
-
--- | Generation of Atom newsfeeds.
-module Yesod.Helpers.AtomFeed
-    ( atomFeed
-    , atomLink
-    , RepAtom (..)
-    , module Yesod.Helpers.FeedTypes
-    ) where
-
-import Yesod.Content
-import Yesod.Handler
-import Yesod.Widget
-import Yesod.Helpers.FeedTypes
-import Text.Hamlet (Hamlet, xhamlet, hamlet, cdata)
-import qualified Data.ByteString.Char8 as S8
-import Control.Monad (liftM)
-
-newtype RepAtom = RepAtom Content
-instance HasReps RepAtom where
-    chooseRep (RepAtom c) _ = return (typeAtom, c)
-
-atomFeed :: Monad mo => Feed (Route master) -> GGHandler sub master mo RepAtom
-atomFeed = liftM RepAtom . hamletToContent . template
-
-template :: Feed url -> Hamlet url
-template arg =
-#if __GLASGOW_HASKELL__ >= 700
-                [xhamlet|
-#else
-                [$xhamlet|
-#endif
-\<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom"
-    <title>#{feedTitle arg}
-    <link rel=self href=@{feedLinkSelf arg}
-    <link href=@{feedLinkHome arg}
-    <updated>#{formatW3 $ feedUpdated arg}
-    <id>@{feedLinkHome arg}
-    $forall entry <- feedEntries arg
-        ^{entryTemplate entry}
-|]
-
-entryTemplate :: FeedEntry url -> Hamlet url
-entryTemplate arg =
-#if __GLASGOW_HASKELL__ >= 700
-                [xhamlet|
-#else
-                [$xhamlet|
-#endif
-<entry
-    <id>@{feedEntryLink arg}
-    <link href=@{feedEntryLink arg}
-    <updated>#{formatW3 $ feedEntryUpdated arg}
-    <title>#{feedEntryTitle arg}
-    <content type=html>#{cdata $ feedEntryContent arg}
-|]
-
--- | Generates a link tag in the head of a widget.
-atomLink :: Route m
-         -> String -- ^ title
-         -> GWidget s m ()
-atomLink u title = addHamletHead
-#if __GLASGOW_HASKELL__ >= 700
-                [hamlet|
-#else
-                [$hamlet|
-#endif
-<link href=@{u} type=#{S8.unpack typeAtom} rel="alternate" title=#{title}
-|]
diff --git a/Yesod/Helpers/Feed.hs b/Yesod/Helpers/Feed.hs
deleted file mode 100644
--- a/Yesod/Helpers/Feed.hs
+++ /dev/null
@@ -1,40 +0,0 @@
--------------------------------------------------------------------------------
---
--- Module        : Yesod.Helpers.Feed
--- Copyright     : Patrick Brisbin
--- License       : as-is
---
--- Maintainer    : Patrick Brisbin <me@pbrisbin.com>
--- Stability     : Stable
--- Portability   : Portable
---
--- Generic Feed and Feed Entry data types that can be used as either an
--- Rss feed or an Atom feed (or both, or other).
---
--- Atom spec: <http://en.wikipedia.org/wiki/Atom_(standard)>
--- Rss spec:  <http://www.rssboard.org/rss-specification>
---
--------------------------------------------------------------------------------
-module Yesod.Helpers.Feed
-    ( newsFeed
-    , RepAtomRss (..)
-    , module Yesod.Helpers.FeedTypes
-    ) where
-
-import Yesod.Helpers.FeedTypes
-import Yesod.Helpers.AtomFeed
-import Yesod.Helpers.RssFeed
-import Yesod.Content (HasReps (chooseRep), typeAtom, typeRss)
-import Yesod.Handler (Route, GGHandler)
-
-data RepAtomRss = RepAtomRss RepAtom RepRss
-instance HasReps RepAtomRss where
-    chooseRep (RepAtomRss (RepAtom a) (RepRss r)) = chooseRep
-        [ (typeAtom, a)
-        , (typeRss, r)
-        ]
-newsFeed :: Monad mo => Feed (Route master) -> GGHandler sub master mo RepAtomRss
-newsFeed f = do
-    a <- atomFeed f
-    r <- rssFeed f
-    return $ RepAtomRss a r
diff --git a/Yesod/Helpers/FeedTypes.hs b/Yesod/Helpers/FeedTypes.hs
deleted file mode 100644
--- a/Yesod/Helpers/FeedTypes.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-module Yesod.Helpers.FeedTypes
-    ( Feed (..)
-    , FeedEntry (..)
-    ) where
-
-import Text.Hamlet      (Html)
-import Data.Time.Clock  (UTCTime)
-import Data.Text        (Text)
-
--- | The overal feed
-data Feed url = Feed
-    { feedTitle       :: Text
-    , feedLinkSelf    :: url
-    , feedLinkHome    :: url
-
-
-    -- | note: currently only used for Rss
-    , feedDescription :: Html
-
-    -- | note: currently only used for Rss, possible values: 
-    --   <http://www.rssboard.org/rss-language-codes>
-    , feedLanguage    :: Text
-
-    , feedUpdated     :: UTCTime
-    , feedEntries     :: [FeedEntry url]
-    }
-
--- | Each feed entry
-data FeedEntry url = FeedEntry
-    { feedEntryLink    :: url
-    , feedEntryUpdated :: UTCTime
-    , feedEntryTitle   :: Text
-    , feedEntryContent :: Html
-    }
diff --git a/Yesod/Helpers/RssFeed.hs b/Yesod/Helpers/RssFeed.hs
deleted file mode 100644
--- a/Yesod/Helpers/RssFeed.hs
+++ /dev/null
@@ -1,84 +0,0 @@
-{-# LANGUAGE QuasiQuotes #-}
-{-# LANGUAGE CPP #-}
--------------------------------------------------------------------------------
---
--- Module        : Yesod.Helpers.RssFeed
--- Copyright     : Patrick Brisbin
--- License       : as-is
---
--- Maintainer    : Patrick Brisbin <me@pbrisbin.com>
--- Stability     : Stable
--- Portability   : Portable
---
--------------------------------------------------------------------------------
-module Yesod.Helpers.RssFeed
-    ( rssFeed
-    , rssLink
-    , RepRss (..)
-    , module Yesod.Helpers.FeedTypes
-    ) where
-
-import Yesod.Handler
-import Yesod.Content
-import Yesod.Widget
-import Yesod.Helpers.FeedTypes
-import Text.Hamlet (Hamlet, xhamlet, hamlet)
-import qualified Data.ByteString.Char8 as S8
-import Control.Monad (liftM)
-
-newtype RepRss = RepRss Content
-instance HasReps RepRss where
-    chooseRep (RepRss c) _ = return (typeRss, c)
-
--- | Generate the feed
-rssFeed :: Monad mo => Feed (Route master) -> GGHandler sub master mo RepRss
-rssFeed = liftM RepRss . hamletToContent . template
-
-template :: Feed url -> Hamlet url
-template arg = 
-#if __GLASGOW_HASKELL__ >= 700
-    [xhamlet|
-#else
-    [$xhamlet|
-#endif
-    \<?xml version="1.0" encoding="utf-8"?> 
-    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
-        <channel
-            <atom:link href=@{feedLinkSelf arg} rel="self" type=#{S8.unpack typeRss}
-            <title>        #{feedTitle arg}
-            <link>         @{feedLinkHome arg}
-            <description>  #{feedDescription arg}
-            <lastBuildDate>#{formatRFC822 $ feedUpdated arg}
-            <language>     #{feedLanguage arg}
-
-            $forall entry <- feedEntries arg
-                ^{entryTemplate entry}
-    |]
-
-entryTemplate :: FeedEntry url -> Hamlet url
-entryTemplate arg = 
-#if __GLASGOW_HASKELL__ >= 700
-    [xhamlet|
-#else
-    [$xhamlet|
-#endif
-    <item
-        <title>      #{feedEntryTitle arg}
-        <link>       @{feedEntryLink arg}
-        <guid>       @{feedEntryLink arg}
-        <pubDate>    #{formatRFC822 $ feedEntryUpdated arg}
-        <description>#{feedEntryContent arg}
-    |]
-
--- | Generates a link tag in the head of a widget.
-rssLink :: Route m
-        -> String -- ^ title
-        -> GWidget s m ()
-rssLink u title = addHamletHead
-#if __GLASGOW_HASKELL__ >= 700
-    [hamlet|
-#else
-    [$hamlet|
-#endif
-    <link href=@{u} type=#{S8.unpack typeRss} rel="alternate" title=#{title}
-    |]
diff --git a/Yesod/RssFeed.hs b/Yesod/RssFeed.hs
new file mode 100644
--- /dev/null
+++ b/Yesod/RssFeed.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE CPP #-}
+-------------------------------------------------------------------------------
+--
+-- Module        : Yesod.RssFeed
+-- Copyright     : Patrick Brisbin
+-- License       : as-is
+--
+-- Maintainer    : Patrick Brisbin <me@pbrisbin.com>
+-- Stability     : Stable
+-- Portability   : Portable
+--
+-------------------------------------------------------------------------------
+module Yesod.RssFeed
+    ( rssFeed
+    , rssLink
+    , RepRss (..)
+    , module Yesod.FeedTypes
+    ) where
+
+import Yesod.Handler
+import Yesod.Content
+import Yesod.Widget
+import Yesod.FeedTypes
+import Text.Hamlet (Hamlet, xhamlet, hamlet)
+import qualified Data.ByteString.Char8 as S8
+import Control.Monad (liftM)
+
+newtype RepRss = RepRss Content
+instance HasReps RepRss where
+    chooseRep (RepRss c) _ = return (typeRss, c)
+
+-- | Generate the feed
+rssFeed :: Monad mo => Feed (Route master) -> GGHandler sub master mo RepRss
+rssFeed = liftM RepRss . hamletToContent . template
+
+template :: Feed url -> Hamlet url
+template arg = 
+#if __GLASGOW_HASKELL__ >= 700
+    [xhamlet|
+#else
+    [$xhamlet|
+#endif
+    \<?xml version="1.0" encoding="utf-8"?> 
+    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
+        <channel
+            <atom:link href=@{feedLinkSelf arg} rel="self" type=#{S8.unpack typeRss}
+            <title>        #{feedTitle arg}
+            <link>         @{feedLinkHome arg}
+            <description>  #{feedDescription arg}
+            <lastBuildDate>#{formatRFC822 $ feedUpdated arg}
+            <language>     #{feedLanguage arg}
+
+            $forall entry <- feedEntries arg
+                ^{entryTemplate entry}
+    |]
+
+entryTemplate :: FeedEntry url -> Hamlet url
+entryTemplate arg = 
+#if __GLASGOW_HASKELL__ >= 700
+    [xhamlet|
+#else
+    [$xhamlet|
+#endif
+    <item
+        <title>      #{feedEntryTitle arg}
+        <link>       @{feedEntryLink arg}
+        <guid>       @{feedEntryLink arg}
+        <pubDate>    #{formatRFC822 $ feedEntryUpdated arg}
+        <description>#{feedEntryContent arg}
+    |]
+
+-- | Generates a link tag in the head of a widget.
+rssLink :: Route m
+        -> String -- ^ title
+        -> GWidget s m ()
+rssLink u title = addHamletHead
+#if __GLASGOW_HASKELL__ >= 700
+    [hamlet|
+#else
+    [$hamlet|
+#endif
+    <link href=@{u} type=#{S8.unpack typeRss} rel="alternate" title=#{title}
+    |]
diff --git a/yesod-newsfeed.cabal b/yesod-newsfeed.cabal
--- a/yesod-newsfeed.cabal
+++ b/yesod-newsfeed.cabal
@@ -1,5 +1,5 @@
 name:            yesod-newsfeed
-version:         0.1.0
+version:         0.2.0
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman, Patrick Brisbin
@@ -18,10 +18,10 @@
                    , hamlet                    >= 0.8      && < 0.9
                    , bytestring                >= 0.9      && < 0.10
                    , text                      >= 0.9      && < 1.0
-    exposed-modules: Yesod.Helpers.AtomFeed
-                   , Yesod.Helpers.RssFeed
-                   , Yesod.Helpers.Feed
-    other-modules:   Yesod.Helpers.FeedTypes
+    exposed-modules: Yesod.AtomFeed
+                   , Yesod.RssFeed
+                   , Yesod.Feed
+    other-modules:   Yesod.FeedTypes
     ghc-options:     -Wall
 
 source-repository head
