diff --git a/.travis.yml b/.travis.yml
index cf44163..43d50cf 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,4 +14,4 @@
 script:
   - diff -u <(echo -n) <(gofmt -d $(git ls-files | grep '.go$' | grep -v vendor))
   - go vet $(glide novendor)
-  - go test
+  - go test -covermode=atomic
diff --git a/cmd/mockServer/README.md b/cmd/mockServer/README.md
deleted file mode 100644
index fd65ee5..0000000
--- a/cmd/mockServer/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# apidApigeeSync Mock Server
-
-## Overview
-
-This Mock Server is used during unit tests of apidApigeeSync and has been designed to be run standalone
-for stand-alone development use as well as performance and load testing. 
-
-## Build
-
-From the apidApigeeSync base dir: 
- 
-    glide install
-
-From apidApigeeSync/cmd/mockServer:
-
-    go build
-    
-You should now have an executable named "mockServer". 
-
-## Execute
-
-Execute with the -h flag to see flags: 
-
-    ./mockServer -h
-    Usage of ./mockServer:
-      -addDevEach duration
-            add a developer each duration (default 0s)
-      -bundleURI string
-            a URI to a valid deployment bundle (default '')
-      -numDeps int
-            number of deployments in snapshot (default 2)
-      -numDevs int
-            number of developers in snapshot (default 2)
-      -reliable
-            if false, server will often send 500 errors (default true)
-      -upDepEach duration
-            update (replace) a deployment each duration (default 0s)
-      -upDevEach duration
-            update a developer each duration (default 0s)         
-
-Note: Nothing is required. 
-
-The following are the values used by default by the Mock Server: 
-
-    ReliableAPI: true
-    ClusterID: "cluster"
-    TokenKey: "key"
-    TokenSecret: "secret"
-    Scope: "scope"
-    Organization: "org"
-    Environment: "test"
-    NumDevelopers: 2
-    AddDeveloperEvery: 0
-    UpdateDeveloperEvery: 0
-    NumDeployments: 2
-    ReplaceDeploymentEvery: 0
-    Port: 9001
-
-## Put it to use
-
-Set your apid configuration to point toward the Mock Server and have correct cluster, key, and secret values. 
-
-For example:
-
-    api_port: 9000
-    api_expvar_path: /expvar
-    events_buffer_size: 5
-    log_level: debug
-    apigeesync_proxy_server_base: http://localhost:9001
-    apigeesync_snapshot_server_base: http://localhost:9001
-    apigeesync_change_server_base: http://localhost:9001
-    apigeesync_consumer_key: key
-    apigeesync_consumer_secret: secret
-    apigeesync_cluster_id: cluster
-    #data_trace_log_level: debug
-    data_source: file:%s?_busy_timeout=20000
-
-Now start apid. It should download the snapshot and changes as you configured for the Mock Server.
-
-Try out a couple of APIs to verify:
-
-    curl -i -d "action=verify&key=1&uriPath=/&scopeuuid=scope" :9000/verifiers/apikey
-    
-    curl -i :9000/deployments
-
-## Notes
-
-Under high loads (eg. a large snapshot), apid may get timeout errors from sqlite. 
-If you see this, you can work around it by increasing the _busy_timeout by adding a config item to your apid config:
-
-    data_source: file:%s?_busy_timeout=10000
-
-The _busy_timeout value is in milliseconds, so the above value is 10s.
diff --git a/cmd/mockServer/main.go b/cmd/mockServer/main.go
deleted file mode 100644
index 8cfa1ef..0000000
--- a/cmd/mockServer/main.go
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2017 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package main
-
-import (
-	"flag"
-
-	"os"
-
-	"github.com/apid/apid-core"
-	"github.com/apid/apid-core/factory"
-	"github.com/apid/apidApigeeSync"
-)
-
-// runs a mock server standalone
-func main() {
-	// create new flag to avoid displaying all the Ginkgo flags
-	f := flag.NewFlagSet(os.Args[0], flag.ExitOnError)
-
-	bundleURI := f.String("bundleURI", "", "a URI to a valid deployment bundle (default '')")
-
-	reliable := f.Bool("reliable", true, "if false, server will often send 500 errors")
-
-	numDevs := f.Int("numDevs", 2, "number of developers in snapshot")
-
-	numDeps := f.Int("numDeps", 2, "number of deployments in snapshot")
-
-	f.Parse(os.Args[1:])
-
-	// set listener binding before apid.Initialize()
-	os.Setenv("APID_API_LISTEN", ":9001")
-
-	apid.Initialize(factory.DefaultServicesFactory())
-
-	log := apid.Log()
-	log.Debug("initializing...")
-	apidApigeeSync.SetLogger(log)
-
-	config := apid.Config()
-	router := apid.API().Router()
-
-	params := apidApigeeSync.MockParms{
-		ReliableAPI:    *reliable,
-		ClusterID:      "cluster",
-		TokenKey:       "key",
-		TokenSecret:    "secret",
-		Scope:          "scope",
-		Organization:   "org",
-		Environment:    "test",
-		NumDevelopers:  *numDevs,
-		NumDeployments: *numDeps,
-		BundleURI:      *bundleURI,
-	}
-
-	log.Printf("Params: %#v\n", params)
-
-	apidApigeeSync.Mock(params, router)
-
-	// print the base url to the console
-	listener := config.GetString("api_listen")
-	log.Print()
-	log.Printf("API is bound to: %s", listener)
-	log.Print()
-
-	// start client API listener
-	api := apid.API()
-	err := api.Listen()
-	if err != nil {
-		log.Print(err)
-	}
-}
