diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,36 +1,21 @@
-BSD LICENSE
-
-Copyright (c) 2017, Michael Truog <mjtruog at gmail dot com>
-All rights reserved.
+MIT License
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
+Copyright (c) 2017 Michael Truog <mjtruog at gmail dot com>
 
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-    * All advertising materials mentioning features or use of this
-      software must display the following acknowledgment:
-        This product includes software developed by Michael Truog
-    * The name of the author may not be used to endorse or promote
-      products derived from this software without specific prior
-      written permission
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -1,6 +1,8 @@
 `cloudi_api_haskell`
 ====================
 
+[![Hackage version](https://img.shields.io/hackage/v/cloudi.svg?label=Hackage)](https://hackage.haskell.org/package/cloudi)
+
 Haskell [CloudI API](http://cloudi.org/api.html#1_Intro)
 
 Build
@@ -11,4 +13,14 @@
     cabal install --only-dependencies
     cabal configure
     cabal build
+
+Author
+------
+
+Michael Truog (mjtruog [at] gmail (dot) com)
+
+License
+-------
+
+MIT License
 
diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,1 @@
+Please refer to the main repository [ChangeLog](https://github.com/CloudI/CloudI/blob/develop/src/ChangeLog)
diff --git a/cloudi.cabal b/cloudi.cabal
--- a/cloudi.cabal
+++ b/cloudi.cabal
@@ -1,9 +1,9 @@
 name:                cloudi
-version:             1.7.0
+version:             1.7.1
 synopsis:            Haskell CloudI API
 description:         Haskell CloudI API
 homepage:            https://github.com/CloudI/cloudi_api_haskell
-license:             BSD4
+license:             MIT
 license-file:        LICENSE
 author:              Michael Truog
 maintainer:          mjtruog@gmail.com
@@ -13,7 +13,7 @@
 build-type:          Simple
 cabal-version:       >= 1.22
 tested-with:         GHC == 7.10.3, GHC == 8.0.2
-extra-source-files:  README.markdown
+extra-source-files:  README.markdown changelog.md
 
 library
   hs-source-dirs:    src
diff --git a/src/Foreign/CloudI.hs b/src/Foreign/CloudI.hs
--- a/src/Foreign/CloudI.hs
+++ b/src/Foreign/CloudI.hs
@@ -3,44 +3,34 @@
 
 {-
 
-  BSD LICENSE
+  MIT License
 
-  Copyright (c) 2017, Michael Truog <mjtruog at gmail dot com>
-  All rights reserved.
+  Copyright (c) 2017 Michael Truog <mjtruog at gmail dot com>
 
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
 
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright
-        notice, this list of conditions and the following disclaimer in
-        the documentation and/or other materials provided with the
-        distribution.
-      * All advertising materials mentioning features or use of this
-        software must display the following acknowledgment:
-          This product includes software developed by Michael Truog
-      * The name of the author may not be used to endorse or promote
-        products derived from this software without specific prior
-        written permission
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
 
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
 
  -}
 
+-- | Haskell <http://cloudi.org/api.html#1_Intro CloudI API>.
+-- Example usage is available in the
+-- <http://cloudi.org/tutorials.html#cloudi_examples integration tests>.
+
 module Foreign.CloudI
     ( Instance.RequestType(..)
     , Instance.Source
@@ -52,6 +42,7 @@
     , messageDecodingError
     , terminateError
     , Exception
+    , Result
     , api
     , threadCount
     , subscribe
@@ -149,6 +140,8 @@
         Int, Int, ByteString, Source)
     | MessageKeepalive
 
+-- | a null trans_id is used to check for a timeout or
+-- to get the oldest response with recv_async
 transIdNull :: ByteString
 transIdNull = Char8.pack $ List.replicate 16 '\0'
 
@@ -184,6 +177,7 @@
 
 type Result a = Either String a
 
+-- | creates an instance of the CloudI API
 api :: Typeable s => Int -> s ->
     IO (Result (Instance.T s))
 api threadIndex state = do
@@ -217,6 +211,7 @@
         (_, _) ->
             return $ Left invalidInputError
 
+-- | returns the thread count from the service configuration
 threadCount :: IO (Result Int)
 threadCount = do
     threadCountValue <- POSIX.getEnv "CLOUDI_API_INIT_THREAD_COUNT"
@@ -226,6 +221,7 @@
         Just threadCountStr ->
             return $ Right (read threadCountStr :: Int)
 
+-- | subscribes to a service name pattern with a callback
 subscribe :: Instance.T s -> ByteString -> Instance.Callback s ->
     IO (Result (Instance.T s))
 subscribe api0 pattern f =
@@ -240,6 +236,7 @@
             send api0 subscribeBinary
             return $ Right $ Instance.callbacksAdd api0 pattern f
 
+-- | returns the number of subscriptions for a single service name pattern
 subscribeCount :: Typeable s => Instance.T s -> ByteString ->
     IO (Result (Int, Instance.T s))
 subscribeCount api0 pattern =
@@ -259,6 +256,7 @@
                 Right (_, api1@Instance.T{Instance.subscribeCount = count}) ->
                     return $ Right (count, api1)
 
+-- | unsubscribes from a service name pattern once
 unsubscribe :: Instance.T s -> ByteString ->
     IO (Result (Instance.T s))
 unsubscribe api0 pattern =
@@ -273,6 +271,7 @@
             send api0 unsubscribeBinary
             return $ Right $ Instance.callbacksRemove api0 pattern
 
+-- | sends an asynchronous service request
 sendAsync :: Typeable s => Instance.T s -> ByteString -> ByteString ->
     Maybe Int -> Maybe ByteString -> Maybe Int ->
     IO (Result (ByteString, Instance.T s))
@@ -303,6 +302,7 @@
                 Right (_, api1@Instance.T{Instance.transId = transId}) ->
                     return $ Right (transId, api1)
 
+-- | sends a synchronous service request
 sendSync :: Typeable s => Instance.T s -> ByteString -> ByteString ->
     Maybe Int -> Maybe ByteString -> Maybe Int ->
     IO (Result (ByteString, ByteString, ByteString, Instance.T s))
@@ -336,6 +336,8 @@
                     , Instance.transId = transId}) ->
                     return $ Right (responseInfo, response, transId, api1)
 
+-- | sends asynchronous service requests to all subscribers
+-- of the matching service name pattern
 mcastAsync :: Typeable s => Instance.T s -> ByteString -> ByteString ->
     Maybe Int -> Maybe ByteString -> Maybe Int ->
     IO (Result (Array Int ByteString, Instance.T s))
@@ -366,6 +368,7 @@
                 Right (_, api1@Instance.T{Instance.transIds = transIds}) ->
                     return $ Right (transIds, api1)
 
+-- | forwards a service request to a different service name
 forward_ :: Typeable s =>
     Instance.T s -> Instance.RequestType -> ByteString ->
     ByteString -> ByteString -> Int -> Int -> ByteString -> Source ->
@@ -401,6 +404,7 @@
             send api0 forwardBinary
             return $ Right api0
 
+-- | forwards an asynchronous service request to a different service name
 forwardAsync :: Typeable s => Instance.T s -> ByteString ->
     ByteString -> ByteString -> Int -> Int -> ByteString -> Source ->
     IO ()
@@ -441,6 +445,7 @@
             send api0 forwardBinary
             return $ Right api0
 
+-- | forwards a synchronous service request to a different service name
 forwardSync :: Typeable s => Instance.T s -> ByteString ->
     ByteString -> ByteString -> Int -> Int -> ByteString -> Source ->
     IO ()
@@ -453,6 +458,7 @@
         Right api1 ->
             Exception.throwIO $ ForwardSync api1
 
+-- | provides a response to a service request
 return_ :: Typeable s =>
     Instance.T s -> Instance.RequestType -> ByteString -> ByteString ->
     ByteString -> ByteString -> Int -> ByteString -> Source ->
@@ -488,6 +494,7 @@
             send api0 returnBinary
             return $ Right api0
 
+-- | provides a response to an asynchronous service request
 returnAsync :: Typeable s => Instance.T s -> ByteString -> ByteString ->
     ByteString -> ByteString -> Int -> ByteString -> Source ->
     IO ()
@@ -528,6 +535,7 @@
             send api0 returnBinary
             return $ Right api0
 
+-- | provides a response to a synchronous service request
 returnSync :: Typeable s => Instance.T s -> ByteString -> ByteString ->
     ByteString -> ByteString -> Int -> ByteString -> Source ->
     IO ()
@@ -540,6 +548,7 @@
         Right api1 ->
             Exception.throwIO $ ReturnSync api1
 
+-- | blocks to receive an asynchronous service request response
 recvAsync :: Typeable s => Instance.T s ->
     Maybe Int -> Maybe ByteString -> Maybe Bool ->
     IO (Result (ByteString, ByteString, ByteString, Instance.T s))
@@ -569,38 +578,53 @@
                     , Instance.transId = transId'}) ->
                     return $ Right (responseInfo, response, transId', api1)
 
+-- | returns the 0-based index of this process in the service instance
 processIndex :: Instance.T s -> Int
 processIndex Instance.T{Instance.processIndex = processIndex'} =
     processIndex'
 
+-- | returns the current process count based on the service configuration
 processCount :: Instance.T s -> Int
 processCount Instance.T{Instance.processCount = processCount'} =
     processCount'
 
+-- | returns the count_process_dynamic maximum count
+-- based on the service configuration
 processCountMax :: Instance.T s -> Int
 processCountMax Instance.T{Instance.processCountMax = processCountMax'} =
     processCountMax'
 
+-- | returns the count_process_dynamic minimum count
+-- based on the service configuration
 processCountMin :: Instance.T s -> Int
 processCountMin Instance.T{Instance.processCountMin = processCountMin'} =
     processCountMin'
 
+-- | returns the service name pattern prefix from the service configuration
 prefix :: Instance.T s -> ByteString
 prefix Instance.T{Instance.prefix = prefix'} =
     prefix'
 
+-- | returns the service initialization timeout
+-- from the service configuration
 timeoutInitialize :: Instance.T s -> Int
 timeoutInitialize Instance.T{Instance.timeoutInitialize = timeoutInitialize'} =
     timeoutInitialize'
 
+-- | returns the default asynchronous service request send timeout
+-- from the service configuration
 timeoutAsync :: Instance.T s -> Int
 timeoutAsync Instance.T{Instance.timeoutAsync = timeoutAsync'} =
     timeoutAsync'
 
+-- | returns the default synchronous service request send timeout
+-- from the service configuration
 timeoutSync :: Instance.T s -> Int
 timeoutSync Instance.T{Instance.timeoutSync = timeoutSync'} =
     timeoutSync'
 
+-- | returns the service termination timeout
+-- based on the service configuration
 timeoutTerminate :: Instance.T s -> Int
 timeoutTerminate Instance.T{Instance.timeoutTerminate = timeoutTerminate'} =
     timeoutTerminate'
@@ -846,8 +870,10 @@
         | cmd == messageRecvAsync || cmd == messageReturnSync -> do
             responseInfoSize <- Get.getWord32host
             responseInfo <- Get.getByteString $ fromIntegral responseInfoSize
+            Get.skip 1
             responseSize <- Get.getWord32host
             response <- Get.getByteString $ fromIntegral responseSize
+            Get.skip 1
             transId <- Get.getByteString 16
             empty <- Get.isEmpty
             let api1 = Instance.setResponse api0
@@ -1011,6 +1037,7 @@
         else
             pollRequestLoopBegin api0 timeout external pollTimer
 
+-- | blocks to process incoming CloudI service requests
 poll :: Typeable s => Instance.T s -> Int -> IO (Result (Bool, Instance.T s))
 poll api0 timeout =
     pollRequest api0 timeout True
@@ -1130,6 +1157,11 @@
 threadList :: Concurrent.MVar [Concurrent.MVar ()]
 threadList = Unsafe.unsafePerformIO (Concurrent.newMVar [])
 
+-- | simplifies thread creation and join
+--
+-- > Concurrent.setNumCapabilities threadCount
+-- > mapM_ (CloudI.threadCreate task) [0..threadCount - 1]
+-- > CloudI.threadsWait
 threadCreate :: (Int -> IO ()) -> Int -> IO ThreadId
 threadCreate f threadIndex = do
     thread <- Concurrent.newEmptyMVar
@@ -1146,6 +1178,7 @@
         Concurrent.forkOn threadIndex
             (Exception.try (restore action) >>= afterF)
 
+-- | wait for threads to join after being created by 'threadCreate'
 threadsWait :: IO ()
 threadsWait = do
     threads <- Concurrent.takeMVar threadList
@@ -1174,6 +1207,7 @@
     in
     loop Map.empty (Char8.split '\0' text)
 
+-- | parses "text_pairs" in service request info
 infoKeyValueParse :: ByteString -> Map ByteString [ByteString]
 infoKeyValueParse = textKeyValueParse
 
diff --git a/src/Foreign/CloudI/Instance.hs b/src/Foreign/CloudI/Instance.hs
--- a/src/Foreign/CloudI/Instance.hs
+++ b/src/Foreign/CloudI/Instance.hs
@@ -3,41 +3,27 @@
 
 {-
 
-  BSD LICENSE
+  MIT License
 
-  Copyright (c) 2017, Michael Truog <mjtruog at gmail dot com>
-  All rights reserved.
+  Copyright (c) 2017 Michael Truog <mjtruog at gmail dot com>
 
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
 
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright
-        notice, this list of conditions and the following disclaimer in
-        the documentation and/or other materials provided with the
-        distribution.
-      * All advertising materials mentioning features or use of this
-        software must display the following acknowledgment:
-          This product includes software developed by Michael Truog
-      * The name of the author may not be used to endorse or promote
-        products derived from this software without specific prior
-        written permission
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
 
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
 
  -}
 
@@ -84,13 +70,16 @@
 type Word8 = Word.Word8
 type Word32 = Word.Word32
 
+-- | provided when handling a service request
 data RequestType =
       ASYNC
     | SYNC
     deriving (Eq, Show)
 
+-- | the Erlang pid that is the source of the service request
 type Source = Erlang.Pid
 
+-- | a function to handle a service request
 type Callback s =
     RequestType ->
     ByteString -> ByteString ->
@@ -99,6 +88,7 @@
     s -> T s ->
     IO (Response s)
 
+-- | service request callback function return type
 data Response s =
       Response (ByteString, s, T s)
     | ResponseInfo (ByteString, ByteString, s, T s)
@@ -108,6 +98,7 @@
     | NullError (String, s, T s)
     deriving (Show, Typeable)
 
+-- | an instance of the CloudI API
 data T s = T
     { state :: !s
     , socketHandle :: !Handle
diff --git a/src/Foreign/Erlang.hs b/src/Foreign/Erlang.hs
--- a/src/Foreign/Erlang.hs
+++ b/src/Foreign/Erlang.hs
@@ -3,44 +3,32 @@
 
 {-
 
-  BSD LICENSE
+  MIT License
 
-  Copyright (c) 2017, Michael Truog <mjtruog at gmail dot com>
-  All rights reserved.
+  Copyright (c) 2017 Michael Truog <mjtruog at gmail dot com>
 
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
 
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright
-        notice, this list of conditions and the following disclaimer in
-        the documentation and/or other materials provided with the
-        distribution.
-      * All advertising materials mentioning features or use of this
-        software must display the following acknowledgment:
-          This product includes software developed by Michael Truog
-      * The name of the author may not be used to endorse or promote
-        products derived from this software without specific prior
-        written permission
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
 
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
 
  -}
 
+-- | Erlang Binary Term Format Encoding/Decoding
+
 module Foreign.Erlang
     ( OtpErlangTerm(..)
     , Error(..)
@@ -203,6 +191,7 @@
 (<>) :: Monoid.Monoid m => m -> m -> m
 (<>) = Monoid.mappend
 
+-- | Decode Erlang terms within binary data into Haskell types
 binaryToTerm :: LazyByteString -> Result OtpErlangTerm
 binaryToTerm binary =
     let size = LazyByteString.length binary in
@@ -217,6 +206,7 @@
             Right (_, _, term) ->
                 ok term
 
+-- | Encode Haskell types into Erlang terms in binary data
 termToBinary :: OtpErlangTerm -> Int -> Result LazyByteString
 termToBinary term compressed
     | compressed < (-1) || compressed > 9 =
diff --git a/src/Foreign/Erlang/Function.hs b/src/Foreign/Erlang/Function.hs
--- a/src/Foreign/Erlang/Function.hs
+++ b/src/Foreign/Erlang/Function.hs
@@ -3,41 +3,27 @@
 
 {-
 
-  BSD LICENSE
+  MIT License
 
-  Copyright (c) 2017, Michael Truog <mjtruog at gmail dot com>
-  All rights reserved.
+  Copyright (c) 2017 Michael Truog <mjtruog at gmail dot com>
 
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
 
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright
-        notice, this list of conditions and the following disclaimer in
-        the documentation and/or other materials provided with the
-        distribution.
-      * All advertising materials mentioning features or use of this
-        software must display the following acknowledgment:
-          This product includes software developed by Michael Truog
-      * The name of the author may not be used to endorse or promote
-        products derived from this software without specific prior
-        written permission
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
 
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
 
  -}
 
diff --git a/src/Foreign/Erlang/Pid.hs b/src/Foreign/Erlang/Pid.hs
--- a/src/Foreign/Erlang/Pid.hs
+++ b/src/Foreign/Erlang/Pid.hs
@@ -3,41 +3,27 @@
 
 {-
 
-  BSD LICENSE
+  MIT License
 
-  Copyright (c) 2017, Michael Truog <mjtruog at gmail dot com>
-  All rights reserved.
+  Copyright (c) 2017 Michael Truog <mjtruog at gmail dot com>
 
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
 
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright
-        notice, this list of conditions and the following disclaimer in
-        the documentation and/or other materials provided with the
-        distribution.
-      * All advertising materials mentioning features or use of this
-        software must display the following acknowledgment:
-          This product includes software developed by Michael Truog
-      * The name of the author may not be used to endorse or promote
-        products derived from this software without specific prior
-        written permission
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
 
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
 
  -}
 
diff --git a/src/Foreign/Erlang/Port.hs b/src/Foreign/Erlang/Port.hs
--- a/src/Foreign/Erlang/Port.hs
+++ b/src/Foreign/Erlang/Port.hs
@@ -3,41 +3,27 @@
 
 {-
 
-  BSD LICENSE
+  MIT License
 
-  Copyright (c) 2017, Michael Truog <mjtruog at gmail dot com>
-  All rights reserved.
+  Copyright (c) 2017 Michael Truog <mjtruog at gmail dot com>
 
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
 
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright
-        notice, this list of conditions and the following disclaimer in
-        the documentation and/or other materials provided with the
-        distribution.
-      * All advertising materials mentioning features or use of this
-        software must display the following acknowledgment:
-          This product includes software developed by Michael Truog
-      * The name of the author may not be used to endorse or promote
-        products derived from this software without specific prior
-        written permission
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
 
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
 
  -}
 
diff --git a/src/Foreign/Erlang/Reference.hs b/src/Foreign/Erlang/Reference.hs
--- a/src/Foreign/Erlang/Reference.hs
+++ b/src/Foreign/Erlang/Reference.hs
@@ -3,41 +3,27 @@
 
 {-
 
-  BSD LICENSE
+  MIT License
 
-  Copyright (c) 2017, Michael Truog <mjtruog at gmail dot com>
-  All rights reserved.
+  Copyright (c) 2017 Michael Truog <mjtruog at gmail dot com>
 
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
 
-      * Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright
-        notice, this list of conditions and the following disclaimer in
-        the documentation and/or other materials provided with the
-        distribution.
-      * All advertising materials mentioning features or use of this
-        software must display the following acknowledgment:
-          This product includes software developed by Michael Truog
-      * The name of the author may not be used to endorse or promote
-        products derived from this software without specific prior
-        written permission
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
 
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-  DAMAGE.
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
 
  -}
 
