diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
 
 ## Unreleased changes
 
+## 0.1.4.1 -- 2020-11-12
+
+* Improve TemplateHaskell to arrays of floats and arrays of bools.
+
 ## 0.1.4.0 -- 2020-11-12
 
 * Add primitive TemplateHaskell generation of interface types.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -114,7 +114,7 @@
 
 ```minizinc
 int: x;
-array[1..2] of int: y;
+array[1..2,1..2] of int: y;
 var int: z;
 
 ...
diff --git a/minizinc-process.cabal b/minizinc-process.cabal
--- a/minizinc-process.cabal
+++ b/minizinc-process.cabal
@@ -4,7 +4,7 @@
 -- http://haskell.org/cabal/users-guide/
 
 name:                minizinc-process
-version:             0.1.4.0
+version:             0.1.4.1
 synopsis:            A set of helpers to call minizinc models.
 description:         MiniZinc is a language and a toolchain to solve discrete optimization problems. This package provides simple wrappers around the MiniZinc executable to pass inputs and read outputs.
 homepage:       https://github.com/lucasdicioccio/minizinc-process#readme
@@ -47,7 +47,7 @@
 test-suite minizinc-process-tests-hedghehog
   main-is:             Test.hs
   type: exitcode-stdio-1.0
-  build-depends:       base >=4.13 && <4.14
+  build-depends:       base >=4.10 && <4.14
                      , aeson
                      , minizinc-process
                      , hashable
diff --git a/src/Process/Minizinc/TH.hs b/src/Process/Minizinc/TH.hs
--- a/src/Process/Minizinc/TH.hs
+++ b/src/Process/Minizinc/TH.hs
@@ -49,6 +49,8 @@
      typeFor (TypeInfo "bool" False Nothing)  = ConT (mkName "Bool")
      typeFor (TypeInfo "float" False Nothing) = ConT (mkName "Float")
      typeFor (TypeInfo "int" False (Just n))  = nestedlist n $ ConT (mkName "Int")
+     typeFor (TypeInfo "bool" False (Just n))  = nestedlist n $ ConT (mkName "Bool")
+     typeFor (TypeInfo "float" False (Just n))  = nestedlist n $ ConT (mkName "Float")
      typeFor typedecl = error $ "unsupported type info when generating Haskell code from MiniZinc files: " <> show typedecl
 
      nestedlist 0 ty = ty
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -1,9 +1,12 @@
 {-# LANGUAGE TypeApplications #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DeriveAnyClass #-}
 module Main where
 
 import Data.Function ((&))
+import Data.Maybe (isJust)
 import qualified Data.List as List
 import Data.Aeson (FromJSON(..), ToJSON(..), (.=), (.:))
 import qualified Data.Aeson as Aeson
@@ -16,9 +19,14 @@
 import qualified Hedgehog.Range as Range
 import Test.Hspec (describe, it, hspec)
 import Test.Hspec.Hedgehog (hedgehog)
+import GHC.Generics (Generic)
+import Data.Aeson (FromJSON, ToJSON)
 
 import Process.Minizinc
+import Process.Minizinc.TH
 
+genModelData "Test002" "models/test002_04.mzn"
+
 data Input001 = Input001 { input001X :: Int }
   deriving (Show,Eq,Ord)
 instance Hashable Input001 where
@@ -77,6 +85,13 @@
     isExhaustive (Exhausted a) = True
     isExhaustive _             = False
 
+mzncall_t002_04 = do
+    let mzn = simpleMiniZinc @Test002Input @Test002Output "models/test002_04.mzn" 1000 Gecode
+    let input = Test002Input 10 True 1.2 [1,2] [True,True] [0.2,0.3] [[1,2], [3,4]]
+    outy <- liftIO $ runLastMinizincJSON mzn input
+    liftIO $ cleanTmpFile mzn input
+    assert $ isJust outy
+
 prop_mzncall_t001_01 :: Property
 prop_mzncall_t001_01 =
   property mzncall_t001_01
@@ -89,6 +104,10 @@
 prop_mzncall_t001_03 =
   property mzncall_t001_03
 
+prop_mzncall_t002_04 :: Property
+prop_mzncall_t002_04 =
+  property mzncall_t002_04
+
 tests :: IO Bool
 tests = checkParallel $$(discover)
 
@@ -101,3 +120,6 @@
       mzncall_t001_02
     it "should find seven satisfiable answers to y in [x-3 .. x+3]" $ hedgehog $ do
       mzncall_t001_03
+  describe "autogenerated interface" $ do
+    it "should map stuff" $ hedgehog $ do
+      mzncall_t002_04
