diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,9 @@
+## 0.2.2
+
+* Use hcat instead of <> in Codec.RPM.Types (#31).
+* Various changes for running hlint and hpc-coveralls in tests.
+* Fix -Wmissing-home-modules warnings.
+
 ## 0.2.1
 
 * Allow newer versions of conduit, conduit-extra, lzma-conduit, and resourcet.
diff --git a/Codec/RPM/Types.hs b/Codec/RPM/Types.hs
--- a/Codec/RPM/Types.hs
+++ b/Codec/RPM/Types.hs
@@ -19,7 +19,7 @@
 import qualified Data.ByteString as BS
 import           Data.Word(Word8, Word16, Word32)
 import           Text.PrettyPrint.HughesPJClass(Pretty(..))
-import           Text.PrettyPrint((<>), ($$), nest, text, vcat)
+import           Text.PrettyPrint(($$), hcat, nest, text, vcat)
 
 import Codec.RPM.Tags
 
@@ -82,13 +82,13 @@
 instance Pretty Lead where
     pPrint Lead{..} =
         vcat [ text "Lead:",
-               nest 2 $ text "rpmMajor:   " <> text (show rpmMajor),
-               nest 2 $ text "rpmMinor:   " <> text (show rpmMinor),
-               nest 2 $ text "rpmType:    " <> text (show rpmType),
-               nest 2 $ text "rpmArchNum: " <> text (show rpmArchNum),
-               nest 2 $ text "rpmName:    " <> text rpmName,
-               nest 2 $ text "rpmOSNum:   " <> text (show rpmOSNum),
-               nest 2 $ text "rpmSigType: " <> text (show rpmSigType) ]
+               nest 2 $ hcat [ text "rpmMajor:   ", text (show rpmMajor) ],
+               nest 2 $ hcat [ text "rpmMinor:   ", text (show rpmMinor) ],
+               nest 2 $ hcat [ text "rpmType:    ", text (show rpmType) ],
+               nest 2 $ hcat [ text "rpmArchNum: ", text (show rpmArchNum) ],
+               nest 2 $ hcat [ text "rpmName:    ", text rpmName ],
+               nest 2 $ hcat [ text "rpmOSNum:   ", text (show rpmOSNum) ],
+               nest 2 $ hcat [ text "rpmSigType: ", text (show rpmSigType) ] ]
 
 -- | A Header represents a block of metadata.  It is used twice in the RPM - as the
 -- representation for signatures and as the representation for regular metadata.  Internally,
@@ -132,6 +132,6 @@
 instance Pretty SectionHeader where
     pPrint SectionHeader{..} =
         vcat [ text "SectionHeader:",
-               nest 2 $ text "sectionHeader: " <> text (show sectionVersion),
-               nest 2 $ text "sectionCount:  " <> text (show sectionCount),
-               nest 2 $ text "sectionSize:   " <> text (show sectionSize) ]
+               nest 2 $ hcat [ text "sectionHeader: ", text (show sectionVersion) ],
+               nest 2 $ hcat [ text "sectionCount:  ", text (show sectionCount) ],
+               nest 2 $ hcat [ text "sectionSize:   ", text (show sectionSize) ] ]
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -2,9 +2,12 @@
 	[ -d .cabal-sandbox ] || cabal sandbox init && cabal update
 
 hlint: sandbox
-	[ -x .cabal-sandbox/bin/happy ] || cabal install happy
-	[ -x .cabal-sandbox/bin/hlint ] || cabal install hscolour==1.24.2 hlint
-	cabal exec hlint .
+	if [ -z "$$(which hlint)" ]; then \
+		echo hlint not found in PATH - install it; \
+		exit 1; \
+	else \
+		hlint .; \
+	fi
 
 tests: sandbox
 	cabal install --dependencies-only --enable-tests --force-reinstalls
@@ -12,8 +15,12 @@
 	cabal build
 	cabal test --show-details=always
 
-ci: hlint tests
+ci: tests hlint
 
 ci_after_success:
-	[ -x .cabal-sandbox/bin/hpc-coveralls ] || cabal install hpc-coveralls
-	cabal exec hpc-coveralls --display-report tests
+	if [ -z "$$(which hpc-coveralls)" ]; then \
+		echo hpc-coveralls not found in PATH - install it; \
+		exit 1; \
+	else \
+		hpc-coveralls --display-report tests; \
+	fi
diff --git a/codec-rpm.cabal b/codec-rpm.cabal
--- a/codec-rpm.cabal
+++ b/codec-rpm.cabal
@@ -1,5 +1,5 @@
 name:               codec-rpm
-version:            0.2.1
+version:            0.2.2
 synopsis:           A library for manipulating RPM files
 description:        This module provides a library for reading RPM files and converting them
                     into useful data structures.  There is currently no way to operate in
@@ -58,6 +58,19 @@
     type:               exitcode-stdio-1.0
     hs-source-dirs:     ., tests
     main-is:            Spec.hs
+
+    other-modules:      Codec.RPM.Internal.Numbers,
+                        Codec.RPM.Parse,
+                        Codec.RPM.ParseSpec,
+                        Codec.RPM.Parse_parseRPMSpec,
+                        Codec.RPM.Tags,
+                        Codec.RPM.Tags_TagSpec,
+                        Codec.RPM.Tags_findSpec,
+                        Codec.RPM.Tags_mkTagSpec,
+                        Codec.RPM.Types,
+                        Codec.RPM.TypesSpec,
+                        Codec.RPM.Version,
+                        Codec.RPM.VersionSpec
 
     build-depends:      HUnit >= 1.5.0.0 && < 1.7,
                         hspec >= 2.4.4 && < 2.6,
