diff --git a/.gitignore b/.gitignore
index 5a0e84e16d4892f4743ee5a47dbd0436634290b5..d9a84d8a68bb72dcd95e39d300b55eddef2c7e98 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,11 +5,9 @@ cache
 bin/env
 network/node
 network/bootnode
-network/contracts/*
 network/*.pid
 test2network*/node
 test2network*/bootnode
-test2network*/contracts/*
 test2network/*.pid
 node_modules
 src/*/*.bin
diff --git a/bin/bfageth b/bin/bfageth
new file mode 100755
index 0000000000000000000000000000000000000000..17ba3df8dabe334619e97cbdf38e2bfebe07e508
--- /dev/null
+++ b/bin/bfageth
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+if [ -z "${BFAHOME}" ]; then echo "\$BFAHOME not set. Did you source bfa/bin/env ?" >&2; exit 1; fi
+source ${BFAHOME}/bin/libbfa.sh || exit 1
+
+exec geth --datadir ${BFANODEDIR} --networkid ${BFANETWORKID} "$@"
diff --git a/network/contracts/0xc3cf96af51d3c41dfbe428de75a8e5597d4d7a7b/abi b/network/contracts/0xc3cf96af51d3c41dfbe428de75a8e5597d4d7a7b/abi
new file mode 100644
index 0000000000000000000000000000000000000000..63249fb87ee8648ea0bdf30fa553d27b7b1be4f7
--- /dev/null
+++ b/network/contracts/0xc3cf96af51d3c41dfbe428de75a8e5597d4d7a7b/abi
@@ -0,0 +1,328 @@
+[
+  {
+    "name": "proofOfControlWeiAmountChanged",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": false, "name": "amount", "type": "uint256" }
+    ]
+  },
+  {
+    "name": "limitChanged",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": true, "name": "distr", "type": "address" },
+      { "indexed": true, "name": "ben", "type": "address" },
+      { "indexed": false, "name": "newLimit", "type": "uint256" }
+    ]
+  },
+  {
+    "name": "suitorApproved",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": true, "name": "suitor", "type": "address" }
+    ]
+  },
+  {
+    "name": "suitorNotApproved",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": true, "name": "suitor", "type": "address" }
+    ]
+  },
+  {
+    "name": "kickedDistributor",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": true, "name": "kicked", "type": "address" }
+    ]
+  },
+  {
+    "name": "suitorAdded",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": true, "name": "suitor", "type": "address" },
+      { "indexed": true, "name": "distr", "type": "address" }
+    ]
+  },
+  {
+    "name": "addedBeneficiary",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": true, "name": "distr", "type": "address" },
+      { "indexed": true, "name": "added", "type": "address" },
+      { "indexed": false, "name": "limit", "type": "uint256" }
+    ]
+  },
+  {
+    "name": "kickedBeneficiary",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": true, "name": "distr", "type": "address" },
+      { "indexed": true, "name": "kicked", "type": "address" }
+    ]
+  },
+  {
+    "name": "addedDistributor",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": true, "name": "added", "type": "address" },
+      { "indexed": false, "name": "top", "type": "uint256" }
+    ]
+  },
+  {
+    "name": "replenished",
+    "type": "event",
+    "anonymous": false,
+    "inputs": [
+      { "indexed": true, "name": "distr", "type": "address" },
+      { "indexed": false, "name": "amount", "type": "uint256" }
+    ]
+  },
+  {
+    "name": "addBeneficiary",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "acc", "type": "address" },
+      { "name": "limit", "type": "uint256" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable"
+  },
+  {
+    "name": "addSuitor",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "add", "type": "address" },
+      { "name": "password", "type": "bytes32" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": true,
+    "stateMutability": "payable"
+  },
+  {
+    "name": "changeLimit",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "acc", "type": "address" },
+      { "name": "limit", "type": "uint256" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable"
+  },
+  {
+    "name": "kickBeneficiary",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "acc", "type": "address" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable"
+  },
+  {
+    "name": "kickDistributor",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "acc", "type": "address" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable"
+  },
+  {
+    "name": "addDistributor",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "acc", "type": "address" },
+      { "name": "top", "type": "uint256" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable"
+  },
+  {
+    "name": "proveControl",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "key", "type": "string" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable"
+  },
+  {
+    "name": "replenish",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "acc", "type": "address" },
+      { "name": "amount", "type": "uint256" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": true,
+    "stateMutability": "payable"
+  },
+  {
+    "name": "replenishAll",
+    "type": "function",
+    "constant": false,
+    "inputs": [],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": true,
+    "stateMutability": "payable"
+  },
+  {
+    "name": "replenishList",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "accs", "type": "address[]" },
+      { "name": "amounts", "type": "uint256[]" }
+    ],
+    "outputs": [],
+    "payable": true,
+    "stateMutability": "payable"
+  },
+  {
+    "name": "setProofOfControlWeiAmount",
+    "type": "function",
+    "constant": false,
+    "inputs": [
+      { "name": "amount", "type": "uint256" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable"
+  },
+  {
+    "type": "constructor",
+    "inputs": [],
+    "payable": true,
+    "stateMutability": "payable"
+  },
+  {
+    "name": "getBeneficiariesCount",
+    "type": "function",
+    "constant": true,
+    "inputs": [],
+    "outputs": [
+      { "name": "", "type": "uint256" }
+    ],
+    "payable": false,
+    "stateMutability": "view"
+  },
+  {
+    "name": "getBeneficiaryLimit",
+    "type": "function",
+    "constant": true,
+    "inputs": [
+      { "name": "acc", "type": "address" }
+    ],
+    "outputs": [
+      { "name": "", "type": "uint256" }
+    ],
+    "payable": false,
+    "stateMutability": "view"
+  },
+  {
+    "name": "getDistributorLimit",
+    "type": "function",
+    "constant": true,
+    "inputs": [
+      { "name": "acc", "type": "address" }
+    ],
+    "outputs": [
+      { "name": "", "type": "uint256" }
+    ],
+    "payable": false,
+    "stateMutability": "view"
+  },
+  {
+    "name": "getProofOfControlWeiAmount",
+    "type": "function",
+    "constant": true,
+    "inputs": [],
+    "outputs": [
+      { "name": "", "type": "uint256" }
+    ],
+    "payable": false,
+    "stateMutability": "view"
+  },
+  {
+    "name": "hash",
+    "type": "function",
+    "constant": true,
+    "inputs": [
+      { "name": "key", "type": "string" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bytes32" }
+    ],
+    "payable": false,
+    "stateMutability": "pure"
+  },
+  {
+    "name": "isBeneficiary",
+    "type": "function",
+    "constant": true,
+    "inputs": [
+      { "name": "add", "type": "address" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": false,
+    "stateMutability": "view"
+  },
+  {
+    "name": "isDistributor",
+    "type": "function",
+    "constant": true,
+    "inputs": [
+      { "name": "add", "type": "address" }
+    ],
+    "outputs": [
+      { "name": "", "type": "bool" }
+    ],
+    "payable": false,
+    "stateMutability": "view"
+  }
+]
diff --git a/network/contracts/DGSIdistillery2 b/network/contracts/DGSIdistillery2
new file mode 120000
index 0000000000000000000000000000000000000000..8f90ade527de771b4f550cf819efada0c2706d1a
--- /dev/null
+++ b/network/contracts/DGSIdistillery2
@@ -0,0 +1 @@
+0xc3cf96af51d3c41dfbe428de75a8e5597d4d7a7b
\ No newline at end of file