diff --git a/gi-gtk-hs.cabal b/gi-gtk-hs.cabal
--- a/gi-gtk-hs.cabal
+++ b/gi-gtk-hs.cabal
@@ -1,5 +1,5 @@
 name:                gi-gtk-hs
-version:             0.3.4.1
+version:             0.3.4.2
 synopsis:            A wrapper for gi-gtk, adding a few more idiomatic API parts on top
 description:         A wrapper for gi-gtk, adding a few more idiomatic API parts on top
 homepage:            https://github.com/haskell-gi/gi-gtk-hs
diff --git a/src/Data/GI/Gtk/BuildFn.hs b/src/Data/GI/Gtk/BuildFn.hs
--- a/src/Data/GI/Gtk/BuildFn.hs
+++ b/src/Data/GI/Gtk/BuildFn.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-|
 A module aimed at making working with GtkBuilder easier.
 It's meant to be used like this (requires OverloadedStrings):
@@ -41,7 +42,9 @@
 import           Prelude.Compat
 import           Control.Monad.Reader (ReaderT, runReaderT, ask, MonadIO, liftIO)
 import           Data.GI.Base (GObject, castTo)
+#if !MIN_VERSION_haskell_gi_base(0,20,1)
 import           Data.GI.Base.BasicTypes (nullToNothing)
+#endif
 import           Data.Maybe (fromJust)
 import qualified Data.Text as T
 import           Foreign.ForeignPtr (ForeignPtr)
@@ -56,5 +59,9 @@
 getObject :: GObject a => (ManagedPtr a -> a) -> T.Text -> BuildFn a
 getObject ctor name = do
     builder <- ask
+#if MIN_VERSION_haskell_gi_base(0,20,1)
+    Just obj <- builderGetObject builder name
+#else
     Just obj <- nullToNothing $ builderGetObject builder name
+#endif
     liftIO $ fromJust <$> castTo ctor obj
diff --git a/src/Data/GI/Gtk/ModelView/CustomStore.hs b/src/Data/GI/Gtk/ModelView/CustomStore.hs
--- a/src/Data/GI/Gtk/ModelView/CustomStore.hs
+++ b/src/Data/GI/Gtk/ModelView/CustomStore.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE LambdaCase #-}
@@ -110,12 +111,10 @@
 instance IsTreeModel (CustomStore private row)
 
 instance GObject (CustomStore private row) where
-#if MIN_VERSION_haskell_gi_base(0,20,1)
-    boxedType _ = boxedType (undefined :: TreeModel)
-#else
+#if !MIN_VERSION_haskell_gi_base(0,20,1)
     gobjectIsInitiallyUnowned _ = False
-    gobjectType _ = gobjectType (undefined :: TreeModel)
 #endif
+    gobjectType _ = gobjectType (undefined :: TreeModel)
 
 -- | Type synonym for viewing the store as a set of columns.
 type ColumnMap row = IORef [ColumnAccess row]
diff --git a/src/Data/GI/Gtk/ModelView/ForestStore.hs b/src/Data/GI/Gtk/ModelView/ForestStore.hs
--- a/src/Data/GI/Gtk/ModelView/ForestStore.hs
+++ b/src/Data/GI/Gtk/ModelView/ForestStore.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE LambdaCase #-}
@@ -134,12 +135,10 @@
 instance IsTreeModel (ForestStore a)
 
 instance GObject (ForestStore a) where
-#if MIN_VERSION_haskell_gi_base(0,20,1)
-    boxedType _ = boxedType (undefined :: TreeModel)
-#else
+#if !MIN_VERSION_haskell_gi_base(0,20,1)
     gobjectIsInitiallyUnowned _ = False
-    gobjectType _ = gobjectType (undefined :: TreeModel)
 #endif
+    gobjectType _ = gobjectType (undefined :: TreeModel)
 
 instance IsTypedTreeModel ForestStore
 
diff --git a/src/Data/GI/Gtk/ModelView/SeqStore.hs b/src/Data/GI/Gtk/ModelView/SeqStore.hs
--- a/src/Data/GI/Gtk/ModelView/SeqStore.hs
+++ b/src/Data/GI/Gtk/ModelView/SeqStore.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE DataKinds #-}
@@ -109,12 +110,10 @@
 instance IsTreeModel (SeqStore a)
 
 instance GObject (SeqStore a) where
-#if MIN_VERSION_haskell_gi_base(0,20,1)
-    boxedType _ = boxedType (undefined :: TreeModel)
-#else
+#if !MIN_VERSION_haskell_gi_base(0,20,1)
     gobjectIsInitiallyUnowned _ = False
-    gobjectType _ = gobjectType (undefined :: TreeModel)
 #endif
+    gobjectType _ = gobjectType (undefined :: TreeModel)
 
 instance IsTypedTreeModel SeqStore
 
diff --git a/src/Data/GI/Gtk/ModelView/Types.hs b/src/Data/GI/Gtk/ModelView/Types.hs
--- a/src/Data/GI/Gtk/ModelView/Types.hs
+++ b/src/Data/GI/Gtk/ModelView/Types.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE MagicHash #-}
@@ -133,12 +134,10 @@
 instance IsTreeModel (TypedTreeModelSort row)
 
 instance GObject (TypedTreeModelSort row) where
-#if MIN_VERSION_haskell_gi_base(0,20,1)
-    boxedType _ = boxedType (undefined :: TreeModelSort)
-#else
+#if !MIN_VERSION_haskell_gi_base(0,20,1)
     gobjectIsInitiallyUnowned _ = False
-    gobjectType _ = gobjectType (undefined :: TreeModelSort)
 #endif
+    gobjectType _ = gobjectType (undefined :: TreeModelSort)
 
 unsafeTreeModelSortToGeneric :: TreeModelSort -> TypedTreeModelSort row
 unsafeTreeModelSortToGeneric = unsafeCoerce#
