    are removed. The `where` allows to specify the key for the row(s) to delete. First argument
    for this function should always be table name."
   [^Session session table & query-params]
-  (execute- session (cons table query-params) q/delete-query))
+  (cc/execute session
+              (compile-query- q/delete-query (cons table query-params))))
 
 (defn delete-async
   "Same as delete but returns a future"
   [^Session session table & query-params]
-  (execute-async- session (cons table query-params) q/delete-query))
+  (comment
+    (cc/executeasync- session (cons table query-params) q/delete-query)))
 
 (defn select
   "Retrieves one or more columns for one or more rows in a table.
    It returns a result set, where every row is a collection of columns returned by the query."
   [^Session session & query-params]
-  (execute- session query-params q/select-query))
+  (cc/execute session
+              (compile-query- q/select-query query-params)))
 
 (defn select-async
   "Same as select but returns a future"
   [^Session session & query-params]
-  (execute-async- session query-params q/select-query))
+  (comment
+    (cc/executeasync- session query-params q/select-query)))
 
 (defn truncate
   "Truncates a table: permanently and irreversably removes all rows from the table,
    not removing the table itself."
   [^Session session table]
-  (execute- session [table] q/truncate-query))
+  (cc/execute session
+              (q/truncate-query table)))
 
 (defn create-user
   [^Session session & query-params]
-  (execute- session query-params q/create-user-query))
+  (cc/execute session
+              (compile-query- q/create-user-query query-params)))
 
 (defn alter-user
   [^Session session & query-params]
-  (execute- session query-params q/alter-user-query))
+  (cc/execute session
+              (compile-query- q/alter-user-query query-params)))
 
 (defn drop-user
   [^Session session & query-params]
-  (execute- session query-params q/drop-user-query))
+  (cc/execute session
+              (compile-query- q/drop-user-query query-params)))
 
 (defn grant
   [^Session session & query-params]
-  (execute- session query-params q/grant-query))
+  (cc/execute session
+              (compile-query- q/grant-query query-params)))
 
 (defn revoke
   [^Session session & query-params]
-  (execute- session query-params q/revoke-query))
+  (cc/execute session
+              (compile-query- q/revoke-query query-params)))
 
 (defn list-users
   [^Session session & query-params]
-  (execute- session query-params q/list-users-query))
+  (cc/execute session
+              (compile-query- q/list-users-query query-params)))
 
 (defn list-permissions
   [^Session session & query-params]
-  (execute- session query-params q/list-perm-query))
+  (cc/execute session
+              (compile-query- q/list-perm-query query-params)))
 
 ;;
 ;; Higher level DB functions

  "Drops a table: this results in the immediate, irreversible removal of a table, including
   all data in it."
  [^Session session ks]
  (execute- session [ks] q/drop-table-query))

(defn use-keyspace
  "Takes an existing keyspace name as argument and set it as the per-session current working keyspace.
   All subsequent keyspace-specific actions will be performed in the context of the selected keyspace,
   unless otherwise specified, until another USE statement is issued or the connection terminates."
  [^Session session ks]
  (execute- session [ks] q/use-keyspace-query))

(defn alter-table
  "Alters a table definition. Use it to add new
   columns, drop existing ones, change the type of existing columns, or update the table options."
  [^Session session & query-params]
  (execute- session query-params q/alter-table-query))

(defn alter-keyspace
  "Alters properties of an existing keyspace. The
   supported properties are the same that for `create-keyspace`"
  [^Session session & query-params]
  (execute- session query-params q/alter-keyspace-query))

;;
;; DB Operations

                    (index-name :users_city)
                    (if-not-exists))"
  [^Session session & query-params]
  (cc/execute session
              (compile-query- q/create-index-query query-params )))

(defn drop-index
  "Drop an existing secondary index. The argument of the statement
