diff --git a/bookkeeping.cabal b/bookkeeping.cabal
--- a/bookkeeping.cabal
+++ b/bookkeeping.cabal
@@ -1,5 +1,5 @@
 name:                bookkeeping
-version:             0.3.1.0
+version:             0.3.1.1
 synopsis:            A module for bookkeeping by double entry.
 description:
     A module for bookkeeping by double entry. This module provides a way to do bookkeeping programmatically.
diff --git a/src/Business/Bookkeeping.hs b/src/Business/Bookkeeping.hs
--- a/src/Business/Bookkeeping.hs
+++ b/src/Business/Bookkeeping.hs
@@ -42,10 +42,15 @@
   , Month
   , Date
   , Description
+  , unDescription
   , SubDescription
+  , unSubDescription
   , Amount
+  , unAmount
   , Category(..)
-  , CategoryName(..)
+  , CategoryName
+  , unCategoryName
+  , unCategorySubName
   , CategoryType(..)
   , DebitCategory(..)
   , CreditCategory(..)
@@ -228,35 +233,17 @@
 
 newtype Description = Description
   { unDescription :: Text
-  } deriving (Show, Read, Ord, Eq)
+  } deriving (Show, Read, Ord, Eq, Sem.Semigroup, Monoid)
 
 instance IsString Description where
   fromString = Description . fromString
 
-instance Sem.Semigroup Description where
-  Description a <> Description b = Description $ mappend a b
-
-instance Monoid Description where
-  mempty = Description mempty
-#if !(MIN_VERSION_base(4,11,0))
-  mappend = (Sem.<>)
-#endif
-
 newtype SubDescription = SubDescription
   { unSubDescription :: Text
-  } deriving (Show, Read, Ord, Eq)
+  } deriving (Show, Read, Ord, Eq, Sem.Semigroup, Monoid)
 
 instance IsString SubDescription where
   fromString = SubDescription . fromString
-
-instance Sem.Semigroup SubDescription where
-  SubDescription a <> SubDescription b = SubDescription $ mappend a b
-
-instance Monoid SubDescription where
-  mempty = SubDescription mempty
-#if !(MIN_VERSION_base(4,11,0))
-  mappend = (Sem.<>)
-#endif
 
 newtype Amount = Amount
   { unAmount :: Int
