diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+### 0.21.0
+
++ New release to keep major version parity with the `haskell-gi` package, no changes otherwise.
+
 ### 0.20.8
 
 + Fix a bug which could lead to crashes when releasing boxed objects, see [issue #130](https://github.com/haskell-gi/haskell-gi/issues/130).
diff --git a/Data/GI/Base/BasicConversions.hsc b/Data/GI/Base/BasicConversions.hsc
--- a/Data/GI/Base/BasicConversions.hsc
+++ b/Data/GI/Base/BasicConversions.hsc
@@ -533,6 +533,9 @@
              _ <- f ptr
              mapZeroTerminatedCArray f (dataPtr `plusPtr` sizeOf ptr)
 
+-- | Given a set of pointers to blocks of memory of the specified
+-- size, copy the contents of these blocks to a freshly-allocated
+-- (with `allocBytes`) continuous area of memory.
 packBlockArray :: Int -> [Ptr a] -> IO (Ptr a)
 packBlockArray size items = do
   let nitems = length items
diff --git a/Data/GI/Base/GValue.hsc b/Data/GI/Base/GValue.hsc
--- a/Data/GI/Base/GValue.hsc
+++ b/Data/GI/Base/GValue.hsc
@@ -1,14 +1,16 @@
 {-# LANGUAGE FlexibleInstances #-}
 module Data.GI.Base.GValue
-    ( GValue(..)
+    (
+    -- * Constructing GValues
+      GValue(..)
     , IsGValue(..)
+    , GValueConstruct(..)
 
-    , newGValue         -- Build a new, empty, GValue of the given type
-    , buildGValue       -- Build a new GValue and initialize to the given value
+    , newGValue
+    , buildGValue
     , noGValue
 
-    , GValueConstruct(..)
-
+    -- * Setters and getters
     , set_string
     , get_string
     , set_pointer
@@ -67,11 +69,13 @@
 
 import Data.GI.Base.BasicTypes
 import Data.GI.Base.BasicConversions (cstringToText, textToCString)
+
 import Data.GI.Base.ManagedPtr
 import Data.GI.Base.Utils (callocBytes, freeMem)
 
 newtype GValue = GValue (ManagedPtr GValue)
 
+-- | A convenience alias for @`Nothing` :: `Maybe` `GValue`@.
 noGValue :: Maybe GValue
 noGValue = Nothing
 
@@ -89,20 +93,24 @@
 -- `GValue` (useful when constructing properties).
 data GValueConstruct o = GValueConstruct String GValue
 
+-- | Build a new, empty, `GValue` of the given type.
 newGValue :: GType -> IO GValue
 newGValue (GType gtype) = do
-  gvptr <- callocBytes #size GValue
+  gvptr <- callocBytes (#size GValue)
   _ <- g_value_init gvptr gtype
   gv <- wrapBoxed GValue gvptr
   return $! gv
 
--- Build a new GValue and set the initial value, just for convenience
+-- | A convenience function for building a new GValue and setting the
+-- initial value.
 buildGValue :: GType -> (GValue -> a -> IO ()) -> a -> IO GValue
 buildGValue gtype setter val = do
   gv <- newGValue gtype
   setter gv val
   return gv
 
+-- | A convenience class for marshaling back and forth between Haskell
+-- values and `GValue`s.
 class IsGValue a where
     toGValue :: a -> IO GValue
     fromGValue :: GValue -> IO a
diff --git a/haskell-gi-base.cabal b/haskell-gi-base.cabal
--- a/haskell-gi-base.cabal
+++ b/haskell-gi-base.cabal
@@ -1,5 +1,5 @@
 name:                haskell-gi-base
-version:             0.20.8
+version:             0.21.0
 synopsis:            Foundation for libraries generated by haskell-gi
 description:         Foundation for libraries generated by haskell-gi
 homepage:            https://github.com/haskell-gi/haskell-gi-base
