diff --git a/.travis.yml b/.travis.yml
index 1f5e67338ef364031a68f51225566500f5709288..e4adf86a9ebdec8d034c179251596cc0adbedf0e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -46,9 +46,9 @@ before_script:
 
 script:
   - cd $GOPATH/src/upper.io/db
-  - go test -v upper.io/db/postgresql
-  - go test -v upper.io/db/mysql
-  - go test -v upper.io/db/sqlite
-  - go test -v upper.io/db/ql
-  - go test -v upper.io/db/mongo
   - go test -v .
+  - BENCHTIME=2s make bench -C $GOPATH/src/upper.io/db/mysql
+  - BENCHTIME=2s make bench -C $GOPATH/src/upper.io/db/postgresql
+  - BENCHTIME=2s make bench -C $GOPATH/src/upper.io/db/ql
+  - BENCHTIME=2s make bench -C $GOPATH/src/upper.io/db/sqlite
+  - BENCHTIME=2s make bench -C $GOPATH/src/upper.io/db/mongo
diff --git a/mongo/Makefile b/mongo/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..0220da57596bff0e9967cf3364fd02693438eb3e
--- /dev/null
+++ b/mongo/Makefile
@@ -0,0 +1,12 @@
+TEST_HOST ?= 127.0.0.1
+BENCHTIME ?= 10s
+
+build:
+	go build && go install
+
+test:
+	go test -v
+	$(MAKE) -C _example
+
+bench:
+	go test -v -test.bench=. -test.benchtime=$(BENCHTIME) -benchmem
diff --git a/mongo/_example/Makefile b/mongo/_example/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..9ded0fd45d78acf9559b12c89bc8bc98f0b8ebd6
--- /dev/null
+++ b/mongo/_example/Makefile
@@ -0,0 +1,4 @@
+TEST_HOST   ?= 127.0.0.1
+
+test:
+	go run -v main.go
diff --git a/mysql/Makefile b/mysql/Makefile
index 8f8882b0cbecbc66d9ce3ab2ef552048885dc042..18e9ada2a71b760d185f998a04395e63c069ed1e 100644
--- a/mysql/Makefile
+++ b/mysql/Makefile
@@ -1,14 +1,15 @@
 TEST_HOST ?= 127.0.0.1
+BENCHTIME ?= 10s
 
 build:
 	go build && go install
 
 reset-db:
-	$(MAKE) -C _dumps
+	$(MAKE) reset-db -C _dumps
 
 test: reset-db
 	go test -v
 	$(MAKE) -C _example
 
 bench: reset-db
-	go test -v -test.bench=. -test.benchtime=10s -benchmem
+	go test -v -test.bench=. -test.benchtime=$(BENCHTIME) -benchmem
diff --git a/mysql/_dumps/Makefile b/mysql/_dumps/Makefile
index 073f8210eb75017b8208d6891dfc6254a525fae7..933d22b1a88437ee536b08f0b96a93beac88ea6e 100644
--- a/mysql/_dumps/Makefile
+++ b/mysql/_dumps/Makefile
@@ -5,5 +5,10 @@ DB_USERNAME ?= upperio_tests
 DB_PASSWORD ?= upperio_secret
 DB_NAME     ?= upperio_tests
 
-load:
-	cat structs.sql | mysql -u"$(DB_USERNAME)" -p"$(DB_PASSWORD)" -h"$(TEST_HOST)" -P$(TEST_PORT) "$(DB_NAME)"
+all: setup reset-db
+
+setup:
+	mysql -uroot -h"$(TEST_HOST)" -P$(TEST_PORT) < setup.sql
+
+reset-db:
+	mysql -u"$(DB_USERNAME)" -p"$(DB_PASSWORD)" -h"$(TEST_HOST)" -P$(TEST_PORT) "$(DB_NAME)" < structs.sql
diff --git a/postgresql/Makefile b/postgresql/Makefile
index 8f8882b0cbecbc66d9ce3ab2ef552048885dc042..18e9ada2a71b760d185f998a04395e63c069ed1e 100644
--- a/postgresql/Makefile
+++ b/postgresql/Makefile
@@ -1,14 +1,15 @@
 TEST_HOST ?= 127.0.0.1
+BENCHTIME ?= 10s
 
 build:
 	go build && go install
 
 reset-db:
-	$(MAKE) -C _dumps
+	$(MAKE) reset-db -C _dumps
 
 test: reset-db
 	go test -v
 	$(MAKE) -C _example
 
 bench: reset-db
