diff --git a/cmd/common.go b/cmd/common.go
index e65466b4295ca21a5e0e2fdcca40ca0b2bf36566..3e01f2a38f235ad644af4ee52ade3ce8597dcf94 100644
--- a/cmd/common.go
+++ b/cmd/common.go
@@ -18,13 +18,8 @@ import (
 	"fmt"
 	"io/ioutil"
 
-	"os"
-	"time"
-
 	"github.com/aquasecurity/kube-bench/check"
 	"github.com/golang/glog"
-	"github.com/jinzhu/gorm"
-	_ "github.com/jinzhu/gorm/dialects/postgres"
 	"github.com/spf13/viper"
 )
 
@@ -169,51 +164,3 @@ func prettyPrint(r *check.Controls, summary check.Summary) {
 		summary.Pass, summary.Fail, summary.Warn,
 	)
 }
-
-func savePgsql(jsonInfo	 string) {
-	envVars := map[string]string{
-		"PGSQL_HOST":     viper.GetString("PGSQL_HOST"),
-		"PGSQL_USER":     viper.GetString("PGSQL_USER"),
-		"PGSQL_DBNAME":   viper.GetString("PGSQL_DBNAME"),
-		"PGSQL_SSLMODE":  viper.GetString("PGSQL_SSLMODE"),
-		"PGSQL_PASSWORD": viper.GetString("PGSQL_PASSWORD"),
-	}
-
-	for k, v := range envVars {
-		if v == "" {
-			err := fmt.Errorf("Environment variable %s missing", envVarsPrefix+"_"+k)
-			panic(err)
-		}
-	}
-
-	connInfo := fmt.Sprintf("host=%s user=%s dbname=%s sslmode=%s password=%s",
-		envVars["PGSQL_HOST"],
-		envVars["PGSQL_USER"],
-		envVars["PGSQL_DBNAME"],
-		envVars["PGSQL_SSLMODE"],
-		envVars["PGSQL_PASSWORD"],
-	)
-
-	hostname, err := os.Hostname()
-	if err != nil {
-		panic(err)
-	}
-
-	timestamp := time.Now()
-
-	type ScanResult struct {
-		gorm.Model
-		ScanHost string    `gorm:"type:varchar(63) not null"` // https://www.ietf.org/rfc/rfc1035.txt
-		ScanTime time.Time `gorm:"not null"`
-		ScanInfo string    `gorm:"type:jsonb not null"`
-	}
-
-	db, err := gorm.Open("postgres", connInfo)
-	defer db.Close()
-	if err != nil {
-		panic(err)
-	}
-
-	db.Debug().AutoMigrate(&ScanResult{})
-	db.Save(&ScanResult{ScanHost: hostname, ScanTime: timestamp, ScanInfo: jsonInfo})
-}
diff --git a/cmd/database.go b/cmd/database.go
new file mode 100644
index 0000000000000000000000000000000000000000..46668ae2a8e598ae4d54cff2c951e52c513efa18
--- /dev/null
+++ b/cmd/database.go
@@ -0,0 +1,60 @@
+package cmd
+
+import (
+	"fmt"
+	"os"
+	"time"
+
+	"github.com/golang/glog"
+	"github.com/jinzhu/gorm"
+	_ "github.com/jinzhu/gorm/dialects/postgres"
+	"github.com/spf13/viper"
+)
+
+func savePgsql(jsonInfo string) {
+	envVars := map[string]string{
+		"PGSQL_HOST":     viper.GetString("PGSQL_HOST"),
+		"PGSQL_USER":     viper.GetString("PGSQL_USER"),
+		"PGSQL_DBNAME":   viper.GetString("PGSQL_DBNAME"),
+		"PGSQL_SSLMODE":  viper.GetString("PGSQL_SSLMODE"),
+		"PGSQL_PASSWORD": viper.GetString("PGSQL_PASSWORD"),
+	}
+
+	for k, v := range envVars {
+		if v == "" {
+			exitWithError(fmt.Errorf("environment variable %s is missing", envVarsPrefix+"_"+k))
+		}
+	}
+
+	connInfo := fmt.Sprintf("host=%s user=%s dbname=%s sslmode=%s password=%s",
+		envVars["PGSQL_HOST"],
+		envVars["PGSQL_USER"],
+		envVars["PGSQL_DBNAME"],
+		envVars["PGSQL_SSLMODE"],
+		envVars["PGSQL_PASSWORD"],
+	)
+
+	hostname, err := os.Hostname()
+	if err != nil {
+		exitWithError(fmt.Errorf("received error looking up hostname: %s", err))
+	}
+
+	timestamp := time.Now()
+
+	type ScanResult struct {
+		gorm.Model
+		ScanHost string    `gorm:"type:varchar(63) not null"` // https://www.ietf.org/rfc/rfc1035.txt
+		ScanTime time.Time `gorm:"not null"`
+		ScanInfo string    `gorm:"type:jsonb not null"`
+	}
+
+	db, err := gorm.Open("postgres", connInfo)
+	defer db.Close()
+	if err != nil {
+		exitWithError(fmt.Errorf("received error connecting to database: %s", err))
+	}
+
+	db.Debug().AutoMigrate(&ScanResult{})
+	db.Save(&ScanResult{ScanHost: hostname, ScanTime: timestamp, ScanInfo: jsonInfo})
+	glog.V(2).Info(fmt.Sprintf("successfully stored result to: %s", envVars["PGSQL_HOST"]))
+}