diff --git a/ivory-serialize.cabal b/ivory-serialize.cabal
--- a/ivory-serialize.cabal
+++ b/ivory-serialize.cabal
@@ -1,5 +1,5 @@
 name:                ivory-serialize
-version:             0.1.0.3
+version:             0.1.0.4
 synopsis:            Serialization library for Ivory.
 description:         Used to automatically pack and unpack Ivory structures in big or little endian.
 author:              Galois, Inc.
@@ -13,7 +13,7 @@
 source-repository    this
   type:     git
   location: https://github.com/GaloisInc/ivory
-  tag:      hackage-0103
+  tag:      hackage-0.1.0.4
 
 
 
@@ -27,7 +27,7 @@
                         Ivory.Serialize.Struct,
                         Paths_ivory_serialize
 
-  build-depends:        base >= 4.6 && < 5,
+  build-depends:        base >= 4.7 && < 5,
                         base-compat,
                         filepath,
                         monadLib,
@@ -37,3 +37,5 @@
   hs-source-dirs:       src
   default-language:     Haskell2010
   ghc-options:          -Wall
+  if impl(ghc == 8.0.1)
+    ghc-options:        -Wno-redundant-constraints
diff --git a/support/ivory_serialize_prim.h b/support/ivory_serialize_prim.h
--- a/support/ivory_serialize_prim.h
+++ b/support/ivory_serialize_prim.h
@@ -273,55 +273,30 @@
 }
 
 static inline uint16_t ivory_serialize_unpack_prim_2_le(const uint8_t *src){
-#ifndef CONFIG_IVORY_SERIALIZE_BIG_ENDIAN
 	return (((uint16_t) src[0] << 0) |
 			((uint16_t) src[1] << 8));
-#else
-	return (((uint16_t) src[1] << 0) |
-			((uint16_t) src[0] << 8));
-#endif
 }
 
 static inline uint16_t ivory_serialize_unpack_prim_2_be(const uint8_t *src){
-#ifndef CONFIG_IVORY_SERIALIZE_BIG_ENDIAN
 	return (((uint16_t) src[1] << 0) |
 			((uint16_t) src[0] << 8));
-#else
-	return (((uint16_t) src[0] << 0) |
-			((uint16_t) src[1] << 8));
-#endif
 }
 
 static inline uint32_t ivory_serialize_unpack_prim_4_le(const uint8_t *src){
-#ifndef CONFIG_IVORY_SERIALIZE_BIG_ENDIAN
 	return (((uint32_t) src[0] << 0)  |
 			((uint32_t) src[1] << 8)  |
 			((uint32_t) src[2] << 16) |
 			((uint32_t) src[3] << 24));
-#else
-	return (((uint32_t) src[3] << 0)  |
-			((uint32_t) src[2] << 8)  |
-			((uint32_t) src[1] << 16) |
-			((uint32_t) src[0] << 24));
-#endif
 }
 
 static inline uint32_t ivory_serialize_unpack_prim_4_be(const uint8_t *src){
-#ifndef CONFIG_IVORY_SERIALIZE_BIG_ENDIAN
 	return (((uint32_t) src[3] << 0)  |
 			((uint32_t) src[2] << 8)  |
 			((uint32_t) src[1] << 16) |
 			((uint32_t) src[0] << 24));
-#else
-	return (((uint32_t) src[0] << 0)  |
-			((uint32_t) src[1] << 8)  |
-			((uint32_t) src[2] << 16) |
-			((uint32_t) src[3] << 24));
-#endif
 }
 
 static inline uint64_t ivory_serialize_unpack_prim_8_le(const uint8_t *src){
-#ifndef CONFIG_IVORY_SERIALIZE_BIG_ENDIAN
 	return (((uint64_t) src[0] << 0)  |
 			((uint64_t) src[1] << 8)  |
 			((uint64_t) src[2] << 16) |
@@ -330,20 +305,9 @@
 			((uint64_t) src[5] << 40) |
 			((uint64_t) src[6] << 48) |
 			((uint64_t) src[7] << 56));
-#else
-	return (((uint64_t) src[7] << 0)  |
-			((uint64_t) src[6] << 8)  |
-			((uint64_t) src[5] << 16) |
-			((uint64_t) src[4] << 24) |
-			((uint64_t) src[3] << 32) |
-			((uint64_t) src[2] << 40) |
-			((uint64_t) src[1] << 48) |
-			((uint64_t) src[0] << 56));
-#endif
 }
 
 static inline uint64_t ivory_serialize_unpack_prim_8_be(const uint8_t *src){
-#ifndef CONFIG_IVORY_SERIALIZE_BIG_ENDIAN
 	return (((uint64_t) src[7] << 0)  |
 			((uint64_t) src[6] << 8)  |
 			((uint64_t) src[5] << 16) |
@@ -352,16 +316,6 @@
 			((uint64_t) src[2] << 40) |
 			((uint64_t) src[1] << 48) |
 			((uint64_t) src[0] << 56));
-#else
-	return (((uint64_t) src[0] << 0)  |
-			((uint64_t) src[1] << 8)  |
-			((uint64_t) src[2] << 16) |
-			((uint64_t) src[3] << 24) |
-			((uint64_t) src[4] << 32) |
-			((uint64_t) src[5] << 40) |
-			((uint64_t) src[6] << 48) |
-			((uint64_t) src[7] << 56));
-#endif
 }
 
 // Functions to cast unpacked result to specific destination types:
