diff --git a/fltkhs.cabal b/fltkhs.cabal
--- a/fltkhs.cabal
+++ b/fltkhs.cabal
@@ -1,5 +1,5 @@
 name : fltkhs
-version : 0.5.3.3
+version : 0.5.3.4
 synopsis : FLTK bindings
 description: Low level bindings for the FLTK GUI toolkit. For installation and quick start instruction please scroll all the way down to the README.
 license : MIT
@@ -144,6 +144,7 @@
   ghc-options: -Wall -fno-warn-name-shadowing -fno-warn-orphans -fno-warn-unused-matches -fno-warn-dodgy-exports
   if impl(ghc >= 8.0.1)
      cpp-options: -DHASCALLSTACK_AVAILABLE
+     cpp-options: -DCUSTOM_TYPE_ERRORS
   else
      if impl(ghc >= 7.10.2)
        cpp-options: -DCALLSTACK_AVAILABLE
diff --git a/src/Graphics/UI/FLTK/LowLevel/Dispatch.hs b/src/Graphics/UI/FLTK/LowLevel/Dispatch.hs
--- a/src/Graphics/UI/FLTK/LowLevel/Dispatch.hs
+++ b/src/Graphics/UI/FLTK/LowLevel/Dispatch.hs
@@ -2,6 +2,9 @@
 #ifndef OVERLAPPING_INSTANCES_DEPRECATED
 {-# LANGUAGE OverlappingInstances #-}
 #endif
+#ifdef CUSTOM_TYPE_ERRORS
+{-# LANGUAGE TypeOperators #-}
+#endif
 module Graphics.UI.FLTK.LowLevel.Dispatch
        (
          -- * FindOp
@@ -27,6 +30,9 @@
        )
 where
 import Graphics.UI.FLTK.LowLevel.Fl_Types
+#ifdef CUSTOM_TYPE_ERRORS
+import GHC.TypeLits
+#endif
 
 -- Type level function where `b` is Same
 -- if `x` and `y` are equal and `Different`
@@ -60,16 +66,38 @@
   FindOpHelper orig (child ancestors) needle Different = FindOp orig ancestors needle
 
 type family FindOp orig hierarchy (needle :: *) :: * where
+#ifdef CUSTOM_TYPE_ERRORS
+  FindOp (w ws) () (n ()) = TypeError (
+                                        ('ShowType n)
+                                        ':<>:
+                                        ('Text " is not supported by ")
+                                        ':<>:
+                                        ('ShowType w)
+                                      )
+#else
   FindOp orig () n = NoFunction n orig
+#endif
   FindOp orig hierarchy needle = FindOpHelper orig hierarchy needle (Contains (Functions hierarchy) needle)
 
 -- | Find the first "object" of the given type
 -- | in the hierarchy.
 data InHierarchy
+#ifndef CUSTOM_TYPE_ERRORS
 data NotInHierarchy a b
+#endif
 
 type family FindInHierarchy (needle :: * ) (curr :: *) (haystack :: *) :: * where
+#ifdef CUSTOM_TYPE_ERRORS
+  FindInHierarchy (n ns) () (a as) = TypeError (
+                                                 ('ShowType n)
+                                                 ':<>:
+                                                 ('Text " is not a kind of ")
+                                                 ':<>:
+                                                 ('ShowType a)
+                                               )
+#else
   FindInHierarchy needle () (a as) = NotInHierarchy needle (a as)
+#endif
   FindInHierarchy needle (a as) (a as) = InHierarchy
   FindInHierarchy needle (a as) (b bs) = FindInHierarchy needle as (b bs)
 
@@ -81,7 +109,6 @@
 class Parent a b
 instance (InHierarchy ~ FindInHierarchy a a b) => Parent a b
 
-
 -- | Associate a "class" with it's member functions
 type family Functions (x :: *) :: *
 
@@ -91,7 +118,7 @@
 --     * @op@ - name of the function
 --     * @obj@ - the class that implements @op@
 --     * @origObj@ - the class in the hierarchy where the search for @op@ started.
---       Kept around in case the type in needed. The best example is `setCallback`
+--
 --       whose implementation is usually found much lower in the hierarchy but where
 --       we also want to enforce that the implementation take the type of the widget calling
 --       it.
diff --git a/src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs b/src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs
--- a/src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs
+++ b/src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs
@@ -1177,7 +1177,7 @@
 -- longer to compile. To further emphasize, there does not appear to be any
 -- runtime performance issues. This is only a compile time problem.
 --
--- To preserve the user's and my sanity a flag `fastCompile` has been
+-- To preserve the user's sanity and mine a flag `fastCompile` has been
 -- introduced to the <https://github.com/deech/fltkhs-hello-world skeleton> <https://github.com/deech/fltkhs-fluid-hello-world projects>, the <https://github.com/deech/fltkhs-demos fltkhs-demos> and
 -- to the <https://github.com/deech/fltkhs-fluid-demos fltkhs-fluid-demos>.
 -- This flag which tells the compiler to skip some steps when
