diff --git a/README.md b/README.md
index 7329534eb121be4e0d5a47f14332595c12e61353..7c4fa9551e2b188750421968599e77691cfdddb5 100644
--- a/README.md
+++ b/README.md
@@ -1,23 +1,25 @@
 # Blockchain Federal Argentina
 ## TEST NETWORK
 
-1. Install Ubuntu
-2. `sudo apt install software-properties-common`
-3. `sudo add-apt-repository -y ppa:ethereum/ethereum`
-4. `sudo apt update`
-5. `sudo apt install ethereum solc jq ncurses-bin`
-6. `mkdir ~/bfa`
-7. `PATH=${PATH}:${HOME}/bfa/bin`
-8. run `start.sh`
-9. create your contract (there is already one deployed, so **do not** confuse the two)
-10. `insert.sh "I'm doing great today."`
-11. wait for next block to be sealed/mined: `sleep 15`
-12. `verify.sh "Hi there"`
-13. `verify.sh "I'm doing great today."`
-14. Try the basic `explorer.sh`
-15. consider this crontab: @reboot bfa/network5445/start.sh
-
-## network5445/start.sh
+1. Install geth
+1.1. For Debian read doc/compiling-geth-on-debian.txt
+1.2. For Ubuntu read doc/installing-geth-on-ubuntu.txt
+2. `sudo apt install jq ncurses-bin`
+3. `mkdir ~/bfa`
+4. `PATH=${PATH}:${HOME}/bfa/bin`
+5. geth --password /dev/null --datadir $BFANETWORKDIR/node1 account new
+6. geth --datadir $BFANETWORKDIR/node1 init $BFAHOME/src/genesis.json
+7. run `start.sh`
+8. create your contract (there is already one deployed, so do not confuse the two)
+9. `insert.sh "I'm doing great today."`
+10. wait a bit - if you are lucky 15 seconds only
+11. `verify.sh "Hi there"`
+12. `verify.sh "I'm doing great today."`
+13. Try the basic `explorer.sh`
+14. consider this crontab: @reboot bfa/network5445/start.sh
+15. Have a look at walker.pl
+
+## start.sh
 requires: **geth**
 
 Starts a node on the 5445 BFA test net. Creates a genesis.json if you don't have one already.
@@ -50,3 +52,6 @@ Simple script to look at blocks
 ## src/contract.TimestampDocument.sol
 
 The initial Timestamp service. Could be made better.
+
+## walker.pl
+requires: **geth**, **perl**
diff --git a/bin/libbfa.sh b/bin/libbfa.sh
index ebf15d428d98c241d45e6f6bfa13ac8590210fbc..3fd9ba08c8b6b5d5dac27c18dd4e7438e8295f64 100644
--- a/bin/libbfa.sh
+++ b/bin/libbfa.sh
@@ -115,8 +115,9 @@ function    nodedir
         fatal "Unable to guess \$BFANODEDIR . Consider setting it explicitly in ${BFAHOME}/bin/env"
     test -d "${BFANODEDIR}" ||
         fatal "$BFANODEDIR is not a directory."
+    gen_genesis
     test -d "${BFANODEDIR}/geth/chaindata"  ||
-        fatal "Node is not initialised. Consider running: geth --datadir $BFANODEDIR init ${BFANETWORKDIR}/genesis.json"
+        fatal "Node is not initialised. Consider running: geth --datadir $BFANODEDIR init ${BFAHOME}/src/genesis.json"
     # Support migrating from "former" setups
     if [ -r "${BFANODEDIR}/port" -a ! -r "${BFANODEDIR}/netport" ]
     then
@@ -179,3 +180,49 @@ function	prereq
 	done
 	test $err -eq 0
 }
+
+function gen_genesis
+{
+    local genesis="${BFAHOME}/src/genesis.json"
+    test -e "${genesis}" &&
+        return
+    SECONDS=$( date +%s )
+    bfaconfig account
+    nodes=$account
+    #echo "** If you want extra nodes added, add them to nodes.remote.txt and run $0 again."
+    test -r "nodes.remote.txt" &&
+	    nodes="${nodes} $( cat nodes.remote.txt )"
+    allocs=
+    sealers=
+    for node in ${nodes}
+    do
+        test "${node:0:2}" = "0x" &&
+            node=${node:2}
+	allocs="${allocs}"$(
+	printf ', "%s": { "balance": "%s" }'	\
+		$node				\
+          	0x200000000000000000000000000000000000000000000000000000000000000
+	)
+	sealers="${sealers}${node}"
+    done
+    # Get rid of leading comma-space
+    allocs="${allocs:2}"
+    cat <<-EOCONF > ${genesis}
+	{
+	  "config": {
+	    "chainId": ${BFANETWORKID},
+	    "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 4,
+	    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+	    "clique": { "period": 15, "epoch": 30000 }
+	  },
+	  "nonce": "0x0000000000000000",
+	  "timestamp": "$( printf '0x%08x' $SECONDS )",
+	  "extraData": "0x426c6f636b636861696e204665646572616c20417267656e74696e61204e4943${sealers}$( repeat 130 0 )",
+	  "gasLimit": "0xffeeddcc", "difficulty": "0x1", "number": "0x0", "gasUsed": "0x0",
+	  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+	  "coinbase": "0x0000000000000000000000000000000000000000",
+	  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
+	  "alloc": { $allocs }
+	}
+	EOCONF
+}
diff --git a/bin/start.sh b/bin/start.sh
index a2ba1f17e70c31ef9776e4ed1bcf5bfc6031ea15..fe56882404d05cb966ee601dcb7a52a05263bd3e 100755
--- a/bin/start.sh
+++ b/bin/start.sh
@@ -8,55 +8,6 @@ function	repeat
 	printf -- "$2%0.s" $( seq 1 $1 )
 }
 
