diff --git a/Yesod/AtomFeed.hs b/Yesod/AtomFeed.hs
--- a/Yesod/AtomFeed.hs
+++ b/Yesod/AtomFeed.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 ---------------------------------------------------------
 --
 -- Module        : Yesod.AtomFeed
@@ -35,10 +36,13 @@
 import qualified Data.Map as Map
 
 newtype RepAtom = RepAtom Content
-instance HasReps RepAtom where
-    chooseRep (RepAtom c) _ = return (typeAtom, c)
+    deriving ToContent
+instance HasContentType RepAtom where
+    getContentType _ = typeAtom
+instance ToTypedContent RepAtom where
+    toTypedContent = TypedContent typeAtom . toContent
 
-atomFeed :: Feed (Route master) -> GHandler sub master RepAtom
+atomFeed :: MonadHandler m => Feed (Route (HandlerSite m)) -> m RepAtom
 atomFeed feed = do
     render <- getUrlRender
     return $ RepAtom $ toContent $ renderLBS def $ template feed render
@@ -71,10 +75,10 @@
     ]
 
 -- | Generates a link tag in the head of a widget.
-atomLink :: Route m
+atomLink :: MonadWidget m
+         => Route (HandlerSite m)
          -> Text -- ^ title
-         -> GWidget s m ()
+         -> m ()
 atomLink r title = toWidgetHead [hamlet|
-$newline never
-<link href=@{r} type=#{S8.unpack typeAtom} rel="alternate" title=#{title}>
-|]
+    <link href=@{r} type=#{S8.unpack typeAtom} rel="alternate" title=#{title}>
+    |]
diff --git a/Yesod/Feed.hs b/Yesod/Feed.hs
--- a/Yesod/Feed.hs
+++ b/Yesod/Feed.hs
@@ -17,24 +17,15 @@
 -------------------------------------------------------------------------------
 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.Core (Route, GHandler)
+import Yesod.Core
 
-data RepAtomRss = RepAtomRss RepAtom RepRss
-instance HasReps RepAtomRss where
-    chooseRep (RepAtomRss (RepAtom a) (RepRss r)) = chooseRep
-        [ (typeAtom, a)
-        , (typeRss, r)
-        ]
-newsFeed :: Feed (Route master) -> GHandler sub master RepAtomRss
-newsFeed f = do
-    a <- atomFeed f
-    r <- rssFeed f
-    return $ RepAtomRss a r
+newsFeed :: MonadHandler m => Feed (Route (HandlerSite m)) -> m TypedContent
+newsFeed f = selectRep $ do
+    provideRep $ atomFeed f
+    provideRep $ rssFeed f
diff --git a/Yesod/RssFeed.hs b/Yesod/RssFeed.hs
--- a/Yesod/RssFeed.hs
+++ b/Yesod/RssFeed.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 -------------------------------------------------------------------------------
 --
 -- Module        : Yesod.RssFeed
@@ -31,11 +32,14 @@
 import qualified Data.Map as Map
 
 newtype RepRss = RepRss Content
-instance HasReps RepRss where
-    chooseRep (RepRss c) _ = return (typeRss, c)
+    deriving ToContent
+instance HasContentType RepRss where
+    getContentType _ = typeRss
+instance ToTypedContent RepRss where
+    toTypedContent = TypedContent typeRss . toContent
 
 -- | Generate the feed
-rssFeed :: Feed (Route master) -> GHandler sub master RepRss
+rssFeed :: MonadHandler m => Feed (Route (HandlerSite m)) -> m RepRss
 rssFeed feed = do
     render <- getUrlRender
     return $ RepRss $ toContent $ renderLBS def $ template feed render
@@ -67,10 +71,10 @@
     ]
 
 -- | Generates a link tag in the head of a widget.
-rssLink :: Route m
+rssLink :: MonadWidget m
+        => Route (HandlerSite m)
         -> Text -- ^ title
-        -> GWidget s m ()
+        -> m ()
 rssLink r title = toWidgetHead [hamlet|
-$newline never
     <link href=@{r} 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:         1.1.0.1
+version:         1.2.0
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman, Patrick Brisbin
@@ -14,7 +14,7 @@
 
 library
     build-depends:   base                 >= 4        && < 5
-                   , yesod-core           >= 1.1      && < 1.2
+                   , yesod-core           >= 1.2      && < 1.3
                    , time                 >= 1.1.4
                    , hamlet               >= 1.1      && < 1.2
                    , bytestring           >= 0.9.1.4
