diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 9cc53c42f555ded4d03378528456915ae657c808..7a8fc9bc256189427f85b176e44444e219e5f2b6 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -456,7 +456,22 @@ class Doku_Handler {
 
     function rss($match, $state, $pos) {
         $link = preg_replace(array('/^\{\{rss>/','/\}\}$/'),'',$match);
-        $this->_addCall('rss',array($link),$pos);
+
+        // get params
+        list($link,$params) = explode(' ',$link,2);
+
+        $p = array();
+        if(preg_match('/\b(\d+)\b/',$params,$match)){
+            $p['max'] = $match[1];
+        }else{
+            $p['max'] = 8;
+        }
+        $p['reverse'] = (preg_match('/rev/',$params));
+        $p['author']  = (preg_match('/\b(by|author)/',$params));
+        $p['date']    = (preg_match('/\b(date)/',$params));
+        $p['details'] = (preg_match('/\b(desc|detail)/',$params));
+
+        $this->_addCall('rss',array($link,$p),$pos);
         return TRUE;
     }
 
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index b3b341f9b423a3d81d6eb9b946ec6a5e63334f86..68255116923a451cc28fb6d4ff1bc48c0d3280b8 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -780,34 +780,65 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
     }
 
     /**
-     * Renders an RSS feed using Magpie
+     * Renders an RSS feed
      *
      * @author Andreas Gohr <andi@splitbrain.org>
      */
-    function rss ($url){
+    function rss ($url,$params){
         global $lang;
-        define('MAGPIE_CACHE_ON', false); //we do our own caching
-        define('MAGPIE_DIR', DOKU_INC.'inc/magpie/');
-        define('MAGPIE_OUTPUT_ENCODING','UTF-8'); //return all feeds as UTF-8
-        require_once(MAGPIE_DIR.'/rss_fetch.inc');
+        global $conf;
+
+        require_once(DOKU_INC.'inc/FeedParser.php');
+        $feed = new FeedParser();
+        $feed->feed_url($url);
 
         //disable warning while fetching
         $elvl = error_reporting(E_ERROR);
-        $rss  = fetch_rss($url);
+        $rc = $feed->init();
         error_reporting($elvl);
 
+        //decide on start and end
+        if($params['reverse']){
+            $mod = -1;
+            $start = $feed->get_item_quantity()-1;
+            $end   = $start - ($params['max']);
+            $end   = ($end < 0) ? 0 : $end;
+        }else{
+            $mod   = 1;
+            $start = 0;
+            $end   = $feed->get_item_quantity();
+            $end   = ($end > $params['max']) ? $params['max'] : $end;;
+        }
+
         $this->doc .= '<ul class="rss">';
-        if($rss){
-            foreach ($rss->items as $item ) {
-                $this->doc .= '<li>';
-                $this->externallink($item['link'],$item['title']);
-                $this->doc .= '</li>';
+        if($rc){
+            for ($x = $start; $x != $end; $x += $mod) {
+                $this->doc .= '<li><div class="li">';
+                $this->externallink($feed->get_item_permalink($x),
+                                    $feed->get_item_title($x));
+                if($params['author']){
+                    $this->doc .= ' '.$lang['by'].' '.$feed->get_item_author($x);
+                }
+                if($params['date']){
+                    $this->doc .= ' ('.$feed->get_item_date($x,$conf['dformat']).')';
+                }
+                if($params['date']){
+                    $this->doc .= '<div class="detail">';
+                    if($htmlok){
+                        $this->doc .= $feed->get_item_description($x);
+                    }else{
+                        $this->doc .= strip_tags($feed->get_item_description($x));
+                    }
+                    $this->doc .= '</div>';
+                }
+
+                $this->doc .= '</div></li>';
             }
         }else{
-            $this->doc .= '<li>';
+            $this->doc .= '<li><div class="li">';
             $this->doc .= '<em>'.$lang['rssfailed'].'</em>';
             $this->externallink($url);
-            $this->doc .= '</li>';
+            $this->doc .= '</div></li>';
         }
         $this->doc .= '</ul>';
     }
@@ -1067,4 +1098,4 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
     }
 }
 
-//Setup VIM: ex: et ts=4 enc=utf-8 :
\ No newline at end of file
+//Setup VIM: ex: et ts=4 enc=utf-8 :