diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -10,14 +10,10 @@
 
 Available on [Hackage as `sbp`](http://hackage.haskell.org/package/sbp).
 
-The library supports building against Stackage LTS-6 and LTS-8. To
+The library supports building against Stackage LTS-6. To
 install from Hackage using `stack`:
 
     $ stack install --resolver lts-6.35 sbp # (LTS-6)
-
-or
-
-    $ stack install --resolver lts-8.24 sbp # (LTS-8)
 
 Note that we explicitly specify the resolvers to use, as installing `libsbp` may
 fail to build with more recent resolvers.
diff --git a/main/JSON2SBP.hs b/main/JSON2SBP.hs
--- a/main/JSON2SBP.hs
+++ b/main/JSON2SBP.hs
@@ -13,6 +13,7 @@
 -- stdout.
 
 import BasicPrelude                      hiding (lines, mapMaybe)
+import Control.Monad.Trans.Resource
 import Data.Aeson
 import Data.Conduit
 import Data.Conduit.Binary
@@ -36,7 +37,7 @@
 
 main :: IO ()
 main =
-  runConduitRes $
+  runResourceT $
     sourceHandle stdin
       =$= lines
       =$= mapMaybe decodeSBPMsg
diff --git a/main/SBP2JSON.hs b/main/SBP2JSON.hs
--- a/main/SBP2JSON.hs
+++ b/main/SBP2JSON.hs
@@ -13,6 +13,7 @@
 -- to stdout.
 
 import BasicPrelude                      hiding (map)
+import Control.Monad.Trans.Resource
 import Data.Aeson
 import Data.ByteString.Lazy              hiding (ByteString, map)
 import Data.Conduit
@@ -28,7 +29,7 @@
 
 main :: IO ()
 main =
-  runConduitRes $
+  runResourceT $
     sourceHandle stdin
       =$= conduitDecode
       =$= map encodeLine
diff --git a/main/SBP2YAML.hs b/main/SBP2YAML.hs
--- a/main/SBP2YAML.hs
+++ b/main/SBP2YAML.hs
@@ -12,6 +12,7 @@
 -- to stdout.
 
 import BasicPrelude                      hiding (map)
+import Control.Monad.Trans.Resource
 import Data.Conduit
 import Data.Conduit.Binary
 import Data.Conduit.List
@@ -22,7 +23,7 @@
 
 main :: IO ()
 main =
-  runConduitRes $
+  runResourceT $
     sourceHandle stdin
       =$= conduitDecode
       =$= map (encode :: SBPMsg -> ByteString)
diff --git a/sbp.cabal b/sbp.cabal
--- a/sbp.cabal
+++ b/sbp.cabal
@@ -1,131 +1,125 @@
-name: sbp
-version: 2.2.12
-cabal-version: >=1.22
-build-type: Simple
-license: LGPL-3
-copyright: Copyright (C) 2015 Swift Navigation, Inc.
-maintainer: Mark Fine <dev@swiftnav.com>
-homepage: https://github.com/swift-nav/libsbp
-synopsis: SwiftNav's SBP Library
+name:                  sbp
+version:               2.2.15
+synopsis:              SwiftNav's SBP Library
+homepage:              https://github.com/swift-nav/libsbp
+license:               LGPL-3
+author:                Swift Navigation Inc.
+maintainer:            Mark Fine <dev@swiftnav.com>
+copyright:             Copyright (C) 2015 Swift Navigation, Inc.
+category:              Network
+build-type:            Simple
+cabal-version:         >= 1.22
+extra-source-files:    README.md
 description:
-    Haskell bindings for Swift Navigation Binary Protocol (SBP), a fast,
-    simple, and minimal binary protocol for communicating with Swift
-    devices. It is the native binary protocol used by the Piksi GPS
-    receiver to transmit solutions, observations, status and debugging
-    messages, as well as receive messages from the host operating
-    system, such as differential corrections and the almanac.
-category: Network
-author: Swift Navigation Inc.
-extra-source-files:
-    README.md
+  Haskell bindings for Swift Navigation Binary Protocol (SBP), a fast,
+  simple, and minimal binary protocol for communicating with Swift
+  devices. It is the native binary protocol used by the Piksi GPS
+  receiver to transmit solutions, observations, status and debugging
+  messages, as well as receive messages from the host operating
+  system, such as differential corrections and the almanac.
 
 source-repository head
-    type: git
-    location: git@github.com:swift-nav/libsbp.git
+  type:                git
+  location:            git@github.com:swift-nav/libsbp.git
 
 library
-    exposed-modules:
-        SwiftNav.CRC16
-        SwiftNav.SBP
-    build-depends:
-        aeson >=0.11.3.0,
-        array >=0.5.1.0,
-        base >=4.8 && <5,
-        base64-bytestring >=1.0.0.1,
-        basic-prelude >=0.5.2,
-        binary >=0.7.5.0,
-        bytestring >=0.10.6.0,
-        data-binary-ieee754 >=0.4.4,
-        lens >=4.13,
-        lens-aeson >=1.0.0.5,
-        monad-loops >=0.4.3,
-        template-haskell >=2.10.0.0,
-        text >=1.2.2.2,
-        unordered-containers >=0.2.8.0
-    default-language: Haskell2010
-    hs-source-dirs: src
-    other-modules:
-        SwiftNav.SBP.Msg
-        SwiftNav.SBP.TH
-        SwiftNav.SBP.Types
-        SwiftNav.SBP.Acquisition
-        SwiftNav.SBP.Bootload
-        SwiftNav.SBP.ExtEvents
-        SwiftNav.SBP.FileIo
-        SwiftNav.SBP.Flash
-        SwiftNav.SBP.Gnss
-        SwiftNav.SBP.Imu
-        SwiftNav.SBP.Logging
-        SwiftNav.SBP.Navigation
-        SwiftNav.SBP.Ndb
-        SwiftNav.SBP.Observation
-        SwiftNav.SBP.Piksi
-        SwiftNav.SBP.Settings
-        SwiftNav.SBP.System
-        SwiftNav.SBP.Tracking
-        SwiftNav.SBP.User
-    ghc-options: -Wall
+  exposed-modules:     SwiftNav.CRC16
+                     , SwiftNav.SBP
+  other-modules:       SwiftNav.SBP.Msg
+                     , SwiftNav.SBP.TH
+                     , SwiftNav.SBP.Types
+                     , SwiftNav.SBP.Acquisition
+                     , SwiftNav.SBP.Bootload
+                     , SwiftNav.SBP.ExtEvents
+                     , SwiftNav.SBP.FileIo
+                     , SwiftNav.SBP.Flash
+                     , SwiftNav.SBP.Gnss
+                     , SwiftNav.SBP.Imu
+                     , SwiftNav.SBP.Logging
+                     , SwiftNav.SBP.Navigation
+                     , SwiftNav.SBP.Ndb
+                     , SwiftNav.SBP.Observation
+                     , SwiftNav.SBP.Piksi
+                     , SwiftNav.SBP.Settings
+                     , SwiftNav.SBP.System
+                     , SwiftNav.SBP.Tracking
+                     , SwiftNav.SBP.User
+  default-language:    Haskell2010
+  hs-source-dirs:      src
+  ghc-options:         -Wall
+  build-depends:       aeson
+                     , array
+                     , base >= 4.8 && < 5
+                     , base64-bytestring
+                     , basic-prelude
+                     , binary
+                     , bytestring
+                     , data-binary-ieee754
+                     , lens
+                     , lens-aeson
+                     , monad-loops
+                     , template-haskell
+                     , text
+                     , unordered-containers
 
 executable sbp2json
-    main-is: SBP2JSON.hs
-    build-depends:
-        aeson >=0.11.3.0,
-        base >=4.8.2.0,
-        basic-prelude >=0.5.2,
-        binary-conduit >=1.2.4.1,
-        bytestring >=0.10.6.0,
-        conduit >=1.2.10,
-        conduit-extra >=1.1.16,
-        sbp
-    default-language: Haskell2010
-    hs-source-dirs: main
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+  hs-source-dirs:      main
+  main-is:             SBP2JSON.hs
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall
+  build-depends:       aeson
+                     , base
+                     , basic-prelude
+                     , binary-conduit
+                     , bytestring
+                     , conduit
+                     , conduit-extra
+                     , sbp
+                     , resourcet
+  default-language:    Haskell2010
 
 executable json2sbp
-    main-is: JSON2SBP.hs
-    build-depends:
-        aeson >=0.11.3.0,
-        base >=4.8.2.0,
-        basic-prelude >=0.5.2,
-        binary-conduit >=1.2.4.1,
-        conduit >=1.2.10,
-        conduit-extra >=1.1.16,
-        sbp
-    default-language: Haskell2010
-    hs-source-dirs: main
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+  hs-source-dirs:      main
+  main-is:             JSON2SBP.hs
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall
+  build-depends:       aeson
+                     , base
+                     , basic-prelude
+                     , binary-conduit
+                     , conduit
+                     , conduit-extra
+                     , sbp
+                     , resourcet
+  default-language:    Haskell2010
 
 executable sbp2yaml
-    main-is: SBP2YAML.hs
-    build-depends:
-        base >=4.8.2.0,
-        basic-prelude >=0.5.2,
-        binary-conduit >=1.2.4.1,
-        bytestring >=0.10.6.0,
-        conduit >=1.2.10,
-        conduit-extra >=1.1.16,
-        sbp,
-        yaml >=0.8.23
-    default-language: Haskell2010
-    hs-source-dirs: main
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+  hs-source-dirs:      main
+  main-is:             SBP2YAML.hs
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall
+  build-depends:       base
+                     , basic-prelude
+                     , binary-conduit
+                     , bytestring
+                     , conduit
+                     , conduit-extra
+                     , sbp
+                     , resourcet
+                     , yaml
+  default-language:    Haskell2010
 
 test-suite test
-    type: exitcode-stdio-1.0
-    main-is: Test.hs
-    build-depends:
-        aeson >=0.11.3.0,
-        base >=4.8.2.0,
-        base64-bytestring >=1.0.0.1,
-        basic-prelude >=0.5.2,
-        bytestring >=0.10.6.0,
-        QuickCheck >=2.8.2,
-        sbp,
-        tasty >=0.11.2.1,
-        tasty-hunit >=0.9.2,
-        tasty-quickcheck >=0.8.4
-    default-language: Haskell2010
-    hs-source-dirs: test
-    other-modules:
-        Test.SwiftNav.CRC16
-    ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+  type:                exitcode-stdio-1.0
+  hs-source-dirs:      test
+  main-is:             Test.hs
+  other-modules:       Test.SwiftNav.CRC16
+  build-depends:       aeson
+                     , base
+                     , base64-bytestring
+                     , basic-prelude
+                     , bytestring
+                     , QuickCheck
+                     , sbp
+                     , tasty
+                     , tasty-hunit
+                     , tasty-quickcheck
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall
+  default-language:    Haskell2010
