diff --git a/pia-forward.cabal b/pia-forward.cabal
--- a/pia-forward.cabal
+++ b/pia-forward.cabal
@@ -1,34 +1,46 @@
-name:                pia-forward
-version:             0.1.0.1
-synopsis:            Set up port forwarding with the Private Internet Access
-                     VPN service.
-description:         Sets up and maintains a forwarded port.
-license:             GPL-3
-license-file:        LICENSE
-author:              Echo Nolan
-maintainer:          echo@echonolan.net
-copyright:           Copyright 2015 Echo Nolan
-category:            Network
-build-type:          Simple
-cabal-version:       >=1.10
-homepage:            https://github.com/enolan/pia-forward
-bug-reports:         https://github.com/enolan/pia-forward/issues
-extra-doc-files:     README.md
+name: pia-forward
+version: 0.1.0.2
+cabal-version: >=1.10
+build-type: Simple
+license: GPL-3
+license-file: LICENSE
+copyright: Copyright 2015 Echo Nolan
+maintainer: echo@echonolan.net
+homepage: https://github.com/enolan/pia-forward
+bug-reports: https://github.com/enolan/pia-forward/issues
+synopsis: Set up port forwarding with the Private Internet Access
+          VPN service.
+description:
+    Sets up and maintains a forwarded port.
+category: Network
+author: Echo Nolan
+extra-doc-files: README.md
 
+source-repository head
+    type: git
+    location: https://github.com/enolan/pia-forward.git
+
 executable pia-forward
-  main-is:             Main.hs
-  build-depends:       aeson == 0.8.*, base >=4.7 && <4.8, bytestring == 0.10.*,
-                       data-default == 0.5.*, directory == 1.2.*,
-                       filepath == 1.3.*, http-client == 0.4.7.*,
-                       http-client-tls == 0.2.*, network-info == 0.2.*,
-                       process == 1.2.*, random == 1.*, text == 1.2.*,
-                       text-format == 0.3.*, time == 1.4.*, xdg-basedir == 0.2.*
-  hs-source-dirs:      src
-  default-language:    Haskell2010
-  default-extensions:  DefaultSignatures, DeriveDataTypeable, DeriveGeneric,
-                       NamedFieldPuns, OverloadedStrings, ScopedTypeVariables
-  ghc-options:         -Wall
+    main-is: Main.hs
+    build-depends:
+        aeson >=0.11.2.0 && <0.12,
+        base >=4.8.2.0 && <4.9,
+        bytestring >=0.10.6.0 && <0.11,
+        data-default >=0.5.3 && <0.6,
+        directory >=1.2.2.0 && <1.3,
+        filepath >=1.4.0.0 && <1.5,
+        http-client >=0.4.31 && <0.5,
+        http-client-tls >=0.2.4.1 && <0.3,
+        network-info >=0.2.0.8 && <0.3,
+        process >=1.2.3.0 && <1.3,
+        random ==1.1.*,
+        text >=1.2.2.1 && <1.3,
+        text-format >=0.3.1.1 && <0.4,
+        time >=1.5.0.1 && <1.6,
+        xdg-basedir >=0.2.2 && <0.3
+    default-language: Haskell2010
+    default-extensions: DefaultSignatures DeriveDataTypeable
+                        DeriveGeneric NamedFieldPuns OverloadedStrings ScopedTypeVariables
+    hs-source-dirs: src
+    ghc-options: -Wall
 
-source-repository head
-  type:                git
-  location:            https://github.com/enolan/pia-forward.git
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -7,9 +7,7 @@
 import qualified Data.ByteString.Char8 as B
 import qualified Data.ByteString.Lazy.Char8 as LB
 import Data.Default (Default(..))
-import Data.Functor ((<$>))
 import Data.List (find)
-import Data.Monoid (mconcat)
 import Data.Text (Text)
 import Data.Text.Encoding (encodeUtf8)
 import Data.Text.Format (left)
