diff --git a/project.clj b/project.clj
index 890036e7ce1db63406caa74476e69293c882a488..61379b7af930b8e6200f4c2145783a5a5851fbf5 100644
--- a/project.clj
+++ b/project.clj
@@ -6,8 +6,7 @@
   :url "http://metabase.com/"
   :min-lein-version "2.5.0"
   :aliases {"test" ["with-profile" "+expectations" "expectations"]}
-  :dependencies [[org.clojure/clojure "1.6.0"]
-                 [org.clojure/core.async "LATEST"]                    ; facilities for async programming + communication (using 'LATEST' because this is an alpha library)
+  :dependencies [[org.clojure/clojure "1.7.0"]
                  [org.clojure/core.match "0.3.0-alpha4"]              ; optimized pattern matching library for Clojure
                  [org.clojure/math.numeric-tower "0.0.4"]             ; math functions like `ceil`
                  [org.clojure/core.memoize "0.5.7"]                   ; needed by core.match; has useful FIFO, LRU, etc. caching mechanisms
@@ -19,16 +18,15 @@
                  [org.clojure/tools.macro "0.1.5"]                    ; tools for writing macros
                  [org.clojure/tools.namespace "0.2.10"]
                  [org.clojure/tools.reader "0.9.2"]                   ; Need to explictly specify this dep otherwise expectations doesn't seem to work right :'(
-                 [org.clojure/tools.trace "0.7.8"]                    ; "tracing macros/fns to help you see what your code is doing"
                  [amalloy/ring-gzip-middleware "0.1.3"]               ; Ring middleware to GZIP responses if client can handle it
                  [cheshire "5.5.0"]                                   ; fast JSON encoding (used by Ring JSON middleware)
                  [clj-http-lite "0.2.1"]                              ; HTTP client; lightweight version of clj-http that uses HttpURLConnection instead of Apache
-                 [clj-time "0.9.0"]                                   ; library for dealing with date/time
+                 [clj-time "0.10.0"]                                  ; library for dealing with date/time
                  [colorize "0.1.1" :exclusions [org.clojure/clojure]] ; string output with ANSI color codes (for logging)
                  [com.cemerick/friend "0.2.1"]                        ; auth library
                  [com.draines/postal "1.11.3"]                        ; SMTP library
                  [com.h2database/h2 "1.4.187"]                        ; embedded SQL database
-                 [com.mattbertolini/liquibase-slf4j "1.2.1"]
+                 [com.mattbertolini/liquibase-slf4j "1.2.1"]          ; Java Migrations lib
                  [com.novemberain/monger "2.1.0"]                     ; MongoDB Driver
                  [compojure "1.3.4"]                                  ; HTTP Routing library built on Ring
                  [environ "1.0.0"]                                    ; easy environment management
@@ -40,11 +38,11 @@
                                com.sun.jdmk/jmxtools
                                com.sun.jmx/jmxri]]
                  [medley "0.6.0"]                                     ; lightweight lib of useful functions
-                 [org.liquibase/liquibase-core "3.3.5"]               ; migration management (Java lib)
+                 [org.liquibase/liquibase-core "3.4.0"]               ; migration management (Java lib)
                  [org.slf4j/slf4j-log4j12 "1.7.12"]
                  [org.yaml/snakeyaml "1.15"]                          ; YAML parser (required by liquibase)
                  [postgresql "9.3-1102.jdbc41"]                       ; Postgres driver
-                 [ring/ring-jetty-adapter "1.3.2"]                    ; Ring adapter using Jetty webserver (used to run a Ring server for unit tests)
+                 [ring/ring-jetty-adapter "1.4.0"]                    ; Ring adapter using Jetty webserver (used to run a Ring server for unit tests)
                  [ring/ring-json "0.3.1"]                             ; Ring middleware for reading/writing JSON automatically
                  [swiss-arrows "1.0.0"]]                              ; 'Magic wand' macro -<>, etc.
   :plugins [[lein-environ "1.0.0"]                                    ; easy access to environment variables
@@ -62,18 +60,18 @@
              :exclude-linters [:constant-test                         ; korma macros generate some forms with if statements that are always logically true or false
                                :suspicious-expression]}               ; core.match macros generate some forms like (and expr) which is "suspicious"
   :profiles {:dev {:dependencies [[org.clojure/tools.nrepl "0.2.10"]  ; REPL <3
-                                  [expectations "2.1.1"]              ; unit tests
+                                  [expectations "2.1.2"]              ; unit tests
                                   [marginalia "0.8.0"]                ; for documentation
                                   [ring/ring-mock "0.2.0"]]
-                   :plugins [[cider/cider-nrepl "0.9.0"]              ; Interactive development w/ cider NREPL in Emacs
+                   :plugins [[cider/cider-nrepl "0.9.1"]              ; Interactive development w/ cider NREPL in Emacs
                              [jonase/eastwood "0.2.1"]                ; Linting
-                             [lein-ancient "0.6.5"]                   ; Check project for outdated dependencies + plugins w/ 'lein ancient'
+                             [lein-ancient "0.6.7"]                   ; Check project for outdated dependencies + plugins w/ 'lein ancient'
                              [lein-bikeshed "0.2.0"]                  ; Linting
                              [lein-environ "1.0.0"]                   ; Specify env-vars in project.clj
                              [lein-expectations "0.0.8"]              ; run unit tests with 'lein expectations'
-                             [lein-instant-cheatsheet "2.1.1"]        ; use awesome instant cheatsheet created by yours truly w/ 'lein instant-cheatsheet'
+                             [lein-instant-cheatsheet "2.1.4"]        ; use awesome instant cheatsheet created by yours truly w/ 'lein instant-cheatsheet'
                              [lein-marginalia "0.8.0"]                ; generate documentation with 'lein marg'
-                             [refactor-nrepl "1.1.0-SNAPSHOT"]]       ; support for advanced refactoring in Emacs/LightTable
+                             [refactor-nrepl "1.1.0"]]                ; support for advanced refactoring in Emacs/LightTable
                    :global-vars {*warn-on-reflection* true}           ; Emit warnings on all reflection calls
                    :jvm-opts ["-Dlogfile.path=target/log"
                               "-Xms1024m"                             ; give JVM a decent heap size to start with
diff --git a/src/metabase/api/card.clj b/src/metabase/api/card.clj
index 5957d4f801d492a7145a352a3c9eb197017687bf..2ebd40e22b447135ef501d1962eb3b50fddc47bf 100644
--- a/src/metabase/api/card.clj
+++ b/src/metabase/api/card.clj
@@ -1,6 +1,6 @@
 (ns metabase.api.card
   (:require [compojure.core :refer [GET POST DELETE PUT]]
-            [korma.core :refer :all]
+            [korma.core :as k]
             [medley.core :refer [mapply]]
             [metabase.api.common :refer :all]
             [metabase.db :refer :all]
@@ -29,9 +29,9 @@
   [f]
   {f CardFilterOption}
   (-> (case (or f :all) ; default value for `f` is `:all`
-        :all  (sel :many Card (order :name :ASC) (where (or {:creator_id *current-user-id*}
-                                                            {:public_perms [> common/perms-none]})))
-        :mine (sel :many Card :creator_id *current-user-id* (order :name :ASC))
+        :all  (sel :many Card (k/order :name :ASC) (k/where (or {:creator_id *current-user-id*}
+                                                              {:public_perms [> common/perms-none]})))
+        :mine (sel :many Card :creator_id *current-user-id* (k/order :name :ASC))
         :fav  (->> (-> (sel :many [CardFavorite :card_id] :owner_id *current-user-id*)
                        (hydrate :card))
                    (map :card)
diff --git a/src/metabase/api/common.clj b/src/metabase/api/common.clj
index 8edb69b6bd6778c231300846daff1ebd2ba5395f..6933e7efab44cc16b331a931ca7dea3dd045c56b 100644
--- a/src/metabase/api/common.clj
+++ b/src/metabase/api/common.clj
@@ -3,8 +3,8 @@
   (:require [clojure.tools.logging :as log]
             [cheshire.core :as json]
             [compojure.core :refer [defroutes]]
-            [korma.core :refer :all :exclude [update]]
-            [medley.core :refer :all]
+            [korma.core :as k]
+            [medley.core :as m]
             [metabase.api.common.internal :refer :all]
             [metabase.db :refer :all]
             [metabase.db.internal :refer [entity->korma]]
@@ -327,7 +327,7 @@
 (defannotation Boolean
   "Param must be a boolean (this does *not* cast the param)."
   [symb value :nillable]
-  (checkp-with boolean? symb value "value must be a boolean."))
+  (checkp-with m/boolean? symb value "value must be a boolean."))
 
 (defannotation Dict
   "Param must be a dictionary (this does *not* cast the param)."
@@ -406,7 +406,7 @@
    `defendpoint` in the current namespace."
   [& additional-routes]
   (let [api-routes (->> (ns-publics *ns*)
-                        (filter-vals #(:is-endpoint? (meta %)))
+                        (m/filter-vals #(:is-endpoint? (meta %)))
                         (map first))]
     `(defroutes ~'routes ~@api-routes ~@additional-routes)))
 
diff --git a/src/metabase/api/dash.clj b/src/metabase/api/dash.clj
index a05a07715a72c1ae08052087fcd3df0ed28bbcfc..cd988aa3cd09a9fc17f8e4b524654f68fee7a469 100644
--- a/src/metabase/api/dash.clj
+++ b/src/metabase/api/dash.clj
@@ -1,7 +1,7 @@
 (ns metabase.api.dash
   "/api/dash endpoints."
   (:require [compojure.core :refer [GET POST PUT DELETE]]
-            [korma.core :refer :all]
+            [korma.core :as k]
             [metabase.api.common :refer :all]
             [metabase.db :refer :all]
             (metabase.models [hydrate :refer [hydrate]]
@@ -18,8 +18,8 @@
   [f]
   {f FilterOptionAllOrMine}
   (-> (case (or f :all)
-        :all  (sel :many Dashboard (where (or {:creator_id *current-user-id*}
-                                              {:public_perms [> common/perms-none]})))
+        :all  (sel :many Dashboard (k/where (or {:creator_id *current-user-id*}
+                                                {:public_perms [> common/perms-none]})))
         :mine (sel :many Dashboard :creator_id *current-user-id*))
       (hydrate :creator)))
 
diff --git a/src/metabase/api/meta/db.clj b/src/metabase/api/meta/db.clj
index 2f9d7b0445610260907b868c6464c109cacb87f4..4446582d168fcb80d2d967c1db874d9da870de08 100644
--- a/src/metabase/api/meta/db.clj
+++ b/src/metabase/api/meta/db.clj
@@ -1,7 +1,7 @@
 (ns metabase.api.meta.db
   "/api/meta/db endpoints."
   (:require [compojure.core :refer [GET POST PUT DELETE]]
-            [korma.core :refer :all]
+            [korma.core :as k]
             [metabase.api.common :refer :all]
             [metabase.db :refer :all]
             [metabase.driver :as driver]
@@ -20,7 +20,7 @@
 (defendpoint GET "/"
   "Fetch all `Databases`."
   []
-  (sel :many Database (order :name)))
+  (sel :many Database (k/order :name)))
 
 (defendpoint POST "/"
   "Add a new `Database`."
@@ -112,7 +112,7 @@
   "Get a list of all `Tables` in `Database`."
   [id]
   (read-check Database id)
-  (-> (sel :many Table :db_id id :active true (order :name))
+  (-> (sel :many Table :db_id id :active true (k/order :name))
       (hydrate :human_readable_name)))
 
 (defendpoint GET "/:id/idfields"
diff --git a/src/metabase/api/meta/table.clj b/src/metabase/api/meta/table.clj
index 7df3b7f232970f0548e74b3845db1bb6b54760cb..75454212953aa24d55eda2f40a017d4a3dc56aab 100644
--- a/src/metabase/api/meta/table.clj
+++ b/src/metabase/api/meta/table.clj
@@ -1,7 +1,7 @@
 (ns metabase.api.meta.table
   "/api/meta/table endpoints."
   (:require [compojure.core :refer [GET POST PUT]]
-            [korma.core :refer :all]
+            [korma.core :as k]
             [metabase.api.common :refer :all]
             [metabase.db :refer :all]
             (metabase.models [hydrate :refer :all]
@@ -19,7 +19,7 @@
 (defendpoint GET "/"
   "Get all `Tables`."
   []
-  (-> (sel :many Table :active true (order :name :ASC))
+  (-> (sel :many Table :active true (k/order :name :ASC))
       (hydrate :db :human_readable_name)
       ;; if for some reason a Table doesn't have rows set then set it to 0 so UI doesn't barf
       (#(map (fn [table]
@@ -49,7 +49,7 @@
   "Get all `Fields` for `Table` with ID."
   [id]
   (read-check Table id)
-  (-> (sel :many Field :table_id id, :active true, :field_type [not= "sensitive"], (order :name :ASC))
+  (-> (sel :many Field :table_id id, :active true, :field_type [not= "sensitive"], (k/order :name :ASC))
       (hydrate :human_readable_name)))
 
 (defendpoint GET "/:id/query_metadata"
diff --git a/src/metabase/api/session.clj b/src/metabase/api/session.clj
index 8d661a9825b84245b8039a32dcba469e054d67ed..3dcca7689cfa93dd723d91701218a499637eaeb7 100644
--- a/src/metabase/api/session.clj
+++ b/src/metabase/api/session.clj
@@ -3,7 +3,7 @@
   (:require [clojure.tools.logging :as log]
             [compojure.core :refer [defroutes GET POST DELETE]]
             [hiccup.core :refer [html]]
-            [korma.core :as korma]
+            [korma.core :as k]
             [metabase.api.common :refer :all]
             [metabase.db :refer :all]
             [metabase.email.messages :as email]
@@ -18,7 +18,7 @@
   [:as {{:keys [email password] :as body} :body}]
   {email    [Required Email]
    password [Required NonEmptyString]}
-  (let [user (sel :one :fields [User :id :password_salt :password] :email email (korma/where {:is_active true}))]
+  (let [user (sel :one :fields [User :id :password_salt :password] :email email (k/where {:is_active true}))]
     (checkp (not (nil? user))
     ; Don't leak whether the account doesn't exist or the password was incorrect
       (symbol "password") "did not match stored password")
diff --git a/src/metabase/driver.clj b/src/metabase/driver.clj
index b00dc02355638ae0d3c06384581e38f3e52ab4bb..c9d0ccb2a9cf7b5d963dfc1d459159cd0d6c9c40 100644
--- a/src/metabase/driver.clj
+++ b/src/metabase/driver.clj
@@ -1,7 +1,7 @@
 (ns metabase.driver
   (:require clojure.java.classpath
             [clojure.tools.logging :as log]
-            [medley.core :refer :all]
+            [medley.core :as m]
             [metabase.db :refer [exists? ins sel upd]]
             (metabase.driver [interface :as i]
                              [query-processor :as qp])
@@ -227,7 +227,7 @@
   (if id
     ;; execution has already been saved, so update it
     (do
-      (mapply upd QueryExecution id query-execution)
+      (m/mapply upd QueryExecution id query-execution)
       query-execution)
     ;; first time saving execution, so insert it
-    (mapply ins QueryExecution query-execution)))
+    (m/mapply ins QueryExecution query-execution)))
diff --git a/src/metabase/driver/generic_sql.clj b/src/metabase/driver/generic_sql.clj
index f281f15ed2d77176f21be958cd714be6afb6150c..ec1f6a76d278e93876c9fa97209d208e84bce746 100644
--- a/src/metabase/driver/generic_sql.clj
+++ b/src/metabase/driver/generic_sql.clj
@@ -1,7 +1,7 @@
 (ns metabase.driver.generic-sql
   (:require [clojure.java.jdbc :as jdbc]
             [clojure.tools.logging :as log]
-            [korma.core :refer :all]
+            [korma.core :as k]
             [metabase.driver :as driver]
             (metabase.driver [interface :refer :all]
                              [sync :as driver-sync])
@@ -14,7 +14,7 @@
     :standard-deviation-aggregations
     :unix-timestamp-special-type-fields})
 
-(defrecord SqlDriver [;; A set of additional features supported by a specific driver implmentation, e.g. :set-timezone for :postgres
+(defrecord SqlDriver [ ;; A set of additional features supported by a specific driver implmentation, e.g. :set-timezone for :postgres
                       additional-supported-features
                       column->base-type
                       connection-details->connection-spec
@@ -39,7 +39,7 @@
 
   (can-connect-with-details? [_ details]
     (let [connection (connection-details->connection-spec details)]
-      (= 1 (-> (exec-raw connection "SELECT 1" :results)
+      (= 1 (-> (k/exec-raw connection "SELECT 1" :results)
                first
                vals
                first))))
@@ -47,7 +47,7 @@
   ;; Query Processing
   (wrap-process-query-middleware [_ qp]
     (fn [query]
-      (qp query))) ; Nothing to do here
+      (qp query)))                      ; Nothing to do here
 
   (process-query [_ query]
     (qp/process-and-run query))
@@ -95,9 +95,9 @@
   ISyncDriverFieldAvgLength
   (field-avg-length [_ field]
     (or (some-> (korma-entity @(:table field))
-                (select (aggregate (avg (sqlfn* sql-string-length-fn
-                                                (raw (format "CAST(\"%s\" AS TEXT)" (name (:name field))))))
-                                   :len))
+                (k/select (k/aggregate (avg (k/sqlfn* sql-string-length-fn
+                                                      (k/raw (format "CAST(\"%s\" AS TEXT)" (name (:name field))))))
+                                       :len))
                 first
                 :len
                 int)
@@ -106,12 +106,12 @@
   ISyncDriverFieldPercentUrls
   (field-percent-urls [_ field]
     (let [korma-table (korma-entity @(:table field))
-          total-non-null-count (-> (select korma-table
-                                           (aggregate (count :*) :count)
-                                           (where {(keyword (:name field)) [not= nil]})) first :count)]
+          total-non-null-count (-> (k/select korma-table
+                                             (k/aggregate (count :*) :count)
+                                             (k/where {(keyword (:name field)) [not= nil]})) first :count)]
       (if (= total-non-null-count 0) 0.0
-          (let [url-count (or (-> (select korma-table
-                                          (aggregate (count :*) :count)
-                                          (where {(keyword (:name field)) [like "http%://_%.__%"]})) first :count)
+          (let [url-count (or (-> (k/select korma-table
+                                            (k/aggregate (count :*) :count)
+                                            (k/where {(keyword (:name field)) [like "http%://_%.__%"]})) first :count)
                               0)]
             (float (/ url-count total-non-null-count)))))))
diff --git a/src/metabase/driver/generic_sql/query_processor.clj b/src/metabase/driver/generic_sql/query_processor.clj
index d3e704c4769be4b367f8ee05e0b8f21a7ea2b208..44d502a53e9ba87a5631cd11ea005ac66f49457f 100644
--- a/src/metabase/driver/generic_sql/query_processor.clj
+++ b/src/metabase/driver/generic_sql/query_processor.clj
@@ -4,7 +4,7 @@
             [clojure.tools.logging :as log]
             [clojure.string :as s]
             [clojure.walk :as walk]
-            [korma.core :refer :all]
+            [korma.core :refer :all, :exclude [update]]
             [metabase.config :as config]
             [metabase.driver.query-processor :as qp]
             (metabase.driver.generic-sql [native :as native]
diff --git a/src/metabase/driver/query_processor.clj b/src/metabase/driver/query_processor.clj
index 25703d2fd7f1ac176e2d44b2ac65da29bf5ddacd..dfb2b2a01846dd0638a96d8ee6f30429fc962cc5 100644
--- a/src/metabase/driver/query_processor.clj
+++ b/src/metabase/driver/query_processor.clj
@@ -69,7 +69,7 @@
     (qp (if (or (not (= ag-type :rows)) breakout fields) query
             (-> query
                 (assoc-in [:query :fields-is-implicit] true)
-                (assoc-in [:query :fields] (->> (sel :many :fields [Field :name :base_type :special_type :table_id], :table_id source-table-id, :active true,
+                (assoc-in [:query :fields] (->> (sel :many :fields [Field :name :base_type :special_type :table_id :id], :table_id source-table-id, :active true,
                                                      :preview_display true, :field_type [not= "sensitive"], :parent_id nil, (k/order :position :asc), (k/order :id :desc))
                                                 (map expand/rename-mb-field-keys)
                                                 (map expand/map->Field)
@@ -175,12 +175,13 @@
 (defn- limit
   "Add an implicit `limit` clause to queries with `rows` aggregations, and limit the maximum number of rows that can be returned in post-processing."
   [qp]
-  (fn [{{{ag-type :aggregation-type} :aggregation, limit :limit} :query, :as query}]
+  (fn [{{{ag-type :aggregation-type} :aggregation, :keys [limit page]} :query, :as query}]
     (let [query   (cond-> query
                     (and (not limit)
+                         (not page)
                          (= ag-type :rows)) (assoc-in [:query :limit] max-result-bare-rows))
           results (qp query)]
-      (update-in results [:rows] (partial take max-result-rows)))))
+      (update results :rows (partial take max-result-rows)))))
 
 
 (defn- pre-log-query [qp]
@@ -188,7 +189,9 @@
     (when-not *disable-qp-logging*
       (log/debug (u/format-color 'magenta "\n\nPREPROCESSED/EXPANDED:\n%s"
                                  ;; obscure DB details when logging
-                                 (u/pprint-to-str (assoc-in query [:database :details] "**********")))))
+                                 (u/pprint-to-str (-> query
+                                                      (assoc-in [:database :details] "**********")
+                                                      (update :driver class))))))
     (qp query)))
 
 
diff --git a/src/metabase/driver/query_processor/expand.clj b/src/metabase/driver/query_processor/expand.clj
index 8e376ec89be051977339b845286aa69c17756262..33e26664d70607e403dc321790ffeeb6039297ad 100644
--- a/src/metabase/driver/query_processor/expand.clj
+++ b/src/metabase/driver/query_processor/expand.clj
@@ -110,15 +110,17 @@
                 (not (every? nil? clause))))))
 
 (defn- parse [query-dict]
-  (update-in query-dict [:query] #(-<> (assoc %
-                                              :aggregation (parse-aggregation (:aggregation %))
-                                              :breakout    (parse-breakout    (:breakout %))
-                                              :fields      (parse-fields      (:fields %))
-                                              :filter      (parse-filter      (:filter %))
-                                              :order_by    (parse-order-by    (:order_by %)))
-                                       (set/rename-keys <> {:order_by     :order-by
-                                                            :source_table :source-table})
-                                       (m/filter-vals non-empty-clause? <>))))
+  ;; TODO - we should parse the Page clause so we can validate it
+  ;; And convert to a limit / offset clauses
+  (update query-dict :query #(-<> (assoc %
+                                         :aggregation (parse-aggregation (:aggregation %))
+                                         :breakout    (parse-breakout    (:breakout %))
+                                         :fields      (parse-fields      (:fields %))
+                                         :filter      (parse-filter      (:filter %))
+                                         :order_by    (parse-order-by    (:order_by %)))
+                                  (set/rename-keys <> {:order_by     :order-by
+                                                       :source_table :source-table})
+                                  (m/filter-vals non-empty-clause? <>))))
 
 (defn rename-mb-field-keys
   "Rename the keys in a Metabase `Field` to match the format of those in Query Expander `Fields`."
@@ -350,15 +352,15 @@
                         ^Field field])
 
 (defparser parse-aggregation
-  ["rows"]              (->Aggregation :rows nil)
-  ["count"]             (->Aggregation :count nil)
-  ["avg" field-id]      (->Aggregation :avg (ph field-id))
-  ["count" field-id]    (->Aggregation :count (ph field-id))
-  ["distinct" field-id] (->Aggregation :distinct (ph field-id))
-  ["stddev" field-id]   (do (assert-driver-supports :standard-deviation-aggregations)
-                            (->Aggregation :stddev (ph field-id)))
-  ["sum" field-id]      (->Aggregation :sum (ph field-id))
-  ["cum_sum" field-id]  (->Aggregation :cumulative-sum (ph field-id)))
+  ["rows"]                              (->Aggregation :rows nil)
+  ["count"]                             (->Aggregation :count nil)
+  ["avg" (field-id :guard Field?)]      (->Aggregation :avg (ph field-id))
+  ["count" (field-id :guard Field?)]    (->Aggregation :count (ph field-id))
+  ["distinct" (field-id :guard Field?)] (->Aggregation :distinct (ph field-id))
+  ["stddev" (field-id :guard Field?)]   (do (assert-driver-supports :standard-deviation-aggregations)
+                                            (->Aggregation :stddev (ph field-id)))
+  ["sum" (field-id :guard Field?)]      (->Aggregation :sum (ph field-id))
+  ["cum_sum" (field-id :guard Field?)]  (->Aggregation :cumulative-sum (ph field-id)))
 
 
 ;; ## -------------------- Breakout --------------------
diff --git a/src/metabase/models/card.clj b/src/metabase/models/card.clj
index 6c7cab212ede0c778340b28342a7199c99e9f829..64af94fdef8d44a6c57f418602ff6c6803399207 100644
--- a/src/metabase/models/card.clj
+++ b/src/metabase/models/card.clj
@@ -1,5 +1,5 @@
 (ns metabase.models.card
-  (:require [korma.core :refer :all, :exclude [defentity]]
+  (:require [korma.core :refer :all, :exclude [defentity update]]
             [metabase.api.common :refer [*current-user-id*]]
             [metabase.db :refer :all]
             (metabase.models [interface :refer :all]
diff --git a/src/metabase/models/card_favorite.clj b/src/metabase/models/card_favorite.clj
index 5a38052192143f40234a96453ccd904191937a5b..df0d592264c5e347747598ef3299898bbb603ed5 100644
--- a/src/metabase/models/card_favorite.clj
+++ b/src/metabase/models/card_favorite.clj
@@ -1,5 +1,5 @@
 (ns metabase.models.card-favorite
-  (:require [korma.core :refer :all, :exclude [defentity]]
+  (:require [korma.core :refer :all, :exclude [defentity update]]
             [metabase.db :refer :all]
             (metabase.models [card :refer [Card]]
                              [interface :refer :all]
diff --git a/src/metabase/models/dashboard.clj b/src/metabase/models/dashboard.clj
index bfc98e747951d914544cc4113842fdd80992fe5c..253e8e840fc9d1a389fc2c4119ee6adf8747ee74 100644
--- a/src/metabase/models/dashboard.clj
+++ b/src/metabase/models/dashboard.clj
@@ -1,5 +1,5 @@
 (ns metabase.models.dashboard
-  (:require [korma.core :refer :all, :exclude [defentity]]
+  (:require [korma.core :refer :all, :exclude [defentity update]]
             [metabase.db :refer :all]
             (metabase.models [common :refer :all]
                              [dashboard-card :refer [DashboardCard]]
diff --git a/src/metabase/models/dashboard_card.clj b/src/metabase/models/dashboard_card.clj
index 57fb7d21b5c26da252255a0d8212f957f734d49f..3b4fd9ea74933b838c1f0c3907e52e6bca49a40a 100644
--- a/src/metabase/models/dashboard_card.clj
+++ b/src/metabase/models/dashboard_card.clj
@@ -1,6 +1,6 @@
 (ns metabase.models.dashboard-card
   (:require [clojure.set :as set]
-            [korma.core :refer :all, :exclude [defentity]]
+            [korma.core :refer :all, :exclude [defentity update]]
             [metabase.db :refer :all]
             (metabase.models [card :refer [Card]]
                              [interface :refer :all])))
diff --git a/src/metabase/models/database.clj b/src/metabase/models/database.clj
index 1683ae7ed6024d269bb494cebbd57b9d031439af..f757f81b5316d51a52c5dc4db7c0058ad1617c94 100644
--- a/src/metabase/models/database.clj
+++ b/src/metabase/models/database.clj
@@ -1,5 +1,5 @@
 (ns metabase.models.database
-  (:require [korma.core :refer :all, :exclude [defentity]]
+  (:require [korma.core :refer :all, :exclude [defentity update]]
             [metabase.api.common :refer [*current-user*]]
             [metabase.db :refer :all]
             [metabase.models.interface :refer :all]))
diff --git a/src/metabase/models/field.clj b/src/metabase/models/field.clj
index 3155fbde6121047c25bf89de8e96c6f1f907d24b..3020be043ba15e916e7f7efb2da2b4a8a602039b 100644
--- a/src/metabase/models/field.clj
+++ b/src/metabase/models/field.clj
@@ -1,5 +1,5 @@
 (ns metabase.models.field
-  (:require [korma.core :refer :all, :exclude [defentity]]
+  (:require [korma.core :refer :all, :exclude [defentity update]]
             [metabase.api.common :refer [check]]
             [metabase.db :refer :all]
             (metabase.models [common :as common]
diff --git a/src/metabase/models/field_values.clj b/src/metabase/models/field_values.clj
index 4792b0151efcf59e38212d10a5d6152a5560922b..92f5e4246f6947657d6def641ba20dbc5e6ae885 100644
--- a/src/metabase/models/field_values.clj
+++ b/src/metabase/models/field_values.clj
@@ -1,6 +1,6 @@
 (ns metabase.models.field-values
   (:require [clojure.tools.logging :as log]
-            [korma.core :refer :all, :exclude [defentity]]
+            [korma.core :refer :all, :exclude [defentity update]]
             (metabase [db :refer :all]
                       [util :as u])
             [metabase.models.interface :refer :all]))
diff --git a/src/metabase/models/foreign_key.clj b/src/metabase/models/foreign_key.clj
index 05b4ad25446fc001686e5831b80102b0e746e6a6..a99f0483aa9aa710e61419be6ae153b4f6c0ad74 100644
--- a/src/metabase/models/foreign_key.clj
+++ b/src/metabase/models/foreign_key.clj
@@ -1,5 +1,5 @@
 (ns metabase.models.foreign-key
-  (:require [korma.core :refer :all, :exclude [defentity]]
+  (:require [korma.core :refer :all, :exclude [defentity update]]
             [metabase.db :refer :all]
             [metabase.models.interface :refer :all]))
 
diff --git a/src/metabase/models/query_execution.clj b/src/metabase/models/query_execution.clj
index 0599fa0977c9691e97f5c7ddf111f1d739d3d6a5..6384bfef0629de26078f249b02744cd679b7aef8 100644
--- a/src/metabase/models/query_execution.clj
+++ b/src/metabase/models/query_execution.clj
@@ -1,5 +1,5 @@
 (ns metabase.models.query-execution
-  (:require [korma.core :refer :all, :exclude [defentity]]
+  (:require [korma.core :refer :all, :exclude [defentity update]]
             [metabase.api.common :refer [check]]
             [metabase.db :refer :all]
             (metabase.models [common :refer :all]
diff --git a/src/metabase/models/session.clj b/src/metabase/models/session.clj
index 877890cdf09664e0b00992e6db4c63bfd0fa27aa..ba533264261d5de956c4ba3435715ebf3164856f 100644
--- a/src/metabase/models/session.clj
+++ b/src/metabase/models/session.clj
@@ -1,5 +1,5 @@
 (ns metabase.models.session
-  (:require [korma.core :refer :all, :exclude [defentity]]
+  (:require [korma.core :refer :all, :exclude [defentity update]]
             [metabase.db :refer :all]
             (metabase.models [common :refer :all]
                              [interface :refer :all]
diff --git a/src/metabase/models/setting.clj b/src/metabase/models/setting.clj
index e96a2238a189f3eccbc33707bfa9abada8b4278a..905aea20d8886be3b970798532261bf9a04ba70b 100644
--- a/src/metabase/models/setting.clj
+++ b/src/metabase/models/setting.clj
@@ -3,7 +3,7 @@
   (:require [clojure.core.match :refer [match]]
             [clojure.string :as s]
             [environ.core :as env]
-            [korma.core :refer :all :exclude [defentity delete]]
+            [korma.core :as k]
             [metabase.db :refer [sel del]]
             [metabase.models.interface :refer :all]))
 
@@ -67,12 +67,12 @@
   [k v]
   {:pre [(keyword? k)
          (string? v)]}
-  (if (get k) (update Setting
-                      (set-fields {:value v})
-                      (where {:key (name k)}))
-      (insert Setting
-              (values {:key (name k)
-                       :value v})))
+  (if (get k) (k/update Setting
+                        (k/set-fields {:value v})
+                        (k/where {:key (name k)}))
+      (k/insert Setting
+                (k/values {:key (name k)
+                           :value v})))
   (restore-cache-if-needed)
   (swap! cached-setting->value assoc k v)
   v)
@@ -158,7 +158,7 @@
   (atom nil))
 
 (defentity Setting
-  [(table :setting)])
+  [(k/table :setting)])
 
 (defn- settings-list
   "Return a list of all Settings (as created with `defsetting`)."
@@ -169,10 +169,10 @@
        (map meta)
        (filter ::is-setting?)
        (map (fn [{k :name desc :doc default ::default-value}]
-              {:key (keyword k)
+              {:key         (keyword k)
                :description desc
-               :default (or (when (get-from-env-var k)
-                              (format "Using $MB_%s" (-> (name k)
-                                                         (s/replace "-" "_")
-                                                         s/upper-case)))
-                            default)}))))
+               :default     (or (when (get-from-env-var k)
+                                  (format "Using $MB_%s" (-> (name k)
+                                                             (s/replace "-" "_")
+                                                             s/upper-case)))
+                                default)}))))
diff --git a/src/metabase/models/table.clj b/src/metabase/models/table.clj
index f4a60161dd84d39b43de7fe5df03fa4edda845c9..c2221e789eba2e883901e6f25711df212034e3dc 100644
--- a/src/metabase/models/table.clj
+++ b/src/metabase/models/table.clj
@@ -1,5 +1,5 @@
 (ns metabase.models.table
-  (:require [korma.core :refer :all, :exclude [defentity]]
+  (:require [korma.core :refer :all, :exclude [defentity update]]
             [metabase.db :refer :all]
             (metabase.models [common :as common]
                              [database :as db]
diff --git a/src/metabase/models/user.clj b/src/metabase/models/user.clj
index 612aada390cb502664b9b97609b4636fc5821829..3d00550bdd54496b8600ba7a4ee19adbf9db4ee7 100644
--- a/src/metabase/models/user.clj
+++ b/src/metabase/models/user.clj
@@ -1,6 +1,6 @@
 (ns metabase.models.user
   (:require [cemerick.friend.credentials :as creds]
-            [korma.core :refer :all, :exclude [defentity]]
+            [korma.core :refer :all, :exclude [defentity update]]
             [metabase.db :refer :all]
             [metabase.email.messages :as email]
             [metabase.models.interface :refer :all]
diff --git a/test/metabase/api/card_test.clj b/test/metabase/api/card_test.clj
index 2b017fd5faf3075c9992337d87ff33046c0fdf2c..5f4bfd6293f684da31e64f8d01e0f5bc3df3e741 100644
--- a/test/metabase/api/card_test.clj
+++ b/test/metabase/api/card_test.clj
@@ -1,7 +1,6 @@
 (ns metabase.api.card-test
   "Tests for /api/card endpoints."
   (:require [expectations :refer :all]
-            [korma.core :refer :all]
             [metabase.db :refer :all]
             (metabase.models [card :refer [Card]]
                              [common :as common])
diff --git a/test/metabase/api/dash_test.clj b/test/metabase/api/dash_test.clj
index f8434d9a2e4b362a812141367b07f273653477f0..1df2460c3f153b1d17b0d627a4c9122152168a88 100644
--- a/test/metabase/api/dash_test.clj
+++ b/test/metabase/api/dash_test.clj
@@ -1,7 +1,6 @@
 (ns metabase.api.dash-test
   "Tests for /api/dash endpoints."
   (:require [expectations :refer :all]
-            [korma.core :refer :all]
             [metabase.api.card-test :refer [post-card]]
             [metabase.db :refer :all]
             (metabase.models [hydrate :refer [hydrate]]
diff --git a/test/metabase/api/meta/dataset_test.clj b/test/metabase/api/meta/dataset_test.clj
index b21c18da7f62fb45d995f1ec9d1a6dd3eacf7693..224d347f32bf6b34dacd8529584d4077ff111a5e 100644
--- a/test/metabase/api/meta/dataset_test.clj
+++ b/test/metabase/api/meta/dataset_test.clj
@@ -1,7 +1,7 @@
 (ns metabase.api.meta.dataset-test
   "Unit tests for /api/meta/dataset endpoints."
   (:require [expectations :refer :all]
-            [korma.core :refer :all]
+            [korma.core :as k]
             [metabase.db :refer :all]
             [metabase.models.query-execution :refer [QueryExecution]]
             [metabase.test.data :refer :all]
@@ -11,7 +11,7 @@
 ;;; ## POST /api/meta/dataset
 ;; Just a basic sanity check to make sure Query Processor endpoint is still working correctly.
 (expect-eval-actual-first
-    (match-$ (sel :one :fields [QueryExecution :id :uuid] (order :id :desc))
+    (match-$ (sel :one :fields [QueryExecution :id :uuid] (k/order :id :desc))
       {:data      {:rows    [[1000]]
                    :columns ["count"]
                    :cols    [{:base_type "IntegerField", :special_type "number", :name "count", :id nil, :table_id nil,
@@ -30,7 +30,7 @@
 
 ;; Even if a query fails we still expect a 200 response from the api
 (expect-eval-actual-first
-  (match-$ (sel :one QueryExecution (order :id :desc))
+  (match-$ (sel :one QueryExecution (k/order :id :desc))
     {:data {:rows []
             :cols []
             :columns []}
diff --git a/test/metabase/api/session_test.clj b/test/metabase/api/session_test.clj
index 5313b50a7ce6d89fa3fc55cb6027d2c4e97f8301..c140df9a5e3761ec52ced4bb16adbe73f33ad3d4 100644
--- a/test/metabase/api/session_test.clj
+++ b/test/metabase/api/session_test.clj
@@ -1,7 +1,6 @@
 (ns metabase.api.session-test
   "Tests for /api/session"
   (:require [expectations :refer :all]
-            [korma.core :refer :all]
             [metabase.db :refer :all]
             [metabase.http-client :refer :all]
             (metabase.models [session :refer [Session]]
diff --git a/test/metabase/api/user_test.clj b/test/metabase/api/user_test.clj
index 70a8a0b6c31363513dcd4e6d376a095cfea1f0e3..3c3dabee270215cc7364e2d0db2c93321e92f3fd 100644
--- a/test/metabase/api/user_test.clj
+++ b/test/metabase/api/user_test.clj
@@ -1,7 +1,7 @@
 (ns metabase.api.user-test
   "Tests for /api/user endpoints."
   (:require [expectations :refer :all]
-            [korma.core :refer :all]
+            [korma.core :as k]
             [metabase.db :refer :all]
             [metabase.http-client :as http]
             [metabase.middleware.auth :as auth]
@@ -217,7 +217,7 @@
 (let [user-last-name (random-name)]
   (expect-eval-actual-first
       (let [{user-id :id} (sel :one User :last_name user-last-name)]
-        (sel :one :fields [Session :id] :user_id user-id (order :created_at :desc))) ; get the latest Session for this User
+        (sel :one :fields [Session :id] :user_id user-id (k/order :created_at :desc))) ; get the latest Session for this User
     (let [password {:old "password"
                     :new "whateverUP12!!"}
           {:keys [email id] :as user} (create-user :password (:old password) :last_name user-last-name)
diff --git a/test/metabase/driver/generic_sql_test.clj b/test/metabase/driver/generic_sql_test.clj
index a490a483f8c36621428461e2320a440245c4aa4a..f9026bc67a747701f1ad86928875e2a50d70533e 100644
--- a/test/metabase/driver/generic_sql_test.clj
+++ b/test/metabase/driver/generic_sql_test.clj
@@ -1,6 +1,5 @@
 (ns metabase.driver.generic-sql-test
   (:require [expectations :refer :all]
-            [korma.core :refer :all]
             [metabase.db :refer :all]
             [metabase.driver :as driver]
             (metabase.driver [h2 :as h2]
@@ -49,21 +48,3 @@
 ;; ## TEST FIELD-AVG-LENGTH
 (expect 13
   (i/field-avg-length h2/driver @users-name-field))
-
-
-;; ## TEST CHECK-FOR-URLS
-;; (expect 0.375
-;;   (with-temp-table [table {:url "VARCHAR(254)"}]
-;;     (insert table
-;;             (values [{:url "http://www.google.com"}   ; 1/1 *
-;;                      {:url nil}                       ; 1/1 (ignored)
-;;                      {:url "https://amazon.co.uk"}    ; 2/2 *
-;;                      {:url "http://what.com?ok=true"} ; 3/3 *
-;;                      {:url "http://missing-period"}   ; 3/4
-;;                      {:url "ftp://not-http"}          ; 3/5
-;;                      {:url "http//amazon.com.uk"}     ; 3/6
-;;                      {:url "Not a URL"}               ; 3/7
-;;                      {:url "Not-a-url"}]))            ; 3/8
-;;     (i/field-percent-urls h2/driver {:name "URL"
-;;                                      :table (delay (assoc table
-;;                                                           :db test-db))})))
diff --git a/test/metabase/driver/sync_test.clj b/test/metabase/driver/sync_test.clj
index f0396e8b15ee76ca008ca6679438b9144a20b22a..35e3e17ec31a7b5ecccaade2469b21d5d7cefa84 100644
--- a/test/metabase/driver/sync_test.clj
+++ b/test/metabase/driver/sync_test.clj
@@ -1,6 +1,5 @@
 (ns metabase.driver.sync-test
   (:require [expectations :refer :all]
-            [korma.core :refer :all]
             [metabase.db :refer :all]
             [metabase.driver :as driver]
             (metabase.driver [h2 :as h2]