diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,13 +1,13 @@
 {-# LANGUAGE OverloadedStrings, RecordWildCards #-}
 module Main where
 
+import           Control.Concurrent
+import           Control.Monad
 import qualified Network.Mosquitto as M
-import Network.Mosquitto.Internal.Types
-import Control.Concurrent
-import Control.Monad
+import           Network.Mosquitto.Internal.Types
 
-import Control.Applicative
-import Options
+import           Control.Applicative
+import           Options
 
 data MainOptions = MainOptions
     { caCert    :: String
@@ -55,10 +55,9 @@
 
   M.connect m server port keepAlive
 
-
---  forkIO $ forever $ do
---    M.publish m False 0 "hello" "bla"
---    threadDelay 5000000
+  forkIO $ forever $ do
+    M.publish m False 0 "hello" "bla"
+    threadDelay 5000000
 
   M.loopForever m
   M.destroyMosquitto m
diff --git a/c-mosquitto.cabal b/c-mosquitto.cabal
--- a/c-mosquitto.cabal
+++ b/c-mosquitto.cabal
@@ -1,5 +1,5 @@
 name:                c-mosquitto
-version:             0.1.0.1
+version:             0.1.1.0
 synopsis:            Simpe mosquito MQTT binding able to work with the Amazons IoT
 -- description:
 homepage:            https://github.com/tolysz/c-mosquitto#readme
diff --git a/src/Network/Mosquitto.c b/src/Network/Mosquitto.c
--- a/src/Network/Mosquitto.c
+++ b/src/Network/Mosquitto.c
@@ -48,13 +48,16 @@
 }
 
 
-struct mosquitto * inline_c_Network_Mosquitto_9_f6927ebaedf8d0928ab12c9fbae686d2dd74e3c0(char * userId_inline_c_0, bool clearSession_inline_c_1) {
-return (
-        mosquitto_new( userId_inline_c_0
-                     , clearSession_inline_c_1
-                     , 0 // (void * ptrUserData)
-                     )
-         );
+struct mosquitto * inline_c_Network_Mosquitto_9_d9f94938a97be80fe91fbbdf0353d48a93b0f8eb(char * userId_inline_c_0, bool clearSession_inline_c_1) {
+
+        struct mosquitto * p =
+          mosquitto_new( userId_inline_c_0
+                       , clearSession_inline_c_1
+                       , 0 // (void * ptrUserData)
+                       );
+        mosquitto_threaded_set(p, true);
+        return p;
+      
 }
 
 
diff --git a/src/Network/Mosquitto.hs b/src/Network/Mosquitto.hs
--- a/src/Network/Mosquitto.hs
+++ b/src/Network/Mosquitto.hs
@@ -70,12 +70,16 @@
 
 newMosquitto :: Bool -> String -> Maybe a -> IO (Mosquitto a)
 newMosquitto clearSession (C8.pack -> userId) _userData = do
-   fp <- newForeignPtr_ <$> [C.exp|struct mosquitto *{
-        mosquitto_new( $bs-ptr:userId
-                     , $(bool clearSession)
-                     , 0 // (void * ptrUserData)
-                     )
-         }|]
+   fp <- newForeignPtr_ <$> [C.block|struct mosquitto *{
+        struct mosquitto * p =
+          mosquitto_new( $bs-ptr:userId
+                       , $(bool clearSession)
+                       , 0 // (void * ptrUserData)
+                       );
+        mosquitto_threaded_set(p, true);
+        return p;
+      }|]
+
    Mosquitto <$> fp
 
 destroyMosquitto :: Mosquitto a -> IO ()
