diff -Naur orig/lib/simple-rss.rb patch/lib/simple-rss.rb
--- orig/lib/simple-rss.rb	2005-10-25 23:53:57.000000000 +0800
+++ patch/lib/simple-rss.rb	2005-10-26 00:14:38.000000000 +0800
@@ -29,6 +29,10 @@
 		:'dc:creator', :'dc:title', :'dc:subject', :'dc:rights', :'dc:publisher'
 	]
 
+	# allows api users to set a regex 
+	# which will be gsub! into ''
+	@@item_ignore_regex = nil
+
 	def initialize(source)
 		@source = source.respond_to?(:read) ? source.read : source.to_s
 		@items = Array.new
@@ -88,6 +92,18 @@
 		# RSS items' title, link, and description
 		@source.scan( %r{<(rss:|atom:)?(item|entry).*?>(.*?)</(rss:|atom:)?(item|entry)>}mi ) do |match|
 			item = Hash.new
+
+			# optional, but rather handy to access for debugging
+			item[:raw] = match[2]
+
+			# allow to remove confusing tags that we can't handle
+			# e.g. 
+			# @@item_ignore_regex = /<link[^>]+type=.application[^>]+>/
+			# this confusing <link...application/atom+xml> will hide our true result
+			#                <link...text/html>
+			match[2].gsub!(@@item_ignore_regex, '') if not @@item_ignore_regex.nil?
+
+
 			@@item_tags.each do |tag|
 				if match[2] =~ %r{<(rss:|atom:)?#{tag}(.*?)>(.*?)</(rss:|atom:)?#{tag}>}mi
 					nil
@@ -106,7 +122,12 @@
 		content = content.to_s
 		case tag
 			when :pubDate, :lastBuildDate, :published, :updated, :expirationDate
-				Time.parse(content)
+				unescape(content.gsub(/<.*?>/,'')) # Time.parse(content)
+				# doing Time.parse outside of simple-rss since
+				# rss feeds are served from their own server (timezone)
+				# these timezones has more possibility of making sense
+				# to the person reading it, than the timezone of where
+				# this parser is ran
 			when :author, :contributor, :skipHours, :skipDays
 				unescape(content.gsub(/<.*?>/,''))
 			else
@@ -119,9 +140,13 @@
 	end
 	
 	def unescape(content)
-		CGI.unescape(content).gsub(/(<!\[CDATA\[|\]\]>)/,'').strip
+		# CGI.unescape(content).gsub(/(<!\[CDATA\[|\]\]>)/,'').strip
+		content.gsub(/(<!\[CDATA\[|\]\]>)/,'').strip.gsub(/\r\n/, "\n")
+		# CGI.unescape actually does a URI unescape (not HTMl/XML unescape)
+		# so, its actually almost always wrong since XML elements are not
+		# URI escaped in the first place?
 	end
 end
 
 class SimpleRSSError < StandardError
-end
\ No newline at end of file
+end
