             [clojurewerkz.cassaforte.conversion :as conv]
             [qbits.hayt.cql :as cql]
             [clojurewerkz.cassaforte.query :as query])
-  (:import [com.datastax.driver.core Statement ResultSet ResultSetFuture Host SessionManager Cluster
+  (:import [com.datastax.driver.core Statement ResultSet ResultSetFuture Host Session Cluster
             Cluster$Builder SimpleStatement PreparedStatement HostDistance PoolingOptions
             ConsistencyLevel]
            [com.google.common.util.concurrent Futures FutureCallback]

;; Client-related
;;

(defprotocol DummySessionManager
  (executeAsync [_ query]))

(deftype DummySessionManagerImpl []
  DummySessionManager
  (executeAsync [_ query] (throw (Exception. "Not connected"))))


(def ^:dynamic *default-cluster*)
(def ^:dynamic *default-session* (DummySessionManagerImpl.))
(def ^:dynamic *async* false)
(def ^:dynamic *debug* false)


       explicitly, because `execute` is considered to be a low-level function."
  [& args]

  (let [[session query & {:keys [prepared]}] (if (instance? Session (first args))
                                               args
                                               (cons *default-session* args))
        ^Statement statement (if prepared