-function gen_genesis
-{
-    local genesis="${BFANETWORKDIR}/genesis.json"
-    test -e "${genesis}" &&
-        return
-    SECONDS=$( date +%s )
-    bfaconfig account
-    nodes=$account
-    echo "** If you want extra nodes added, add them to nodes.remote.txt and run $0 again."
-    test -r "nodes.remote.txt" &&
-	    nodes="${nodes} $( cat nodes.remote.txt )"
-    allocs=
-    sealers=
-    for node in ${nodes}
-    do
-        test "${node:0:2}" = "0x" &&
-            node=${node:2}
-	allocs="${allocs}"$(
-	printf ', "%s": { "balance": "%s" }'	\
-		$node				\
-          	0x200000000000000000000000000000000000000000000000000000000000000
-	)
-	sealers="${sealers}${node}"
-    done
-    # Get rid of leading comma-space
-    allocs="${allocs:2}"
-    cat <<-EOCONF > ${genesis}
-	{
-	  "config": {
-	    "chainId": ${BFANETWORKID},
-	    "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 4,
-	    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
-	    "clique": { "period": 15, "epoch": 30000 }
-	  },
-	  "nonce": "0x0000000000000000",
-	  "timestamp": "$( printf '0x%08x' $SECONDS )",
-	  "extraData": "0x426c6f636b636861696e204665646572616c20417267656e74696e61204e4943${sealers}$( repeat 130 0 )",
-	  "gasLimit": "0xffeeddcc", "difficulty": "0x1", "number": "0x0", "gasUsed": "0x0",
-	  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
-	  "coinbase": "0x0000000000000000000000000000000000000000",
-	  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
-	  "alloc": { $allocs }
-	}
-	EOCONF
-}
-
-# Create a genesis.json if one does not already exist
-gen_genesis
-
 bootnodeid=6c81b38551fec2f1142b58ed65137cc1b7dfdc7b35bc556ef26604c41e30fcdeb12212b3c19913584f71dc7bf87d76cd67fa523e96996c0f148390fb76fdc5f7
 bootnodev6=2800:40:1:6::135
 bootnodev4=200.68.65.135
diff --git a/doc/compiling-geth-on-debian.md b/doc/compiling-geth-on-debian.md
new file mode 100644
index 0000000000000000000000000000000000000000..625bb301a332ab612353d5aabd58a795e61132f7
--- /dev/null
+++ b/doc/compiling-geth-on-debian.md
@@ -0,0 +1,34 @@
+# Compiling geth on Debian
+
+## Prerequisites
+
+1. `mkdir ~/new ~/bin`
+2. ` cd ~/new`
+3. ` sudo apt install build-essential git`
+4. ` git clone https://github.com/ethereum/go-ethereum`
+
+## Compiling Go itself (takes less than 5 minutes)
+
+Go is only needed for compiling geth - afterwards we can delete it
+
+1. Download __go*.linux-amd64.tar.gz__ from [https://golang.org/dl/] e.g. [https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz]
+2. `tar -xzf go*.tar.gz`
+3. `export PATH=${HOME}/new/go:${PATH}:${HOME}/bin`
+4. `cd go-ethereum`
+5. `make geth`
+6. `cp build/bin/geth ~/bin/`
+7. `cd ..`
+8. `rm -r ~/new/go`
+
+## Compililng Solc takes a while (like 20-50 times longer than compiling geth)
+
+If you wish to compile contracts too, compile Solidity as well.
+
+$ `git clone --recursive https://github.com/ethereum/solidity`
+$ `cd solidity`
+$ `git submodule update --init --recursive`
+$ `./scripts/install_deps.sh`
+$ `mkdir build`
+$ `cd build`
+$ `cmake .. && make`
+$ `cp -p solc/solc ~/bin/`
diff --git a/doc/installing-geth-on-ubuntu.md b/doc/installing-geth-on-ubuntu.md
new file mode 100644
index 0000000000000000000000000000000000000000..96351d6c2b692e8bfb75c3a6d06ce7e45459bbbd
--- /dev/null
+++ b/doc/installing-geth-on-ubuntu.md
@@ -0,0 +1,5 @@
+$ `su`
+# `apt install software-properties-common`
+# `add-apt-repository -y ppa:ethereum/ethereum`
+# `apt update`
+# `apt install ethereum`