diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,15 @@
 # Change Log
 All notable changes to this project will be documented in this file.
 
+## 0.4.3.0 - 2018-09-15
+### Changed
+- Upper bound bumps.
+- Using -X to add headers will remove headers added by default. Before it would lead to duplicate headers.
+
+## 0.4.2.0 - 2018-06-01
+### Changed
+- Store uploaded files directly in target directory rather than first uploading to a temp directory then copying.
+
 ## 0.4.1.0 - 2018-02-14
 ### Added
 - Upload only mode.
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -31,6 +31,7 @@
 import Network.Wai.Middleware.Local ( local ) -- wai-extra
 import Network.Wai.Middleware.RequestLogger ( logStdout ) -- wai-extra
 import Network.Wai.Middleware.Static ( staticPolicy, addBase, isNotAbsolute, noDots, Policy, tryPolicy ) -- wai-middleware-static
+import Network.Wai.Middleware.StripHeaders ( stripHeadersIf ) -- wai-extra
 import Network.Wai.Parse ( tempFileBackEndOpts, parseRequestBody, fileName, fileContent ) -- wai-extra
 
 import Crypto.Random ( getSystemDRG, randomBytesGenerate, SystemDRG ) -- cryptonite
@@ -64,7 +65,7 @@
 -- Not future things: CGI etc of any sort, "extensibility"
 --
 vERSION :: String
-vERSION = "0.4.2.0"
+vERSION = "0.4.3.0"
 
 -- STUN code
 
@@ -448,7 +449,7 @@
                     (basicAuth (\u p -> return $ optUserName opts == u && pw == p)
                                (fromString $ optRealm opts))
                 $ enableIf (optCompress opts) (gzip def { gzipFiles = GzipCompress })
-                $ enableIf (not (null headers)) (addHeaders headers)
+                $ enableIf (not (null headers)) (addHeaders headers . stripHeadersIf (map fst headers) (const True))
                 $ enableIf (optAllowUploads opts || optUploadOnly opts) (update opts policy (overwritePolicy (optOverwriteOption opts)))
                 $ (if optUploadOnly opts then uploadForm opts policy else staticPolicy policy)
                 $ enableIf (optDirectoryListings opts) (directoryListing opts dir)
diff --git a/sws.cabal b/sws.cabal
--- a/sws.cabal
+++ b/sws.cabal
@@ -10,7 +10,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             0.4.2.0
+version:             0.4.3.0
 
 -- A short (one-line) description of the package.
 synopsis:            A simple web server for serving directories.
@@ -80,14 +80,14 @@
   --  warp                  >= 3.2.13 && < 3.3,
   --  warp-tls              >= 3.2.4 && < 3.3
   build-depends:       
-    base                  >= 4.11.1 && < 4.12,
+    base                  >= 4.11.1 && < 4.13,
     bytestring            >= 0.10.8 && < 0.11,
     cryptonite            >= 0.25 && < 0.26,
     directory             >= 1.3.1 && < 1.4,
     filepath              >= 1.4.2 && < 1.5,
     hourglass             >= 0.2.11 && < 0.3,
     http-types            >= 0.12.1 && < 0.13,
-    network               >= 2.7.0 && < 2.8,
+    network               >= 2.7.0 && < 2.9,
     resourcet             >= 1.2.1 && < 1.3,
     transformers          >= 0.5.5 && < 0.6,
     wai                   >= 3.2.1 && < 3.3,
