diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for Z-IO
 
+## 0.8.1.0  -- 2020-06-12
+
+* Remove `-march=native` flag to improve binary portability.
+
 ## 0.8.1.0  -- 2020-04-25
 
 * Add `getInterface` to `Z.IO.Network`.
diff --git a/Z-IO.cabal b/Z-IO.cabal
--- a/Z-IO.cabal
+++ b/Z-IO.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               Z-IO
-version:            0.8.1.0
+version:            0.8.1.1
 synopsis:           Simple and high performance IO toolkit for Haskell
 description:
   Simple and high performance IO toolkit for Haskell, including
@@ -181,7 +181,7 @@
     zconf.h
     zlib.h
 
-  cc-options:         -march=native -D_FILE_OFFSET_BITS=64
+  cc-options:         -D_FILE_OFFSET_BITS=64
   c-sources:
     cbits/hs_cwalk.c
     cbits/hs_uv_base.c
@@ -246,7 +246,7 @@
       third_party/libuv/src/win/winsock.c
 
     cc-options:
-      -Wall -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 -march=native
+      -Wall -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600 
 
     cpp-options:     -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0600
     include-dirs:    third_party/libuv/include third_party/libuv/src
@@ -301,7 +301,7 @@
         third_party/libuv/include third_party/libuv/src/unix
         third_party/libuv/src
 
-      cc-options:   -Wall -march=native
+      cc-options:   -Wall 
 
     else
       if os(osx)
@@ -346,7 +346,7 @@
           third_party/libuv/include third_party/libuv/src/unix
           third_party/libuv/src
 
-        cc-options:   -Wall -march=native
+        cc-options:   -Wall 
 
       else
         if flag(no-pkg-config)
diff --git a/Z/IO/Network/TCP.hs b/Z/IO/Network/TCP.hs
--- a/Z/IO/Network/TCP.hs
+++ b/Z/IO/Network/TCP.hs
@@ -48,7 +48,6 @@
 import           Z.IO.UV.Manager
 import           Z.IO.UV.UVStream
 import           Z.Foreign
-import           Data.Coerce
 
 --------------------------------------------------------------------------------
 
@@ -179,7 +178,7 @@
                 acceptBuf <- newPinnedPrimArray backLog
                 -- https://stackoverflow.com/questions/1953639/is-it-safe-to-cast-socket-to-int-under-win64
                 -- FD is 32bit CInt, it's large enough to hold uv_os_sock_t
-                let acceptBufPtr = coerce (mutablePrimArrayContents acceptBuf :: Ptr FD)
+                let acceptBufPtr = castPtr (mutablePrimArrayContents acceptBuf :: Ptr FD)
 
                 withUVManager' serverUVManager $ do
                     -- We use buffersize as accepted fd count(count backwards)
