diff --git a/.project b/.project
deleted file mode 100644
index bb2fb71390c0d0a76bd480c24ecdc133f4bc878d..0000000000000000000000000000000000000000
--- a/.project
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>erisdb</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>com.googlecode.goclipse.goBuilder</name>
-			<triggers>clean,full,incremental,</triggers>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.googlecode.goclipse.core.goNature</nature>
-	</natures>
-</projectDescription>
diff --git a/DOCKER/Dockerfile b/DOCKER/Dockerfile
deleted file mode 100644
index 6db5423c2ecce5389fa33fa7f0441ed53c43d6b6..0000000000000000000000000000000000000000
--- a/DOCKER/Dockerfile
+++ /dev/null
@@ -1,80 +0,0 @@
-# Pull base image.
-FROM quay.io/eris/build
-MAINTAINER Eris Industries <support@erisindustries.com>
-
-
-#-----------------------------------------------------------------------------
-# install eris-db
-#
-ENV GO15VENDOREXPERIMENT 1
-
-# install glide for dependency management
-RUN	go install github.com/Masterminds/glide
-
-# set the repo and install erisdb
-ENV REPO $GOPATH/src/github.com/eris-ltd/eris-db
-WORKDIR $REPO
-COPY . $REPO
-RUN glide install
-RUN cd ./cmd/eris-db && go build -o /usr/local/bin/eris-db && cd ../..
-
-#-----------------------------------------------------------------------------
-# install mint-client tools
-
-# set the repo and install mint-client
-ENV REPO github.com/eris-ltd/mint-client
-ENV BRANCH master
-RUN mkdir -p $GOPATH/src/$REPO
-WORKDIR $GOPATH/src/$REPO
-RUN git clone --quiet https://$REPO . && \
-  git checkout --quiet $BRANCH && \
-  go install ./... && \
-  mv $GOPATH/bin/mint* /usr/local/bin && \
-  mv ./mint-client /usr/local/bin/
-
-#-----------------------------------------------------------------------------
-# cleanup
-
-RUN rm -f $GOPATH/bin/glide
-RUN rm -rf $GOPATH/src/* && \
-  unset REPO && \
-  unset COMMIT && \
-  unset BRANCH
-
-#-----------------------------------------------------------------------------
-# start script
-
-# install the wrapper/start script
-COPY DOCKER/start.sh /usr/local/bin/erisdb-wrapper
-
-#-----------------------------------------------------------------------------
-# chain manager scripts and default mint config
-
-ENV ECM_PATH /usr/local/lib/ecm
-RUN mkdir -p $ECM_PATH
-COPY DOCKER/chain_* $ECM_PATH/
-COPY DOCKER/config.toml $ECM_PATH/
-COPY DOCKER/version.sh $ECM_PATH/
-
-#-----------------------------------------------------------------------------
-# permission the directories
-RUN chown -R eris /usr/local/bin
-RUN chown -R eris $ECM_PATH
-
-#-----------------------------------------------------------------------------
-# root dir
-
-# persist data, set user
-WORKDIR /home/$USER/.eris
-VOLUME /home/$USER/.eris
-USER $USER
-RUN mkdir -p /home/$USER/.eris/chains/tendermint
-ENV CHAINROOT /home/$USER/.eris/chains/tendermint
-
-# run eris-db
-# ports: 1337:eris-db API; 46656:tendermint-peer; 46657:tendermint-rpc
-EXPOSE 1337
-EXPOSE 46656
-EXPOSE 46657
-ENTRYPOINT ["eris-db", "serve"]
-CMD["--work-dir $CHAINROOT"]
diff --git a/DOCKER/Dockerfile.armhf b/DOCKER/Dockerfile.armhf
deleted file mode 100644
index 9d8ea86ce10d9ef3617db7f3bd6a97ef521f3437..0000000000000000000000000000000000000000
--- a/DOCKER/Dockerfile.armhf
+++ /dev/null
@@ -1,88 +0,0 @@
-# Pull base image.
-FROM quay.io/eris/build:arm
-MAINTAINER Eris Industries <support@erisindustries.com>
-
-#-----------------------------------------------------------------------------
-# install tendermint
-
-# set the repo and install tendermint -- should track vendored commit
-ENV REPO_ALIAS github.com/tendermint/tendermint
-ENV REPO github.com/eris-ltd/tendermint
-#ENV COMMIT 4ee387d0770ed379e2d524f7077938517b38cd7c
-ENV COMMIT working
-# note, we want to lock in the same commit number
-#  as eris-db has vendored.
-RUN mkdir -p $GOPATH/src/$REPO
-WORKDIR $GOPATH/src/$REPO_ALIAS
-RUN git clone --quiet https://$REPO . && \
-  git checkout --quiet $COMMIT && \
-  go build -o /usr/local/bin/tendermint ./cmd/tendermint
-
-#-----------------------------------------------------------------------------
-# install mint-client tools
-
-# set the repo and install mint-client
-ENV REPO github.com/eris-ltd/mint-client
-ENV BRANCH master
-RUN mkdir -p $GOPATH/src/$REPO
-WORKDIR $GOPATH/src/$REPO
-RUN git clone --quiet https://$REPO . && \
-  git checkout --quiet $BRANCH && \
-  go install ./... && \
-  mv $GOPATH/bin/mint* /usr/local/bin && \
-  mv ./mint-client /usr/local/bin/
-
-#-----------------------------------------------------------------------------
-# install erisdb
-
-# set the repo and install erisdb
-ENV REPO $GOPATH/src/github.com/eris-ltd/eris-db
-COPY . $REPO
-WORKDIR $REPO
-RUN cd ./cmd/erisdb && go build -o /usr/local/bin/erisdb && cd ../..
-
-#-----------------------------------------------------------------------------
-# cleanup
-
-RUN rm -rf $GOPATH/src/* && \
-  unset REPO && \
-  unset REPO_ALIAS && \
-  unset COMMIT && \
-  unset BRANCH
-
-#-----------------------------------------------------------------------------
-# start script
-
-# install the wrapper/start script
-COPY DOCKER/start.sh /usr/local/bin/erisdb-wrapper
-
-#-----------------------------------------------------------------------------
-# chain manager scripts and default mint config
-
-ENV ECM_PATH /usr/local/lib/ecm
-RUN mkdir -p $ECM_PATH
-COPY DOCKER/chain_* $ECM_PATH/
-COPY DOCKER/config.toml $ECM_PATH/
-COPY DOCKER/version.sh $ECM_PATH/
-
-#-----------------------------------------------------------------------------
-# permission the directories
-RUN chown -R eris /usr/local/bin
-RUN chown -R eris $ECM_PATH
-
-#-----------------------------------------------------------------------------
-# root dir
-
-# persist data, set user
-VOLUME /home/$USER/.eris
-WORKDIR /home/$USER/.eris
-USER $USER
-RUN mkdir -p /home/$USER/.eris/chains/tendermint
-ENV TMROOT /home/$USER/.eris/chains/tendermint
-
-# run tendermint
-# ports: 1337:eris-db API; 46656:mint-peer; 46657:mint-rpc
-EXPOSE 1337
-EXPOSE 46656
-EXPOSE 46657
-CMD "erisdb-wrapper"
diff --git a/DOCKER/build.sh b/DOCKER/build.sh
deleted file mode 100755
index 0ab7e88a4d51b96f3278326484567cef5015c6cb..0000000000000000000000000000000000000000
--- a/DOCKER/build.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-if [ "$CIRCLE_BRANCH" ]
-then
-  repo=`pwd`
-else
-  base=github.com/eris-ltd/eris-db
-  repo=$GOPATH/src/$base
-fi
-branch=${CIRCLE_BRANCH:=master}
-
-release_min=$(cat $repo/version/version.go | tail -n 1 | cut -d \  -f 4 | tr -d '"')
-release_maj=$(echo $release_min | cut -d . -f 1-2)
-
-start=`pwd`
-image_base=quay.io/eris/erisdb
-
-cd $repo
-
-if [ "$branch" = "master" ]; then
-  docker build -t $image_base:latest -f DOCKER/Dockerfile .
-  docker tag $image_base:latest $image_base:$release_maj
-  docker tag $image_base:latest $image_base:$release_min
-else
-  docker build -t $image_base:$release_min -f DOCKER/Dockerfile .
-fi
-
-cd $start
\ No newline at end of file
diff --git a/DOCKER/chain_api.sh b/DOCKER/chain_api.sh
deleted file mode 100755
index 26a96ffd826d1569fa9c92831c92147a7a61cd6a..0000000000000000000000000000000000000000
--- a/DOCKER/chain_api.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#! /bin/bash
-
-echo "Running chain $CHAIN_ID (via ErisDB API)"
-erisdb $CHAIN_DIR
diff --git a/DOCKER/chain_install.sh b/DOCKER/chain_install.sh
deleted file mode 100755
index 55aaabba22f39692a21bd9f5ddc0bef485b2fb7b..0000000000000000000000000000000000000000
--- a/DOCKER/chain_install.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#! /bin/bash
-
-#-----------------------------------------------------------------------
-# get genesis, seed, copy config
-
-export MINTX_NODE_ADDR=$NODE_ADDR
-
-# get genesis if not already
-if [ ! -e "${CHAIN_DIR}/genesis.json" ]; then
-	# etcb chain (given by $NODE_ADDR)
-	REFS_CHAIN_ID=$(mintinfo genesis chain_id)
-	ifExit "Error fetching default chain id from $NODE_ADDR"
-	REFS_CHAIN_ID=$(echo "$REFS_CHAIN_ID" | tr -d '"') # remove surrounding quotes
-
-	echo "etcb chain: $REFS_CHAIN_ID"
-
-	# get the genesis.json for a refs chain from the /genesis rpc endpoint
-	# for a different chain, use etcb (ie namereg on the ref chain)
-	if [ "$CHAIN_ID" = "$REFS_CHAIN_ID" ] ; then
-		# grab genesis.json 
-		mintinfo genesis > "${CHAIN_DIR}/genesis.json"
-		ifExit "Error fetching genesis.json from $NODE_ADDR"
-	else 
-		# fetch genesis from etcb
-		GENESIS=$(mintinfo names "${CHAIN_ID}/genesis" data)
-		ifExit "Error fetching genesis.json for $CHAIN_ID: $GENESIS"
-
-		echo $GENESIS > "${CHAIN_DIR}/genesis.json"
-
-		SEED_NODE=$(mintinfo names "${CHAIN_ID}/seeds" data)
-		ifExit "Error grabbing seed node from $NODE_ADDR for $CHAIN_ID"
-	fi
-fi
-
-# copy in config if not already
-if [ ! -e "${CHAIN_DIR}/config.toml" ]; then
-	echo "laying default config..."
-	mintconfig > $CHAIN_DIR/config.toml
-	ifExit "Error creating config"
-
-	if [ "$SEED_NODE" = "" ]; then
-		SEED_NODE=$P2P_ADDR
-	fi
-
-	if [ "$HOST_NAME" = "" ]; then
-		HOST_NAME=mint_user
-	fi
-fi
-
-# set seed node and host name
-if [ "$SEED_NODE" != "" ]; then
-	echo "Seed node: $SEED_NODE"
-	# NOTE the NODE_ADDR must not have any slashes (no http://)
-	sed -i "s/^\(seeds\s*=\s*\).*\$/\1\"$SEED_NODE\"/" "${CHAIN_DIR}/config.toml"
-	ifExit "Error setting seed node in config.toml"
-fi
-
-if [ "$HOST_NAME" != "" ]; then
-	echo "Host name: $HOST_NAME"
-	sed -i "s/^\(moniker\s*=\s*\).*\$/\1\"$HOST_NAME\"/" "${CHAIN_DIR}/config.toml"
-	ifExit "Error setting host name in config.toml"
-fi
-
-#-----------------------------------------------------------------------
-
-# would be nice if we could stop syncing once we're caught up ...
-echo "Running mint in ${CHAIN_DIR}"
-tendermint node --fast_sync 
-ifExit "Error running tendermint!"
diff --git a/DOCKER/chain_new.sh b/DOCKER/chain_new.sh
deleted file mode 100755
index caa327efeb4adaa7286a9e6ae3c95370c733914a..0000000000000000000000000000000000000000
--- a/DOCKER/chain_new.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#! /bin/bash
-
-echo "your new chain, kind marmot: $CHAIN_ID"
-
-# lay the genesis
-# if it exists, just overwrite the chain id
-if [ ! -f $CHAIN_DIR/genesis.json ]; then
-	if [ "$CSV" = "" ]; then
-		mintgen random --dir="$CHAIN_DIR" 1 $CHAIN_ID
-		ifExit "Error creating random genesis file"
-	else
-		mintgen known --csv="$CSV" $CHAIN_ID > $CHAIN_DIR/genesis.json
-		ifExit "Error creating genesis file from csv"
-	fi
-else
-	# apparently just outputing to $CHAIN_DIR/genesis.json doesn't work so we copy
-	cat $CHAIN_DIR/genesis.json | jq .chain_id=\"$CHAIN_ID\" > genesis.json
-	cp genesis.json $CHAIN_DIR/genesis.json
-fi
-
-
-# if no config was given, lay one with the given options
-if [ ! -f $CHAIN_DIR/config.toml ]; then
-	echo "running mintconfig $CONFIG_OPTS"
-	mintconfig $CONFIG_OPTS > $CHAIN_DIR/config.toml
-else
-	echo "found config file:"
-	cat $CHAIN_DIR/config.toml
-fi
-
-# run the node.
-# TODO: maybe bring back this stopping option if we think its useful
-# tendermint node & last_pid=$! && sleep 1 && kill -KILL $last_pid
-if [ $ERISDB_API ]; then
-	echo "Running chain $CHAIN_ID (via ErisDB API)"
-	erisdb $CHAIN_DIR
-	ifExit "Error starting erisdb"
-else
-	echo Running chain $CHAIN_ID
-	tendermint node
-	ifExit "Error starting tendermint"
-fi
diff --git a/DOCKER/chain_register.sh b/DOCKER/chain_register.sh
deleted file mode 100755
index cbd2beecca00d9085617e63b6cbc5f779afa861e..0000000000000000000000000000000000000000
--- a/DOCKER/chain_register.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#! /bin/bash
-
-echo "registering $CHAIN_ID in the grand registry of marmot mayhem and marmalade"
-
-# lay the genesis
-# if it exists, just overwrite the chain id
-if [ ! -f "$CHAIN_DIR/genesis.json" ]; then
-	"Could not find genesis file in $CHAIN_DIR. Did you run `eris chains new $CHAIN_ID`?"
-	exit 1
-fi
-
-
-echo "or less dramatically, registering $CHAIN_ID with the $ETCB_CHAIN_ID chain at $MINTX_NODE_ADDR from address $PUBKEY"
-
-echo "NAME ${CHAIN_ID}_genesis"
-cat $CHAIN_DIR/genesis.json
-
-# register the genesis
-RES=`mintx name --pubkey=$PUBKEY --name="${CHAIN_ID}/genesis" --data-file=$CHAIN_DIR/genesis.json --amt=10000 --fee=0 --sign --broadcast --chainID=$ETCB_CHAIN_ID --wait`
-ifExit "$RES" "Error registering genesis with etcb_testnet"
-echo $RES | grep "Incorrect"
-if0Exit "$RES" "Error registering genesis with etcb_testnet"
-echo $RES
-
-echo "successfully registered genesis on etcb chain"
-
-# register the seed/s
-RES=`mintx name --pubkey=$PUBKEY --name="${CHAIN_ID}/seeds" --data="$NEW_P2P_SEEDS" --amt=10000 --fee=0 --sign --broadcast --chainID=$ETCB_CHAIN_ID --wait`
-ifExit "$RES" "Error registering seeds with etcb_testnet"
-echo $RES | grep "Incorrect"
-if0Exit "$RES" "Error registering seeds with etcb_testnet"
-echo $RES
-
-echo "successfully registered seed on etcb chain"
diff --git a/DOCKER/chain_run.sh b/DOCKER/chain_run.sh
deleted file mode 100755
index 7a14e574396e6e091f6c345d8362a97cbb046d77..0000000000000000000000000000000000000000
--- a/DOCKER/chain_run.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#! /bin/bash
-
-if [ $ERISDB_API ]; then
-	echo "Running chain $CHAIN_ID (via ErisDB API)"
-	erisdb $CHAIN_DIR
-	ifExit "Error starting erisdb"
-else
-	echo Running chain $CHAIN_ID
-	tendermint node
-	ifExit "Error starting tendermint"
-fi
diff --git a/DOCKER/config.toml b/DOCKER/config.toml
deleted file mode 100644
index b6dadf564ad4587dc85af7da87ef2506fc7f0e75..0000000000000000000000000000000000000000
--- a/DOCKER/config.toml
+++ /dev/null
@@ -1,10 +0,0 @@
-# This is a TOML config file.
-# For more information, see https://github.com/toml-lang/toml
-
-moniker = "eris_chains"
-node_laddr = "0.0.0.0:46656"
-seeds = ""
-fast_sync = false
-db_backend = "leveldb"
-log_level = "debug"
-rpc_laddr = "0.0.0.0:46657"
diff --git a/DOCKER/start.sh b/DOCKER/start.sh
deleted file mode 100755
index c15b1f3ce15079323eb6bd0c3bfb50d91a639949..0000000000000000000000000000000000000000
--- a/DOCKER/start.sh
+++ /dev/null
@@ -1,140 +0,0 @@
-#! /bin/bash
-
-ifExit(){
-	if [[ $? != 0 ]]; then
-		echo "ifExit"
-		echo "$1"
-		for var in "$@"
-		do
-			    echo "$var"
-		done
-		exit 1
-	fi
-}
-
-if0Exit(){
-	if [[ $? == 0 ]]; then
-		echo "if0Exit"
-		echo "$1"
-		for var in "$@"
-		do
-			    echo "$var"
-		done
-		exit 1
-	fi
-}
-
-
-export -f ifExit
-export -f if0Exit
-
-#------------------------------------------------
-# set and export directories
-
-if [ "$CHAIN_ID" = "" ]; then
-	echo "ecm requires CHAIN_ID be set"
-	exit 1
-fi
-
-# TODO: deal with chain numbers
-# and eg. $CONTAINER_NAME
-CHAIN_DIR="/home/$USER/.eris/chains/$CHAIN_ID"
-
-# set the tendermint directory
-TMROOT="$CHAIN_DIR"/tendermint
-
-if [ ! -d "$CHAIN_DIR" ]; then
-	mkdir -p $CHAIN_DIR
-	ifExit "Error making root dir $CHAIN_DIR"
-fi
-
-# our root chain
-if [ ! $ROOT_CHAIN_ID ]; then
-	ROOT_CHAIN_ID=etcb_testnet
-fi
-if [ ! $NODE_ADDR ]; then
-	NODE_ADDR=interblock.io:46657
-fi
-if [ ! $P2P_ADDR ]; then
-	P2P_ADDR=interblock.io:46656
-fi
-
-# where the etcb client scripts are
-if [ ! $ECM_PATH ]; then
-	ECM_PATH=.
-fi
-
-#------------------------------------------------
-# dump key files if they are in env vars
-
-if [ -z "$KEY" ]
-then
-  echo "No Key Given"
-else
-  echo "Key Given. Writing priv_validator.json"
-	echo "$KEY" >> $CHAIN_DIR/priv_validator.json
-fi
-
-if [ -z "$GENESIS" ]
-then
-  echo "No Genesis Given"
-else
-  echo "Genesis Given. Writing genesis.json"
-	echo "$GENESIS" > $CHAIN_DIR/genesis.json
-fi
-
-if [ -z "$GENESIS_CSV" ]
-then
-  echo "No Genesis_CSV Given"
-else
-  echo "Genesis_CSV Given. Writing genesis.csv"
-  echo "$GENESIS_CSV" > $CHAIN_DIR/genesis.csv
-fi
-
-if [ -z "$CHAIN_CONFIG" ]
-then
-  echo "No Chain Config Given"
-else
-  echo "Chain Config Given. Writing config.toml"
-	echo "$CHAIN_CONFIG" > $CHAIN_DIR/config.toml
-fi
-
-if [ -z "$SERVER_CONFIG" ]
-then
-  echo "No Server Config Given"
-else
-  echo "Server Config Given. Writing server_conf.toml"
-	echo "$SERVER_CONFIG" > $CHAIN_DIR/server_conf.toml
-fi
-
-#------------------------------------------------
-# export important vars
-
-export TMROOT
-export CHAIN_DIR
-export NODE_ADDR
-export P2P_ADDR
-export ECM_PATH  # set by Dockerfile
-
-export MINTX_NODE_ADDR=$NODE_ADDR
-export MINTX_SIGN_ADDR=keys:4767
-
-# print the version
-bash $ECM_PATH/version.sh
-
-#-----------------------------------------------------------------------
-# either we are fetching a chain for the first time,
-# creating one from scratch, or running one we already have
-CMD=$1
-case $CMD in
-"install" ) $ECM_PATH/chain_install.sh
-	;;
-"new" ) $ECM_PATH/chain_new.sh
-	;;
-"run" ) $ECM_PATH/chain_run.sh
-	;;
-"register" ) $ECM_PATH/chain_register.sh
-	;;
-*)	echo "Enter a command for starting the chain (new, install, run, register)"
-	;;
-esac
diff --git a/DOCKER/version.sh b/DOCKER/version.sh
deleted file mode 100644
index 7acc21f4d1a94c9fd1199565f01530a720ee2e08..0000000000000000000000000000000000000000
--- a/DOCKER/version.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-# json break
-echo "ecm version 0.12.0"
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..96e97df80736fc128b9457564da684f10db22f26
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,61 @@
+# Pull base image.
+FROM quay.io/eris/build
+MAINTAINER Eris Industries <support@erisindustries.com>
+
+# Expose ports for 1337:eris-db API; 46656:tendermint-peer; 46657:tendermint-rpc
+EXPOSE 1337
+EXPOSE 46656
+EXPOSE 46657
+
+#-----------------------------------------------------------------------------
+# install eris-db
+
+# set the source code path and copy the repository in
+ENV ERIS_DB_SRC_PATH $GOPATH/src/github.com/eris-ltd/eris-db
+COPY . $ERIS_DB_SRC_PATH
+
+# fetch and install eris-db and its dependencies
+	# install glide for dependency management
+RUN go get github.com/Masterminds/glide \
+	# build the main eris-db target
+	&& cd $ERIS_DB_SRC_PATH/cmd/eris-db \
+	&& go build \
+	&& cp eris-db $INSTALL_BASE/eris-db \
+	# copy the start script for eris-db \
+	&& cp $ERIS_DB_SRC_PATH/bin/start_eris_db $INSTALL_BASE/erisdb-wrapper \
+	&& chmod 755 $INSTALL_BASE/erisdb-wrapper
+
+#-----------------------------------------------------------------------------
+# install mint-client [to be deprecated]
+
+ENV ERIS_DB_MINT_REPO github.com/eris-ltd/mint-client
+ENV ERIS_DB_MINT_SRC_PATH $GOPATH/src/$ERIS_DB_MINT_REPO
+
+WORKDIR $ERIS_DB_MINT_SRC_PATH
+
+RUN git clone --quiet https://$ERIS_DB_MINT_REPO . \
+	&& git checkout --quiet master \
+	&& go build -o $INSTALL_BASE/mintx ./mintx \
+	&& go build -o $INSTALL_BASE/mintconfig ./mintconfig \
+	&& go build -o $INSTALL_BASE/mintkey ./mintkey
+	# restrict build targets for re-evaluation
+	# && go build -o $INSTALL_BASE/mintdump ./mintdump \
+	# && go build -o $INSTALL_BASE/mintperms ./mintperms \
+	# && go build -o $INSTALL_BASE/mintunsafe ./mintunsafe \
+	# && go build -o $INSTALL_BASE/mintgen ./mintgen \
+	# && go build -o $INSTALL_BASE/mintsync ./mintsync
+
+#-----------------------------------------------------------------------------
+# clean up [build container needs to be separated from shipped container]
+
+RUN unset ERIS_DB_SRC_PATH \
+	&& unset ERIS_DB_MINT_SRC_PATH \
+	&& apk del --purge go git musl-dev \
+	&& rm -rf $GOPATH
+
+# mount the data container on the eris directory
+VOLUME $ERIS
+
+WORKDIR $ERIS
+
+CMD "erisdb-wrapper"
\ No newline at end of file
diff --git a/Dockerfile.armhf b/Dockerfile.armhf
new file mode 100644
index 0000000000000000000000000000000000000000..1663f53ac126503e3b68aaad7f611f69e85f1ef1
--- /dev/null
+++ b/Dockerfile.armhf
@@ -0,0 +1,61 @@
+# Pull base image.
+FROM quay.io/eris/build:arm
+MAINTAINER Eris Industries <support@erisindustries.com>
+
+# Expose ports for 1337:eris-db API; 46656:tendermint-peer; 46657:tendermint-rpc
+EXPOSE 1337
+EXPOSE 46656
+EXPOSE 46657
+
+#-----------------------------------------------------------------------------
+# install eris-db
+
+# set the source code path and copy the repository in
+ENV ERIS_DB_SRC_PATH $GOPATH/src/github.com/eris-ltd/eris-db
+COPY . $ERIS_DB_SRC_PATH
+
+# fetch and install eris-db and its dependencies
+	# install glide for dependency management
+RUN go get github.com/Masterminds/glide \
+	# build the main eris-db target
+	&& cd $ERIS_DB_SRC_PATH/cmd/eris-db \
+	&& go build \
+	&& cp eris-db $INSTALL_BASE/eris-db \
+	# copy the start script for eris-db \
+	&& cp $ERIS_DB_SRC_PATH/bin/start_eris_db $INSTALL_BASE/erisdb-wrapper \
+	&& chmod 755 $INSTALL_BASE/erisdb-wrapper
+
+#-----------------------------------------------------------------------------
+# install mint-client [to be deprecated]
+
+ENV ERIS_DB_MINT_REPO github.com/eris-ltd/mint-client
+ENV ERIS_DB_MINT_SRC_PATH $GOPATH/src/$ERIS_DB_MINT_REPO
+
+WORKDIR $ERIS_DB_MINT_SRC_PATH
+
+RUN git clone --quiet https://$ERIS_DB_MINT_REPO . \
+	&& git checkout --quiet master \
+	&& go build -o $INSTALL_BASE/mintx ./mintx \
+	&& go build -o $INSTALL_BASE/mintconfig ./mintconfig \
+	&& go build -o $INSTALL_BASE/mintkey ./mintkey
+	# restrict build targets for re-evaluation
+	# && go build -o $INSTALL_BASE/mintdump ./mintdump \
+	# && go build -o $INSTALL_BASE/mintperms ./mintperms \
+	# && go build -o $INSTALL_BASE/mintunsafe ./mintunsafe \
+	# && go build -o $INSTALL_BASE/mintgen ./mintgen \
+	# && go build -o $INSTALL_BASE/mintsync ./mintsync
+
+#-----------------------------------------------------------------------------
+# clean up [build container needs to be separated from shipped container]
+
+ RUN unset ERIS_DB_SRC_PATH \
+ 	&& unset ERIS_DB_MINT_SRC_PATH \
+ 	&& apk del --purge go git musl-dev \
+ 	&& rm -rf $GOPATH
+
+# mount the data container on the eris directory
+VOLUME $ERIS
+
+WORKDIR $ERIS
+
+ENTRYPOINT ["erisdb-wrapper"]
\ No newline at end of file
diff --git a/bin/start_eris_db b/bin/start_eris_db
new file mode 100644
index 0000000000000000000000000000000000000000..fd8cc17c4e3faf0cf5f2982db6f1cab8e6f7351f
--- /dev/null
+++ b/bin/start_eris_db
@@ -0,0 +1,87 @@
+#! /bin/bash
+
+ifExit(){
+	if [[ $? != 0 ]]; then
+		echo "ifExit"
+		echo "$1"
+		for var in "$@"
+		do
+			    echo "$var"
+		done
+		exit 1
+	fi
+}
+
+if0Exit(){
+	if [[ $? == 0 ]]; then
+		echo "if0Exit"
+		echo "$1"
+		for var in "$@"
+		do
+			    echo "$var"
+		done
+		exit 1
+	fi
+}
+
+
+export -f ifExit
+export -f if0Exit
+
+#-----------------------------------------------------------------------
+# set and export directories
+
+if [ "$CHAIN_ID" = "" ]; then
+	echo "Eris-db container requires environment variable CHAIN_ID to be set. Please run docker container with \`-e CHAIN_ID=\"<chainId>\"\`"
+	exit 1
+fi
+
+if [ "$ERIS_DB_WORKDIR" = "" ]; then
+	ERIS_DB_WORKDIR="$ERIS/chains/$CHAIN_ID"
+fi
+
+if [ ! -d "$ERIS_DB_WORKDIR" ]; then
+	mkdir -p $ERIS_DB_WORKDIR
+	ifExit "Error making working directory $ERIS_DB_WORKDIR"
+fi
+
+export ERIS_DB_WORKDIR
+export ERIS_DB_DATADIR=$ERIS_DB_WORKDIR/data
+
+echo "env CHAIN_ID is set to $CHAIN_ID"
+echo "env ERIS_DB_WORKDIR is set to $ERIS_DB_WORKDIR"
+echo "env ERIS_DB_DATADIR is set to $ERIS_DB_DATADIR"
+
+#-----------------------------------------------------------------------
+# [2016-07-13 ben] we preserve the existing contact commands "new", "run",
+# but this functionality is absorbed in eris-db, eris-cm, eris-cli
+# and the mapping is preserved here to catch deployed use-cases.
+# NOTE: eris-db serve picks up following environment variables which are relevant to interaction with eris-cli
+#  - CHAIN_ID, set by eris-cli
+#  - ERIS_DB_WORKDIR, set in this script
+#  - ERIS_DB_DATADIR, set in this script
+#  - ERISDB_API (to be deprecated in favor of explicit --disable-rpc)
+#  - CONFIG_OPTS, for arbitrary flags to be passed to `eris-db serve`
+
+CMD=$1
+case $CMD in
+"install" ) 
+	echo "Install is under review to be deprecated; please contact support@erisindustries.com if you encounter this error."
+	exit 1
+	;;
+"new" ) echo "passed new"
+	;;
+"run" ) echo "passed run"
+	;;
+"register" ) 
+	echo "Register is under review to be deprecated; please contact support@erisindustries.com if you encounter this error."
+	exit 1
+	;;
+# we append $@ to eris-db to expose the same flags on the docker container,
+# eg `docker run -it quay.io/eris/erisdb --chain-id=<chain_id>`, will overwrite $CHAIN_ID
+*) echo "no known command given: $CMD"
+	;;
+esac
+
+echo "running eris-db serve --debug $CONFIG_OPTS $@"
+eris-db serve --debug $CONFIG_OPTS $@
\ No newline at end of file
diff --git a/circle.yml b/circle.yml
index 27a653c42aac4752eb6ec0d1eda856486dac2eef..aad6114ffdb07c47d2617aae5afce15401506655 100644
--- a/circle.yml
+++ b/circle.yml
@@ -47,11 +47,11 @@ deployment:
   master:
     branch: master
     commands:
-      - DOCKER/build.sh
+      - tests/build_tool.sh
       - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS quay.io
       - docker push quay.io/eris/erisdb
   develop:
     branch: develop
     commands:
-      - DOCKER/build.sh
+      - tests/build_tool.sh
       - docker push quay.io/eris/erisdb
diff --git a/cmd/eris-db.go b/cmd/eris-db.go
index f67501ecc8acb7b116bcdb60e24e0190b0f3df84..369623252fae2011232472db1add45e6dde5ae6a 100644
--- a/cmd/eris-db.go
+++ b/cmd/eris-db.go
@@ -92,7 +92,7 @@ func defaultDebug() bool {
 	return setDefaultBool("ERIS_DB_DEBUG", false)
 }
 
-// setDefaultBool returns the provided default value if the environment variab;e
+// setDefaultBool returns the provided default value if the environment variable
 // is not set or not parsable as a bool.
 func setDefaultBool(environmentVariable string, defaultValue bool) bool {
 	value := os.Getenv(environmentVariable)
diff --git a/cmd/serve.go b/cmd/serve.go
index 57e3e9ca4a891bc4f33bc01ead8cb110a153f9bf..61fdda0e4b85ea3aa2f8a55fccc4674fb5a86d6c 100644
--- a/cmd/serve.go
+++ b/cmd/serve.go
@@ -18,7 +18,9 @@ package commands
 
 import (
 	"os"
+	"os/signal"
 	"path"
+	"syscall"
 
 	cobra "github.com/spf13/cobra"
 
@@ -35,7 +37,8 @@ var ServeCmd = &cobra.Command{
 The Eris-DB node is modularly configured for the consensus engine and application
 manager.  The client API can be disabled.`,
 	Example: `$ eris-db serve -- will start the Eris-DB node based on the configuration file "server_config.toml" in the current working directory
-$ eris-db serve --work-dir <path-to-working-directory> -- will start the Eris-DB node based on the configuration file "server_config.toml" in the provided working directory`,
+$ eris-db serve --work-dir <path-to-working-directory> -- will start the Eris-DB node based on the configuration file "server_config.toml" in the provided working directory
+$ eris-db serve --chain-id <CHAIN_ID> -- will overrule the configuration entry assert_chain_id`,
 	PreRun: func(cmd *cobra.Command, args []string) {
 		// if WorkDir was not set by a flag or by $ERIS_DB_WORKDIR
 		// NOTE [ben]: we can consider an `Explicit` flag that eliminates
@@ -45,7 +48,6 @@ $ eris-db serve --work-dir <path-to-working-directory> -- will start the Eris-DB
 				log.Fatalf("No directory provided and failed to get current working directory: %v", err)
 				os.Exit(1)
 			} else {
-
 				do.WorkDir = currentDirectory
 			}
 		}
@@ -62,10 +64,14 @@ func buildServeCommand() {
 }
 
 func addServeFlags() {
+	ServeCmd.PersistentFlags().StringVarP(&do.ChainId, "chain-id", "c",
+		defaultChainId(), "specify the chain id to use for assertion against the genesis file or the existing state. If omitted, and no id is set in $CHAIN_ID, then assert_chain_id is used from the configuration file.")
 	ServeCmd.PersistentFlags().StringVarP(&do.WorkDir, "work-dir", "w",
 		defaultWorkDir(), "specify the working directory for the chain to run.  If omitted, and no path set in $ERIS_DB_WORKDIR, the current working directory is taken.")
-	ServeCmd.PersistentFlags().StringVarP(&do.DataDir, "data-dir", "a",
+	ServeCmd.PersistentFlags().StringVarP(&do.DataDir, "data-dir", "",
 		defaultDataDir(), "specify the data directory.  If omitted and not set in $ERIS_DB_DATADIR, <working_directory>/data is taken.")
+	ServeCmd.PersistentFlags().BoolVarP(&do.DisableRpc, "disable-rpc", "",
+		defaultDisableRpc(), "indicate for the RPC to be disabled. If omitted the RPC is enabled by default, unless (deprecated) $ERISDB_API is set to false.")
 }
 
 //------------------------------------------------------------------------------
@@ -77,17 +83,19 @@ func addServeFlags() {
 func Serve(cmd *cobra.Command, args []string) {
 	// load configuration from a single location to avoid a wrong configuration
 	// file is loaded.
-	if err := do.ReadConfig(do.WorkDir, "server_config", "toml"); err != nil {
+	if err := do.ReadConfig(do.WorkDir, "config", "toml"); err != nil {
 		log.WithFields(log.Fields{
 			"directory": do.WorkDir,
-			"file":      "server_config.toml",
+			"file":      "config.toml",
 		}).Fatalf("Fatal error reading configuration")
 		os.Exit(1)
 	}
-	// load chain_id for assertion
-	if do.ChainId = do.Config.GetString("chain.assert_chain_id"); do.ChainId == "" {
-		log.Fatalf("Failed to read non-empty string for ChainId from config.")
-		os.Exit(1)
+	// if do.ChainId is not yet set, load chain_id for assertion from configuration file
+	if do.ChainId == "" {
+		if do.ChainId = do.Config.GetString("chain.assert_chain_id"); do.ChainId == "" {
+			log.Fatalf("Failed to read non-empty string for ChainId from config.")
+			os.Exit(1)
+		}
 	}
 	// load the genesis file path
 	do.GenesisFile = path.Join(do.WorkDir,
@@ -129,33 +137,53 @@ func Serve(cmd *cobra.Command, args []string) {
 		log.Fatalf("Failed to load core: %s", err)
 	}
 
-	serverConfig, err := core.LoadServerConfig(do)
-	if err != nil {
-		log.Fatalf("Failed to load server configuration: %s.", err)
-		os.Exit(1)
-	}
-	serverProcess, err := newCore.NewGatewayV0(serverConfig)
-	if err != nil {
-		log.Fatalf("Failed to load servers: %s.", err)
-		os.Exit(1)
-	}
-	err = serverProcess.Start()
-	if err != nil {
-		log.Fatalf("Failed to start servers: %s.", err)
-		os.Exit(1)
-	}
-	_, err = newCore.NewGatewayTendermint(serverConfig)
-	if err != nil {
-		log.Fatalf("Failed to start Tendermint gateway")
+	if !do.DisableRpc {
+		serverConfig, err := core.LoadServerConfig(do)
+		if err != nil {
+			log.Fatalf("Failed to load server configuration: %s.", err)
+			os.Exit(1)
+		}
+		serverProcess, err := newCore.NewGatewayV0(serverConfig)
+		if err != nil {
+			log.Fatalf("Failed to load servers: %s.", err)
+			os.Exit(1)
+		}
+		err = serverProcess.Start()
+		if err != nil {
+			log.Fatalf("Failed to start servers: %s.", err)
+			os.Exit(1)
+		}
+		_, err = newCore.NewGatewayTendermint(serverConfig)
+		if err != nil {
+			log.Fatalf("Failed to start Tendermint gateway")
+		}
+		<-serverProcess.StopEventChannel()
+	} else {
+		signals := make(chan os.Signal, 1)
+		done := make(chan bool, 1)
+		signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
+		go func() {
+			signal := <-signals
+			// TODO: [ben] clean up core; in a manner consistent with enabled rpc
+			log.Fatalf("Received %s signal. Marmots out.", signal)
+			done <- true
+		}()
+		<-done
 	}
-	<-serverProcess.StopEventChannel()
 }
 
 //------------------------------------------------------------------------------
 // Defaults
 
+func defaultChainId() string {
+	// if CHAIN_ID environment variable is not set, keep do.ChainId empty to read
+	// assert_chain_id from configuration file
+	return setDefaultString("CHAIN_ID", "")
+}
+
 func defaultWorkDir() string {
 	// if ERIS_DB_WORKDIR environment variable is not set, keep do.WorkDir empty
+	// as do.WorkDir is set by the PreRun
 	return setDefaultString("ERIS_DB_WORKDIR", "")
 }
 
@@ -164,3 +192,11 @@ func defaultDataDir() string {
 	// wait setting a default value, and initialise the data directory from serve()
 	return setDefaultString("ERIS_DB_DATADIR", "")
 }
+
+func defaultDisableRpc() bool {
+	// we currently observe environment variable ERISDB_API (true = enable)
+	// and default to enabling the RPC if it is not set.
+	// TODO: [ben] deprecate ERISDB_API across the stack for 0.12.1, and only disable
+	// the rpc through a command line flag --disable-rpc
+	return !setDefaultBool("ERISDB_API", true)
+}
diff --git a/definitions/do.go b/definitions/do.go
index ed5c5a96b7b8c34134fc953cb458f52fb1f03342..0ad4e10880c0f21c72338f1a5ca466a966231e30 100644
--- a/definitions/do.go
+++ b/definitions/do.go
@@ -47,6 +47,7 @@ type Do struct {
 	// AccountTypes []string
 	// Zip          bool
 	// Tarball      bool
+	DisableRpc bool
 	Config *viper.Viper
 	// Accounts     []*Account
 	// Result       string
@@ -60,6 +61,7 @@ func NowDo() *Do {
 	do.DataDir = ""
 	do.ChainId = ""
 	do.GenesisFile = ""
+	do.DisableRpc = false
 	do.Config = viper.New()
 	return do
 }
diff --git a/manager/eris-mint/pipe.go b/manager/eris-mint/pipe.go
index 02c06af91bf94046a928f4d611e0c3971c7e49c7..5741617145937691d8b0579c2e561703d7e0cb47 100644
--- a/manager/eris-mint/pipe.go
+++ b/manager/eris-mint/pipe.go
@@ -159,8 +159,12 @@ func startState(dataDir, backend, genesisFile, chainId string) (*state.State,
 		}
 		// assert loaded genesis doc has the same chainId as the provided chainId
 		if genesisDoc.ChainID != chainId {
-			return nil, nil, fmt.Errorf("ChainId (%s) loaded from genesis document in existing database does not match configuration chainId (%s).",
-				genesisDoc.ChainID, chainId)
+			log.WithFields(log.Fields{
+				"chainId from loaded genesis": genesisDoc.ChainID,
+				"chainId from configuration":  chainId,
+			}).Warn("Conflicting chainIds")
+			// return nil, nil, fmt.Errorf("ChainId (%s) loaded from genesis document in existing database does not match configuration chainId (%s).",
+			// genesisDoc.ChainID, chainId)
 		}
 	}
 
diff --git a/tests/build_tool.sh b/tests/build_tool.sh
new file mode 100755
index 0000000000000000000000000000000000000000..60d97d026905c914c96e3e8c10e7d0d1f6fd2b6a
--- /dev/null
+++ b/tests/build_tool.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+# ----------------------------------------------------------
+# PURPOSE
+
+# This is the build script for eris-db. It will build the
+# tool into docker containers in a reliable and predicatable
+# manner.
+
+# ----------------------------------------------------------
+# REQUIREMENTS
+
+# docker installed locally
+
+# ----------------------------------------------------------
+# USAGE
+
+# build_tool.sh
+
+# ----------------------------------------------------------
+# Set defaults
+set -e
+start=`pwd`
+if [ "$CIRCLE_BRANCH" ]
+then
+  repo=`pwd`
+else
+  base=github.com/eris-ltd/eris-db
+  repo=$GOPATH/src/$base
+fi
+branch=${CIRCLE_BRANCH:=master}
+branch=${branch/-/_}
+
+release_min=$(cat $repo/version/version.go | tail -n 1 | cut -d \  -f 4 | tr -d '"')
+release_maj=$(echo $release_min | cut -d . -f 1-2)
+
+image_base=quay.io/eris/erisdb
+
+cd $repo
+
+if [[ "$branch" = "master" ]]
+then
+  docker build -t $image_base:latest $repo
+  docker tag -f $image_base:latest $image_base:$release_maj
+  docker tag -f $image_base:latest $image_base:$release_min
+else
+  docker build -t $image_base:$release_min $repo
+fi
+test_exit=$?
+cd $start
+exit $test_exit
\ No newline at end of file