diff --git a/Data/IP/RouteTable/Internal.hs b/Data/IP/RouteTable/Internal.hs
--- a/Data/IP/RouteTable/Internal.hs
+++ b/Data/IP/RouteTable/Internal.hs
@@ -1,4 +1,5 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP           #-}
+{-# LANGUAGE DeriveGeneric #-}
 
 {-|
   IP routing table is a tree of 'AddrRange'
@@ -23,6 +24,7 @@
 import Data.Monoid
 import Data.Traversable
 import Data.Word
+import GHC.Generics (Generic, Generic1)
 import Prelude hiding (lookup)
 
 ----------------------------------------------------------------
@@ -90,7 +92,7 @@
 data IPRTable k a =
     Nil
   | Node !(AddrRange k) !k !(Maybe a) !(IPRTable k a) !(IPRTable k a)
-  deriving (Eq, Show)
+  deriving (Eq, Generic, Generic1, Show)
 
 ----------------------------------------------------------------
 
diff --git a/iproute.cabal b/iproute.cabal
--- a/iproute.cabal
+++ b/iproute.cabal
@@ -1,5 +1,5 @@
 Name:                   iproute
-Version:                1.7.2
+Version:                1.7.3
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
