diff --git a/listing.py b/listing.py
index 363f8d74d5e09451ec6bac566395006183b995c1..98dc32e1456d2978aad25741770f12d405d8652a 100644
--- a/listing.py
+++ b/listing.py
@@ -163,13 +163,13 @@ class PageList(GeneratorList):
 			return page.Page(self.site, self.site.namespaces[self.namespace] + ':' + name, info)
 		else:
 			# Guessing page class
-			namespace = self.guess_namespace(name)
-			if namespace == 14:
-				return Category(self.site, name, info)
-			elif namespace == 6:
-				return page.Image(self.site, name, info)
-			else:
-				return page.Page(self.site, name, info)
+			if type(name) is not int:
+				namespace = self.guess_namespace(name)
+				if namespace == 14:
+					return Category(self.site, name, info)
+				elif namespace == 6:
+					return page.Image(self.site, name, info)
+			return page.Page(self.site, name, info)
 		
 	def guess_namespace(self, name):
 		normal_name = page.Page.normalize_title(name)
diff --git a/page.py b/page.py
index 5e0c2acb1be21755f534749f25f4defc11588d43..9031fcd1f7f49008c018f7432b9477aeb62b70d0 100644
--- a/page.py
+++ b/page.py
@@ -21,8 +21,12 @@ class Page(object):
 				prop = 'info'
 				extra_props = ()
 			
-			info = self.site.api('query', prop = prop, titles = name, 
-				inprop = 'protection', *extra_props)
+			if type(name) is int:
+				info = self.site.api('query', prop = prop, pageids = name,
+					inprop = 'protection', *extra_props)
+			else:
+				info = self.site.api('query', prop = prop, titles = name,
+					inprop = 'protection', *extra_props)
 			info = info['query']['pages'].itervalues().next()
 		self._info = info