-	go test -v -test.bench=. -test.benchtime=10s -benchmem
+	go test -v -test.bench=. -test.benchtime=$(BENCHTIME) -benchmem
diff --git a/postgresql/_dumps/Makefile b/postgresql/_dumps/Makefile
index 64253b53fa959f01a287c125e97699530cb2ceda..2c8b99c3f05761809b2a09347af3ef9653204b91 100644
--- a/postgresql/_dumps/Makefile
+++ b/postgresql/_dumps/Makefile
@@ -5,5 +5,10 @@ DB_USERNAME ?= upperio_tests
 DB_PASSWORD ?= upperio_secret
 DB_NAME     ?= upperio_tests
 
+all: setup reset-db
+
+setup:
+	psql -Upostgres -h$(TEST_HOST) -p$(TEST_PORT) < setup.sql
+
 reset-db:
-	cat structs.sql | PGPASSWORD="$(DB_PASSWORD)" psql -U$(DB_USERNAME) $(DB_NAME) -h$(TEST_HOST) -p$(TEST_PORT)
+	PGPASSWORD="$(DB_PASSWORD)" psql -U$(DB_USERNAME) $(DB_NAME) -h$(TEST_HOST) -p$(TEST_PORT) < structs.sql
diff --git a/ql/Makefile b/ql/Makefile
index 527a9d7c887a2e34820b90f29bdf979ee01bd42d..d8c3f251c4e5610b7fa01b22ec2b369b44b3473a 100644
--- a/ql/Makefile
+++ b/ql/Makefile
@@ -1,12 +1,14 @@
+BENCHTIME ?= 10s
+
 build:
 	go build && go install
 
 reset-db:
-	$(MAKE) -C _dumps
+	$(MAKE) reset-db -C _dumps
 
 test: reset-db
 	go test -v
 	$(MAKE) -C _example
 
 bench: reset-db
-	go test -v -test.bench=. -test.benchtime=10s -benchmem
+	go test -v -test.bench=. -test.benchtime=$(BENCHTIME) -benchmem
diff --git a/ql/_dumps/Makefile b/ql/_dumps/Makefile
index 8eb6708123b0f6df0024e321177e3a3f06d60137..dd60d745ab9797c622187357feb80a599f7f4a6f 100644
--- a/ql/_dumps/Makefile
+++ b/ql/_dumps/Makefile
@@ -1,7 +1,7 @@
 DB_NAME     ?= test.db
 
-load: clean
-	cat structs.sql | $$GOPATH/bin/ql -db $(DB_NAME)
+reset-db: clean
+	$$GOPATH/bin/ql -db $(DB_NAME) < structs.sql
 
 clean:
 	rm -f $(DB_NAME)
diff --git a/ql/database_test.go b/ql/database_test.go
index 057a5ba896e5d849bc938feb44dc8062fd812e71..9c94cb7173fc7319e2a9ab1c980c9ab8c4344f0c 100644
--- a/ql/database_test.go
+++ b/ql/database_test.go
@@ -29,7 +29,6 @@ package ql
 // go test
 
 import (
-	"os"
 
 	//"reflect"
 	//"errors"
diff --git a/sqlite/Makefile b/sqlite/Makefile
index 527a9d7c887a2e34820b90f29bdf979ee01bd42d..d8c3f251c4e5610b7fa01b22ec2b369b44b3473a 100644
--- a/sqlite/Makefile
+++ b/sqlite/Makefile
@@ -1,12 +1,14 @@
+BENCHTIME ?= 10s
+
 build:
 	go build && go install
 
 reset-db:
-	$(MAKE) -C _dumps
+	$(MAKE) reset-db -C _dumps
 
 test: reset-db
 	go test -v
 	$(MAKE) -C _example
 
 bench: reset-db
-	go test -v -test.bench=. -test.benchtime=10s -benchmem
+	go test -v -test.bench=. -test.benchtime=$(BENCHTIME) -benchmem
diff --git a/sqlite/_dumps/Makefile b/sqlite/_dumps/Makefile
index 11c707522b5e6adb4169d7d622296b42f9cbb40c..ad506a6002d64281aa843dc6c0681dc880ce3084 100644
--- a/sqlite/_dumps/Makefile
+++ b/sqlite/_dumps/Makefile
@@ -1,7 +1,7 @@
 all: reset-db
 
 reset-db: clean
-	cat structs.sql | sqlite3 gotest.sqlite3.db
+	sqlite3 gotest.sqlite3.db < structs.sql
 
 clean:
 	rm -f gotest.sqlite3.db