diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -36,18 +36,17 @@
 		ruleTree          -- The rule menu you will see in the top left corner of the window.
 
 -- Here we specify the forces that are applied in each layout step. You can play around with the values, but strange things may happen (correction: strange things already DO happen).
-layoutStep = do
-	withNodes $ \n → do
-		(cgf, cf, sf, rot) ← readOnly $ do
-			cgf ← centralGravitation n -- this is needed in order to prevent unconnected subgraphs to drift apart infinitely
-			cf ← coulombForce n        -- a repulsing force between each pair of nodes
-			sf ← springForce 1.5 n     -- this tries to push nodes into the position as dictated by the edges connected to other nodes.
-			rot ← angularMomentum n    -- this tries to rotate nodes such that the angular forces exercised by the edges upon the nodes are minimised.
-			return (cgf, cf, sf, rot)
-		-- combine all the forces specifying for each of them a function that maps the distance the force bridges to a strength.
-		Unsafe.adjustNode (Position . sf (*0.9) . cgf (*0.01) . cf (\x → min (100/(x^2+0.1)) 10) . position) n
-		-- We do not rotate our nodes here, since an SKI combinator graph can nicely be drawn top-down. Uncomment, if you like.
-		-- Unsafe.adjustNode (rot (*0.9)) n
+layoutStep n = do
+	(cgf, cf, sf, rot) ← readOnly $ do
+		cgf ← centralGravitation n -- this is needed in order to prevent unconnected subgraphs to drift apart infinitely
+		cf ← coulombForce n        -- a repulsing force between each pair of nodes
+		sf ← springForce 1.5 n     -- this tries to push nodes into the position as dictated by the edges connected to other nodes.
+		rot ← angularMomentum n    -- this tries to rotate nodes such that the angular forces exercised by the edges upon the nodes are minimised.
+		return (cgf, cf, sf, rot)
+	-- combine all the forces specifying for each of them a function that maps the distance the force bridges to a strength.
+	Unsafe.adjustNode (Position . sf (*0.9) . cgf (*0.01) . cf (\x → min (100/(x^2+0.1)) 10) . position) n
+	-- We do not rotate our nodes here, since an SKI combinator graph can nicely be drawn top-down. Uncomment, if you like.
+	-- Unsafe.adjustNode (rot (*0.9)) n
 
 -- anyRule = anyOf [ eliminate, ruleI, ruleK0, ruleK1, ruleS0, ruleS1, ruleS2, ruleE0, ruleE1, ruleE2, ruleD0, ruleD1, ruleD2]
 
diff --git a/graph-rewriting-ski.cabal b/graph-rewriting-ski.cabal
--- a/graph-rewriting-ski.cabal
+++ b/graph-rewriting-ski.cabal
@@ -1,5 +1,5 @@
 Name:           graph-rewriting-ski
-Version:        0.4.5
+Version:        0.4.7
 Copyright:      (c) 2010, Jan Rochel
 License:        BSD3
 License-File:   LICENSE
@@ -21,11 +21,10 @@
 	base-unicode-symbols >= 0.2 && < 0.3,
 	graph-rewriting >= 0.4.4 && < 0.5,
 	graph-rewriting-layout >= 0.4.1 && < 0.5,
-	graph-rewriting-gl >= 0.5 && < 0.6,
+	graph-rewriting-gl >= 0.6 && < 0.7,
 	parsec >= 2.1 && < 2.2,
 	GLUT >= 2.2 && < 2.3,
-	OpenGL >= 2.4 && < 2.5,
-	IndentParser >= 0.2 && < 0.3
+	OpenGL >= 2.4 && < 2.5
 Extensions:
 	UnicodeSyntax
 	FlexibleInstances
