diff --git a/SoccerFun/UI/GL/RunMatch.hs b/SoccerFun/UI/GL/RunMatch.hs
--- a/SoccerFun/UI/GL/RunMatch.hs
+++ b/SoccerFun/UI/GL/RunMatch.hs
@@ -2,22 +2,29 @@
 -- | Usage: Hit /q/ to abort the match
 module Main where
 
-import SoccerFun.UI.GL
 import Control.Monad
 import System.Exit
 import Prelude.Unicode
 import Data.Binary
 import SoccerFun.MatchGame
 import SoccerFun.Tape
+import System.Cmd
+import System.Environment
+import Paths_SoccerFunGL
 
 main ∷ IO ()
 main = do
-	(prog,args) ← initialise
-	let (t1,t2) = case args of
+	prog ← getProgName
+	args ← getArgs
+	let (p1,p2) = case args of
 		[t1,t2] → (t1,t2)
 		notTwo → error $ unlines
 			["Run a match between two teams <Team1> and <Team2>",
 			 "Usage: " ⧺ prog ⧺ " <dir1> <dir2>",
 			 "  where both arguments are paths to directories containing a team module."]
-	(t1name,t2name,match) ← dynSetupMatch t1 t2
-	playTape $ recordMatch match
+	(loc1,name1) ← compileTeam p1
+	(loc2,name2) ← compileTeam p2
+	runMatch ← getDataFileName "SoccerFun/UI/GL/RunMatch/Template.hs"
+	exitCode ← system $ "runhaskell -i" ⧺ loc1 ⧺ " -i" ⧺ loc2 ⧺ " -DTEAM1=" ⧺ name1 ⧺ " -DTEAM2=" ⧺ name2 ⧺ " " ⧺ runMatch
+	when (exitCode ≢ ExitSuccess) (fail "Could merge teams, probably due to a type error.")
+
diff --git a/SoccerFun/UI/GL/RunMatch/Template.hs b/SoccerFun/UI/GL/RunMatch/Template.hs
new file mode 100644
--- /dev/null
+++ b/SoccerFun/UI/GL/RunMatch/Template.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE UnicodeSyntax, CPP #-}
+{-# OPTIONS_GHC -pgmP cpp #-}
+-- | Usage: Hit /q/ to abort the match
+module Main where
+
+import SoccerFun.UI.GL
+import Control.Monad
+import System.Exit
+import Prelude.Unicode
+import Data.Binary
+import SoccerFun.MatchGame
+import SoccerFun.Tape
+import qualified TEAM1.Team as Team1
+import qualified TEAM2.Team as Team2
+
+#define MKSTRING(x) #x
+#define TOSTRING(x) MKSTRING(x)
+
+main ∷ IO ()
+main = do
+	initialise
+	match ← setupMatch Team1.team Team2.team
+	playTape $ recordMatch match
diff --git a/SoccerFunGL.cabal b/SoccerFunGL.cabal
--- a/SoccerFunGL.cabal
+++ b/SoccerFunGL.cabal
@@ -1,5 +1,5 @@
 Name:           SoccerFunGL
-Version:        0.4.4
+Version:        0.5
 Copyright:      (c) 2010, Jan Rochel
 License:        BSD3
 License-File:   LICENSE
@@ -12,6 +12,7 @@
 Description:	This provides an 2D user interface for the SoccerFun framework implemented in OpenGL/GLUT.
 Category:       Game, Education, AI
 Cabal-Version:  >= 1.6
+Data-Files:	SoccerFun/UI/GL/RunMatch/Template.hs
 
 Library
   Extensions:
@@ -23,9 +24,12 @@
     binary >= 0.5 && < 0.6,
     GLUT >= 2.2 && < 2.3,
     OpenGL >= 2.4 && < 2.5,
-    SoccerFun >= 0.4.4 && < 0.5
+    SoccerFun >= 0.5 && < 0.6,
+    process >= 1.0 && < 1.1
   Exposed-Modules:
     SoccerFun.UI.GL
+  Other-Modules:
+    Paths_SoccerFunGL
 
 Executable sfPlayTape
   Main-Is: SoccerFun/UI/GL/PlayTape.hs
