diff --git a/DSH.cabal b/DSH.cabal
--- a/DSH.cabal
+++ b/DSH.cabal
@@ -1,5 +1,5 @@
 Name:                DSH
-Version:             0.6
+Version:             0.6.1
 Synopsis:            Database Supported Haskell
 Description:
   This is a Haskell library for database-supported program execution. Using
diff --git a/src/Database/DSH/Combinators.hs b/src/Database/DSH/Combinators.hs
--- a/src/Database/DSH/Combinators.hs
+++ b/src/Database/DSH/Combinators.hs
@@ -336,9 +336,9 @@
 
 -- 'QA', 'TA' and 'View' instances for tuples up to the defined length.
 
-$(generateDeriveTupleQARange   3 8)
-$(generateDeriveTupleTARange   3 8)
-$(generateDeriveTupleViewRange 3 8)
+$(generateDeriveTupleQARange   3 12)
+$(generateDeriveTupleTARange   3 12)
+$(generateDeriveTupleViewRange 3 12)
 
 
 -- * Missing Combinators
diff --git a/src/Database/DSH/Compile.hs b/src/Database/DSH/Compile.hs
--- a/src/Database/DSH/Compile.hs
+++ b/src/Database/DSH/Compile.hs
@@ -13,12 +13,25 @@
 import Control.Monad.Reader
 import Control.Exception (evaluate)
 
+import Control.Concurrent.MVar
+import System.IO.Unsafe (unsafePerformIO)
+
 import qualified Text.XML.HaXml as X
 import Text.XML.HaXml (Content(..), AttValue(..), tag, deep, children, xmlParse, Document(..))
 
 import Database.HDBC
 import Data.Convertible
 
+
+-- | This is a global synchronisation variable used to gouard calls to the
+-- Pathfinder C library. The C library appears not to be thread safe and this
+-- variable is used to make sure that only one pathfinder call is made at time
+-- even when a number parallel calls are made to the DSH's fromQ query
+-- evaluator.
+{-# NOINLINE globalMVar #-}
+globalMVar :: MVar ()
+globalMVar = unsafePerformIO (newEmptyMVar)
+
 -- | Wrapper type with phantom type for algebraic plan
 -- The type variable represents the type of the result of the plan
 newtype AlgebraXML a = Algebra String
@@ -55,7 +68,9 @@
 
 algToAlg :: AlgebraXML a -> IO (AlgebraXML a)
 algToAlg (Algebra s) = do
+                        putMVar  globalMVar ()
                         r <- pathfinder s [] OutputXml
+                        takeMVar globalMVar
                         case r of
                            (Right sql) -> return $ Algebra sql
                            (Left err) -> error $ "Pathfinder compilation for input: \n"
@@ -65,7 +80,9 @@
 -- | Translate an algebraic plan into SQL code using Pathfinder
 algToSQL :: AlgebraXML a -> IO (SQLXML a)
 algToSQL (Algebra s) = do
+                         putMVar  globalMVar ()
                          r <- pathfinder s [] OutputSql
+                         takeMVar globalMVar
                          case r of
                             (Right sql) -> return $ SQL sql
                             (Left err) -> error $ "Pathfinder compilation for input: \n"
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -28,7 +28,7 @@
   arbitrary = fmap Text.pack arbitrary
 
 getConn :: IO Connection
-getConn = connectPostgreSQL "user = 'postgres' password = 'haskell98' host = 'localhost' dbname = 'ferry'"
+getConn = connectPostgreSQL "user = 'giorgidz' password = '' host = 'localhost' dbname = 'giorgidz'"
 
 qc:: Testable prop => prop -> IO ()
 qc = quickCheckWith stdArgs{maxSuccess = 100, maxSize = 5}
