diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.1.2, 0.1.3, 0.1.4 - 17.02.2017
+
+- Added manual version bounds to be compatible with stackage and the hackage build (sorry for the version spam)
+
 # 0.1.1 - 17.02.2017
 
 - Added changelog
diff --git a/initializer/Main.hs b/initializer/Main.hs
--- a/initializer/Main.hs
+++ b/initializer/Main.hs
@@ -3,14 +3,14 @@
 
 import           Control.Arrow         (second)
 import           Control.Monad
-import           Data.Containers
 import           Data.Foldable         (for_)
+import           Data.Maybe            (isJust)
 import           Data.Monoid           ((<>))
-import           Data.Sequences
+import qualified Data.Text             as T
 import qualified Data.Text.IO          as T
 import           Options.Applicative
 import           Paths_marvin
-import           Prelude               hiding (lookup)
+import           Prelude
 import           System.Directory
 import           System.FilePath
 import           System.IO
@@ -53,7 +53,7 @@
 main = do
     Opts{..} <- execParser infoParser
     d <- (</> "initializer") <$> getDataDir
-    unless (adapter `member` adType) $ hPutStrLn stderr "Unrecognized adapter"
+    unless (isJust $ lookup adapter adType) $ hPutStrLn stderr "Unrecognized adapter"
 
     let subsData = object [ "name" ~> botname
                           , "scriptsig" ~> maybe "IsAdapter a => ScriptInit a" ("ScriptInit " <>) (lookup adapter adType)
@@ -65,7 +65,7 @@
         unless exists (createDirectory dir)
 
     for_ wantFiles $ \(source, target) -> do
-        let targetName = unpack $ substituteValue target subsData
+        let targetName = T.unpack $ substituteValue target subsData
         if ".mustache" == takeExtension source
             then do
                 tpl <- fromEither <$> automaticCompile [d] source
diff --git a/marvin.cabal b/marvin.cabal
--- a/marvin.cabal
+++ b/marvin.cabal
@@ -1,11 +1,12 @@
 name: marvin
-version: 0.1.3
+version: 0.1.4
 cabal-version: >=1.10
 build-type: Simple
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2016 Justus Adam
 maintainer: dev@justus.science
+stability: Beta
 homepage: https://marvin.readthedocs.io
 synopsis: A modular chat bot
 description:
@@ -45,7 +46,7 @@
         Marvin.Adapter.Telegram.Poll
     build-depends:
         base >=4.7 && <5,
-        wreq ==0.4.*,
+        wreq >=0.4 && <0.6,
         aeson >=0.11 && <1.2,
         mtl >=2.2 && <3,
         lens ==4.*,
@@ -62,7 +63,7 @@
         text >=1.0 && <1.3,
         unordered-containers ==0.2.*,
         stm >=2.0 && <2.5,
-        marvin-interpolate ==1.0.*,
+        marvin-interpolate >=1.0 && <1.2,
         lifted-base ==0.2.*,
         lifted-async >=0.8 && <0.10,
         wai ==3.*,
@@ -75,9 +76,10 @@
         monad-control ==1.*,
         deepseq ==1.*,
         http-types >=0.8 && <1.0,
-        http-client ==0.4.*,
+        http-client >=0.4 && <0.6,
         http-client-tls >=0.2 && <0.4,
-        optparse-applicative >=0.11 && <1
+        optparse-applicative >=0.11 && <1,
+        transformers >=0.4 && <0.6
     default-language: Haskell2010
     default-extensions: OverloadedStrings TypeFamilies
                         MultiParamTypeClasses TupleSections LambdaCase GADTs
@@ -96,14 +98,13 @@
     main-is: Main.hs
     build-depends:
         base >=4.7 && <5,
-        mustache >=0.2 && <2.2,
-        directory >=1.2.6.2 && <1.3,
+        mustache >=2.0 && <2.2,
+        directory ==1.2.*,
         filepath ==1.4.*,
         marvin ==0.1.*,
         configurator ==0.3.*,
         optparse-applicative >=0.11 && <1,
         bytestring ==0.10.*,
-        mono-traversable ==1.0.*,
         text >=1.0 && <1.3,
         aeson >=0.11 && <1.2
     default-language: Haskell2010
@@ -116,11 +117,10 @@
     main-is: Main.hs
     build-depends:
         base >=4.7 && <5,
-        mustache >=0.2 && <2.2,
-        directory >=1.2.6.2 && <1.3,
+        mustache >=2.0 && <2.2,
+        directory ==1.2.*,
         filepath ==1.4.*,
         optparse-applicative >=0.11 && <1,
-        mono-traversable ==1.0.*,
         text >=1.0 && <1.3
     default-language: Haskell2010
     default-extensions: OverloadedStrings TypeFamilies
diff --git a/preprocessor/Main.hs b/preprocessor/Main.hs
--- a/preprocessor/Main.hs
+++ b/preprocessor/Main.hs
@@ -1,16 +1,16 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TemplateHaskell #-}
-import           Data.Aeson                      hiding (object)
-import qualified Data.ByteString.Lazy            as B
-import qualified Data.Configurator               as C
-import           Data.Maybe                      (fromMaybe)
-import           Data.Monoid                     ((<>))
-import           Data.MonoTraversable.Unprefixed
-import           Data.Sequences
-import qualified Data.Text.IO                    as T
-import           Marvin.Run                      (defaultConfigName, lookupFromAppConfig)
+import           Control.Monad         (filterM)
+import           Data.Aeson            hiding (object)
+import qualified Data.ByteString.Lazy  as B
+import qualified Data.Configurator     as C
+import           Data.List             (intercalate, isPrefixOf)
+import           Data.Maybe            (fromMaybe)
+import           Data.Monoid           ((<>))
+import qualified Data.Text.IO          as T
+import           Marvin.Run            (defaultConfigName, lookupFromAppConfig)
 import           Options.Applicative
-import           Prelude                         hiding (elem, filter)
+import           Prelude
 import           System.Directory
 import           System.FilePath
 import           Text.Mustache
diff --git a/src/Marvin/Adapter/Telegram/Poll.hs b/src/Marvin/Adapter/Telegram/Poll.hs
--- a/src/Marvin/Adapter/Telegram/Poll.hs
+++ b/src/Marvin/Adapter/Telegram/Poll.hs
@@ -7,6 +7,7 @@
 Stability   : experimental
 Portability : POSIX
 -}
