diff --git a/.gitignore b/.gitignore
index 801e831b7a8f2c45073aa139c5c787e1fd709de5..6f7cabca03b91fd95916e64836c1ac51eb207927 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@ pom.xml.asc
 .hg/
 .idea/
 /docs
+profiles.clj
diff --git a/project.clj b/project.clj
index 40a129d46750227d64e44885fc11c11d1e81e3ac..c931c3d80f83f9709fb1cf6aeda3520bf0a780fd 100644
--- a/project.clj
+++ b/project.clj
@@ -13,6 +13,7 @@
                                                     javax.jms/jms
                                                     com.sun.jdmk/jmxtools
                                                     com.sun.jmx/jmxri]]
+                 [com.h2database/h2 "1.3.170"]                  ; embedded SQL database
                  [korma "0.4.0"]                                ; SQL lib
                  ]
   :plugins [[cider/cider-nrepl "0.8.2"]      ; Interactive development w/ cider NREPL in Emacs
diff --git a/src/metabase/config.clj b/src/metabase/config.clj
new file mode 100644
index 0000000000000000000000000000000000000000..19d404218aec400f3628f4adabdbf159de379ad8
--- /dev/null
+++ b/src/metabase/config.clj
@@ -0,0 +1,5 @@
+(ns metabase.config)
+
+(def app-defaults
+  "Global application defaults"
+  {:database-file "metabase.db"})
\ No newline at end of file
diff --git a/src/metabase/db.clj b/src/metabase/db.clj
new file mode 100644
index 0000000000000000000000000000000000000000..5bcafbb1eef9ab036682a8876558744da51b2cda
--- /dev/null
+++ b/src/metabase/db.clj
@@ -0,0 +1,17 @@
+(ns metabase.db
+  (:require [clojure.tools.logging :as log]
+            [environ.core :refer [env]]
+            [korma.core :refer :all]
+            [korma.db :refer :all]
+            [metabase.config :refer [app-defaults]]))
+
+
+(defn get-db-file
+  "Check config/environment to determine the path to the h2 db file we want to use"
+  []
+  (or (env :database-file) (get app-defaults :database-file)))
+
+
+(defdb db (do
+            (log/info (str "Using H2 database file: " (get-db-file)))
+            (h2 {:db (get-db-file)})))
diff --git a/test/metabase/core_test.clj b/test/metabase/core_test.clj
deleted file mode 100644
index b8577ecba8c795d893ff98ef2cd397bc4e519b6d..0000000000000000000000000000000000000000
--- a/test/metabase/core_test.clj
+++ /dev/null
@@ -1,19 +0,0 @@
-(ns metabase.core-test
-  (:use midje.sweet)
-  (:use [metabase.core])
-  (:require [clojure.tools.logging :as log]))
-
-(println "You should expect to see three failures below.")
-(log/info "testing out this logging")
-
-(facts "about `first-element`"
-  (fact "it normally returns the first element"
-    (first-element [1 2 3] :default) => 1
-    (first-element '(1 2 3) :default) => 1)
-
-  ;; I'm a little unsure how Clojure types map onto the Lisp I'm used to.
-  (fact "default value is returned for empty sequences"
-    (first-element [] :default) => :default
-    (first-element '() :default) => :default
-    (first-element nil :default) => :default
-    (first-element (filter even? [1 3 5]) :default) => :default))