diff --git a/src/diana/sgfParser/collection.py b/src/diana/sgfParser/collection.py
--- a/src/diana/sgfParser/collection.py
+++ b/src/diana/sgfParser/collection.py
@@ -4,84 +4,90 @@ from .gameRecord import GameRecord
 
 
 class Collection:
-	def __init__(self,s):
-		self.gameTrees=[]
-		i=skipWhitespace(s,0)
-		if i>=len(s): return
-		elif not GameTree.fits(s,i):
-			raise ParserError("expected a GameTree starting with '('",s,i)
-		while GameTree.fits(s,i):
-			i,x=GameTree.create(s,i)
+	def __init__(self, s):
+		self.gameTrees = []
+		i = skipWhitespace(s, 0)
+		if i >= len(s):
+			return
+		elif not GameTree.fits(s, i):
+			raise ParserError("expected a GameTree starting with '('", s, i)
+		while GameTree.fits(s, i):
+			(i, x) = GameTree.create(s, i)
 			self.gameTrees.append(x)
-		if i<len(s):
-			raise ParserError("expected EOF",s,i)
+		if i < len(s):
+			raise ParserError("expected EOF", s, i)
 
 	def listGames(self):
 		for tree in self.gameTrees:
-			for game in tree.listGames(): yield game
+			for game in tree.listGames():
+				yield game
 
 
 class GameTree:
 	def __init__(self):
-		self.nodes=[]
-		self.branches=[]
+		self.nodes = []
+		self.branches = []
 
 	@staticmethod
-	def fits(s,i):
-		return i<len(s) and s[i]=="("
+	def fits(s, i):
+		return i < len(s) and s[i] == "("
 
 	@staticmethod
-	def create(s,start):
-		assert GameTree.fits(s,start)
-		res=GameTree()
+	def create(s, start):
+		assert GameTree.fits(s, start)
+		res = GameTree()
 
-		i=skipWhitespace(s,start+1)
-		if not Node.fits(s,i):
-			raise ParserError("expected a Node starting with ';'",s,i)
+		i = skipWhitespace(s, start+1)
+		if not Node.fits(s, i):
+			raise ParserError("expected a Node starting with ';'", s, i)
 
-		y=None
-		while Node.fits(s,i):
-			i,x=Node.create(s,i)
+		y = None
+		while Node.fits(s, i):
+			(i, x) = Node.create(s, i)
 			res.nodes.append(x)
-			if y: y.addChild(x)
-			x.parent=y
-			y=x
-			i=skipWhitespace(s,i)
+			if y:
+				y.addChild(x)
+			x.parent = y
+			y = x
+			i = skipWhitespace(s, i)
 
-		while GameTree.fits(s,i):
-			i,x=GameTree.create(s,i)
+		while GameTree.fits(s, i):
+			(i, x) = GameTree.create(s, i)
 			res.branches.append(x)
-			subroot=x.getNode(0)
-			subroot.parent=y
-			if y: y.addChild(subroot)
-			i=skipWhitespace(s,i)
-		if i>=len(s) or s[i]!=")":
-			raise ParserError("expected end of a GameTree marked by ')'",s,i)
-		i=skipWhitespace(s,i+1)
-		return (i,res)
+			subroot = x.getNode(0)
+			subroot.parent = y
+			if y:
+				y.addChild(subroot)
+			i = skipWhitespace(s, i)
+
+		if i >= len(s) or s[i] != ")":
+			raise ParserError("expected end of a GameTree marked by ')'", s, i)
+		i = skipWhitespace(s, i+1)
+		return (i, res)
 
 	## Expand multiple games into distinct GameTrees and yield each.
 	def listGames(self):
-		if len(self.nodes)==0: return None
+		if len(self.nodes) == 0:
+			return None
 		for node in self.nodes[0].listGINodes():
 			yield GameRecord(self._buildSubtree(node))
 
-	def getNode(self,i):
-		if 0<=i<len(self.nodes):
+	def getNode(self, i):
+		if 0 <= i < len(self.nodes):
 			return self.nodes[i]
 		return None
 
 	## Create and return a new game tree containing the provided Node.
 	#
 	# Ancestor nodes are copied, descendants are moved from the seedNode.
-	def _buildSubtree(self,seedNode):
-		node=seedNode.copy()
+	def _buildSubtree(self, seedNode):
+		node = seedNode.copy()
 		node.setChildren(seedNode.children)
-		seedNode.children=[]
+		seedNode.children = []
 
 		while node.parent:
-			newNode=node.parent.copy()
+			newNode = node.parent.copy()
 			newNode.addChild(node)
-			node=newNode
+			node = newNode
 
 		return node