        construct))))
 
 ;;
-;; SELECT Statement
-;;
-
-
-;; Columns
-
-(defn write-time
-  [column]
-  (fn writetime-query [query-builder]
-    (.writeTime query-builder (name column))))
-
-(defn ttl-column
-  [column]
-  (fn ttl-query [query-builder]
-    (.ttl query-builder (name column))))
-
-(defn distinct*
-  [column]
-  (fn distinct-query [query-builder]
-    (.distinct (.column query-builder column))))
-
-(defn as
-  [wrapper alias]
-  (fn distinct-query [query-builder]
-    (.as (wrapper query-builder) alias)))
-
-;; Query Parts
-
-(defn count-all
-  []
-  [:what-count nil])
-
-(defn fcall
-  [name & args]
-  [:what-fcall [name args]])
-
-(defn all
-  []
-  ;; TODO: resolve API inconsistency
-  [:what-all nil])
-
-(defn columns
-  [& columns]
-  [:what-columns columns])
-
-(defn column
-  [column & keys]
-  [:what-column [column keys]])
-
-(defn where
-  [m]
-  [:where m])
-
-(defn order-by
-  [& orderings]
-  [:order orderings])
-
-(defn limit
-  [lim]
-  [:limit lim])
-
-(defn allow-filtering
-  []
-  [:filtering nil])
-
-(defn from
-  [table-name]
-  [:from (name table-name)])
-
-;; Query
+;; Select Query
+;;
 
 (defn- complete-select-query
   [statements]

;;
;; Alter table
;;

(defn with-options
  [options]
  [:with-options options])

(defn add-column
  [column-name column-type]
  [:add-column [column-name column-type]])

(defn drop-column
  [column-name]
  [:drop-column column-name])

(defn alter-column
  [column-name column-type]
  [:alter-column [column-name column-type]])

(def ^:private alter-options
  {:default-ttl                 (fn [opts val] (.defaultTimeToLive opts (int val)))

                       (.countAll query-builder))
       :what-fcall   (fn fcall-query [query-builder [name args]]
                       (.fcall query-builder name (to-array args)))
       :what-columns (fn what-columns-query [query-builder columns]
                       (reduce (fn [builder column]
                                 (if (string? column)
                                   (.column builder column)
                                   (column builder)))
                               query-builder
                               columns))
       :what-column  (fn what-column-query [query-builder [column {:keys [as]}]]
                       (let [c (.column query-builder (name column))]
                         (if as
                           (.as c as)
