diff --git a/classes/feeditem/atom.php b/classes/feeditem/atom.php
index 7dc4ce5c1373cea87de139898b43ba87a4ad0afd..d2193389731a3e13b766ad008dc25584c74ece8f 100644
--- a/classes/feeditem/atom.php
+++ b/classes/feeditem/atom.php
@@ -1,9 +1,11 @@
 <?php
 class FeedItem_Atom {
 	private $elem;
+	private $xpath;
 
 	function __construct($elem, $doc, $xpath) {
 		$this->elem = $elem;
+		$this->xpath = $xpath;
 	}
 
 	function get_id() {
@@ -63,9 +65,12 @@ class FeedItem_Atom {
 
 	}
 
-	// todo
 	function get_comments_count() {
+		$comments = $this->xpath->query("slash:comments", $this->elem)->item(0);
 
+		if ($comments) {
+			return $comments->nodeValue;
+		}
 	}
 
 	function get_categories() {
@@ -77,6 +82,11 @@ class FeedItem_Atom {
 				array_push($cats, $cat->getAttribute("term"));
 		}
 
+		$categories = $this->xpath->query("dc:subject", $this->elem);
+
+		foreach ($categories as $cat) {
+			array_push($cats, $cat->nodeValue);
+		}
 
 		return $cats;
 	}
@@ -100,6 +110,18 @@ class FeedItem_Atom {
 			}
 		}
 
+		$enclosures = $this->xpath->query("media:content", $this->elem);
+
+		foreach ($enclosures as $enclosure) {
+			$enc = new FeedEnclosure();
+
+			$enc->type = $enclosure->getAttribute("type");
+			$enc->link = $enclosure->getAttribute("url");
+			$enc->length = $enclosure->getAttribute("length");
+
+			array_push($encs, $enc);
+		}
+
 		return $encs;
 	}
 
diff --git a/classes/feeditem/rss.php b/classes/feeditem/rss.php
index e5e2a8e56544626c3dc98b46ef55d2b5c4cb8d09..7a3b0d342564ed0d8d89abb4e09d02b765062746 100644
--- a/classes/feeditem/rss.php
+++ b/classes/feeditem/rss.php
@@ -63,9 +63,12 @@ class FeedItem_RSS {
 
 	}
 
-	// todo
 	function get_comments_count() {
+		$comments = $this->xpath->query("slash:comments", $this->elem)->item(0);
 
+		if ($comments) {
+			return $comments->nodeValue;
+		}
 	}
 
 	function get_categories() {
@@ -76,6 +79,12 @@ class FeedItem_RSS {
 			array_push($cats, $cat->nodeValue);
 		}
 
+		$categories = $this->xpath->query("dc:subject", $this->elem);
+
+		foreach ($categories as $cat) {
+			array_push($cats, $cat->nodeValue);
+		}
+
 		return $cats;
 	}
 
@@ -96,8 +105,6 @@ class FeedItem_RSS {
 
 		$enclosures = $this->xpath->query("media:content", $this->elem);
 
-		$encs = array();
-
 		foreach ($enclosures as $enclosure) {
 			$enc = new FeedEnclosure();
 
diff --git a/classes/feedparser.php b/classes/feedparser.php
index 8cb736a8b5fd8a2b795dd557b1b3a14c7c0ecff9..f61c2a0031aba86c465abb0298ca2e1a23d94477 100644
--- a/classes/feedparser.php
+++ b/classes/feedparser.php
@@ -29,6 +29,9 @@ class FeedParser {
 		$xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
 		$xpath->registerNamespace('media', 'http://search.yahoo.com/mrss/');
 		$xpath->registerNamespace('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+		$xpath->registerNamespace('slash', 'http://purl.org/rss/1.0/modules/slash/');
+		$xpath->registerNamespace('dc', 'http://purl.org/dc/elements/1.1/');
+
 		$this->xpath = $xpath;
 
 		$root = $xpath->query("(//atom:feed|//channel|//rdf:rdf|//rdf:RDF)")->item(0);
diff --git a/include/rssfuncs.php b/include/rssfuncs.php
index d1175a30386eceff23c2cdeb49093c4012514e56..f342bf7f11a2e7ea81e8c52fc62abf6cb902a3a8 100644
--- a/include/rssfuncs.php
+++ b/include/rssfuncs.php
@@ -581,13 +581,7 @@
 				$entry_comments = db_escape_string(mb_substr(trim($entry_comments), 0, 245));
 				$entry_author = db_escape_string(mb_substr(trim($entry_author), 0, 245));
 
-				$num_comments = $item->get_comments_count();
-
-				if (is_array($num_comments) && is_array($num_comments[0])) {
-					$num_comments = (int) $num_comments[0]["data"];
-				} else {
-					$num_comments = 0;
-				}
+				$num_comments = (int) $item->get_comments_count();
 
 				_debug("author $entry_author", $debug_enabled);
 				_debug("num_comments: $num_comments", $debug_enabled);