         :else (throw (Exception. (str "Callback of type " (type callback) " not supported")))))
 
 (defn start-tcp-responce-async-loop [client]
-  (go (loop []
-        (let [callback (<! @tcp-responce-ch)
+  (thread (loop []
+        (let [callback (<!! @tcp-responce-ch)
               stream-in-ch (:in @client)]
           (if-not (nil? stream-in-ch)
-            (let [responce (<! stream-in-ch)
+            (let [responce (<!! stream-in-ch)
+                  _ (println "got responce" responce)
                   responce (clojure.walk/keywordize-keys (cheshire/decode (String. (byte-array responce))))
                   request-uuid (keyword (get responce :request-uuid))
                   callback (get @pending-requests request-uuid)]

   (let [{:keys [b-a request-uuid]} (io-assoc-base entity-id key value)]
     (>!! @tcp-request-ch {:b-a b-a :request-uuid request-uuid :callback callback}))))


(defn io-dissoc
  ([^String entity-id key]

(defn init
  "Initiates a tcp socket connection to the server"
  [host port]
  (reset! pending-requests {})
  (reset! tcp-request-ch (chan 1000))
  (reset! tcp-responce-ch (chan 1000))
  (reset! client (connect-stream-to-core-async-channels
