diff --git a/gnuplot.cabal b/gnuplot.cabal
--- a/gnuplot.cabal
+++ b/gnuplot.cabal
@@ -1,5 +1,5 @@
 Name:             gnuplot
-Version:          0.5.4
+Version:          0.5.4.1
 License:          BSD3
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
@@ -35,8 +35,7 @@
    of feeding gnuplot with a script.
    .
    Alternative packages: @plot@, @HPlot@, @Chart@, @textPlot@, @easyplot@
-Tested-With:       GHC==6.8.2, GHC==6.12.3
-Tested-With:       GHC==7.0.2, GHC==7.4.2, GHC==7.6.3
+Tested-With:       GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3
 Cabal-Version:     >=1.6
 Build-Type:        Simple
 Extra-Source-Files:
@@ -50,7 +49,7 @@
   data/runtime.data
 
 Source-Repository this
-  Tag:         0.5.4
+  Tag:         0.5.4.1
   Type:        darcs
   Location:    http://code.haskell.org/gnuplot/
 
@@ -82,12 +81,12 @@
     utility-ht >=0.0.8 && <0.1,
     data-accessor-transformers >=0.2.1 && <0.3,
     data-accessor >=0.2.2 && <0.3,
-    transformers >=0.3 && <0.5,
+    transformers >=0.3 && <0.6,
     deepseq >=1.0 && <1.5
   If flag(splitBase)
     Build-Depends:
-      process >=1.0 && <1.3,
-      time >=1.5 && <1.6,
+      process >=1.0 && <1.5,
+      time >=1.5 && <1.7,
       base >=2 && <5
   Else
     Build-Depends:
diff --git a/src/Graphics/Gnuplot/Plot/TwoDimensional.hs b/src/Graphics/Gnuplot/Plot/TwoDimensional.hs
--- a/src/Graphics/Gnuplot/Plot/TwoDimensional.hs
+++ b/src/Graphics/Gnuplot/Plot/TwoDimensional.hs
@@ -69,12 +69,10 @@
    Type.T x y (a,b) -> [a] -> [a -> b] -> T x y
 functions typ args fs =
    let dat = map (\x -> (x, map ($ x) fs)) args
-       typA :: Type.T x y (a,b) -> Type.T x y a
-       typA = undefined
-       typB :: Type.T x y (a,b) -> Type.T x y b
-       typB = undefined
-       Tuple.ColumnCount na = Type.tupleSize (typA typ)
-       Tuple.ColumnCount nb = Type.tupleSize (typB typ)
+       mapType :: (a -> b) -> Type.T x y a -> Type.T x y b
+       mapType _ (Type.Cons str) = Type.Cons str
+       Tuple.ColumnCount na = Type.tupleSize $ mapType fst typ
+       Tuple.ColumnCount nb = Type.tupleSize $ mapType snd typ
    in  Plot.withUniqueFile
           (assembleCells
               (map (\(a,b) -> Tuple.text a ++ concatMap Tuple.text b) dat))
diff --git a/src/Graphics/Gnuplot/Private/Graph.hs b/src/Graphics/Gnuplot/Private/Graph.hs
--- a/src/Graphics/Gnuplot/Private/Graph.hs
+++ b/src/Graphics/Gnuplot/Private/Graph.hs
@@ -3,6 +3,8 @@
 import qualified Graphics.Gnuplot.Private.FrameOptionSet as OptionSet
 
 class C graph where
-   command :: graph -> String
+   command :: Command graph
    toString :: graph -> String
    defltOptions :: OptionSet.T graph
+
+newtype Command graph = Command {commandString :: String}
diff --git a/src/Graphics/Gnuplot/Private/Graph2D.hs b/src/Graphics/Gnuplot/Private/Graph2D.hs
--- a/src/Graphics/Gnuplot/Private/Graph2D.hs
+++ b/src/Graphics/Gnuplot/Private/Graph2D.hs
@@ -64,7 +64,7 @@
 
 
 instance (Atom.C x, Atom.C y) => Graph.C (T x y) where
-   command _ = "plot"
+   command = Graph.Command "plot"
    toString = toString
    defltOptions = defltOptions
 
diff --git a/src/Graphics/Gnuplot/Private/Graph3D.hs b/src/Graphics/Gnuplot/Private/Graph3D.hs
--- a/src/Graphics/Gnuplot/Private/Graph3D.hs
+++ b/src/Graphics/Gnuplot/Private/Graph3D.hs
@@ -60,7 +60,7 @@
 
 
 instance (Atom.C x, Atom.C y, Atom.C z) => Graph.C (T x y z) where
-   command _ = "splot"
+   command = Graph.Command "splot"
    toString = toString
    defltOptions = defltOptions
 
diff --git a/src/Graphics/Gnuplot/Private/GraphEmpty.hs b/src/Graphics/Gnuplot/Private/GraphEmpty.hs
--- a/src/Graphics/Gnuplot/Private/GraphEmpty.hs
+++ b/src/Graphics/Gnuplot/Private/GraphEmpty.hs
@@ -14,7 +14,7 @@
 
 
 instance Graph.C T where
-   command _ = "clear"
+   command = Graph.Command "clear"
    toString = const ""
    defltOptions =
       OptionSet.Cons OptionSet.deflt
diff --git a/src/Graphics/Gnuplot/Private/Plot.hs b/src/Graphics/Gnuplot/Private/Plot.hs
--- a/src/Graphics/Gnuplot/Private/Plot.hs
+++ b/src/Graphics/Gnuplot/Private/Plot.hs
@@ -110,7 +110,7 @@
              blocks
       return $
          Display.Body files
-            [plotCmd p undefined ++ " " ++ commaConcat graphs]
+            [Graph.commandString (plotCmd p) ++ " " ++ commaConcat graphs]
 
 optionsToScript :: Graph.C graph => OptionSet.T graph -> Display.Script
 optionsToScript opts =
@@ -130,7 +130,5 @@
    toScript plot =
       optionsToScript (defltOpts plot)  `mappend`  toScript plot
 
-plotCmd ::
-   Graph.C graph =>
-   T graph -> graph -> String
+plotCmd :: Graph.C graph => T graph -> Graph.Command graph
 plotCmd _plot = Graph.command