+{-# LANGUAGE CPP #-}
 module Marvin.Adapter.Telegram.Poll
     ( TelegramAdapter, Poll
     , TelegramChat(..), ChatType(..)
@@ -31,6 +32,11 @@
 import           Network.HTTP.Client.TLS        (tlsManagerSettings)
 import           Network.Wreq
 
+#if MIN_VERSION_http_client(0,5,0)
+import           Network.HTTP.Client            (responseTimeoutMicro)
+#else
+responseTimeoutMicro = Just
+#endif
 
 data UpdateWithId = UpdateWithId {updateId :: Integer, updateContent :: TelegramUpdate Poll }
 
@@ -44,7 +50,7 @@
         timeout <- lookupFromAdapterConfig "polling-timeout" >>= readTimeout
         let defParams = ["timeout" := (timeout :: Int) ]
         nextId <- readIORef idRef
-        let pollSettings = defaults & manager . _Left .~ tlsManagerSettings { managerResponseTimeout = Just ((timeout + 3) * 1000)}
+        let pollSettings = defaults & manager . _Left .~ tlsManagerSettings { managerResponseTimeout = responseTimeoutMicro ((timeout + 3) * 1000)}
         response <- execAPIMethodWith pollSettings parseJSON "getUpdates" $ maybe defParams ((:defParams) . ("offset" :=)) nextId
         case response of
             Left err -> do
