diff --git a/automation/Dockerfile.ansible b/automation/Dockerfile.ansible
index 4b5a239..7606a61 100644
--- a/automation/Dockerfile.ansible
+++ b/automation/Dockerfile.ansible
@@ -1,21 +1,44 @@
 FROM ubuntu:14.04
 
-RUN apt-get update -y && \
-    sudo apt-get install -y  software-properties-common && \
-    apt-add-repository ppa:ansible/ansible && \
-    apt-get update -y && \
-    apt-get install -y git ansible golang
+# Base image information borrowed by official golang wheezy Dockerfile
+RUN apt-get update && apt-get install -y --no-install-recommends \
+		g++ \
+		gcc \
+		libc6-dev \
+		make \
+                curl \
+	&& rm -rf /var/lib/apt/lists/*
 
-RUN mkdir /go
-WORKDIR /go
-ENV GOPATH=/go
+ENV GOLANG_VERSION 1.6.2
+ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
+ENV GOLANG_DOWNLOAD_SHA256 e40c36ae71756198478624ed1bb4ce17597b3c19d243f3f0899bb5740d56212a
+
+RUN curl -kfsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \
+	&& echo "$GOLANG_DOWNLOAD_SHA256  golang.tar.gz" | sha256sum -c - \
+	&& tar -C /usr/local -xzf golang.tar.gz \
+	&& rm golang.tar.gz
+
+ENV GOPATH /go
+ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
+
+RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
+
+# CORD Automation Dockerfile
+WORKDIR $GOPATH
+
+RUN apt-get update && \
+	apt-get install -y  software-properties-common && \
+	apt-add-repository ppa:ansible/ansible && \
+	apt-get update -y  -m && \
+	apt-get install -y git ansible
+
 RUN go get github.com/tools/godep
-ADD . /go/src/github.com/ciena/cord-maas-automation
+ADD . $GOPATH/src/github.com/ciena/cord-maas-automation
 
-WORKDIR /go/src/github.com/ciena/cord-maas-automation
-RUN /go/bin/godep restore
+WORKDIR $GOPATH/src/github.com/ciena/cord-maas-automation
+RUN $GOPATH/bin/godep restore
 
-WORKDIR /go
+WORKDIR $GOPATH
 RUN go install github.com/ciena/cord-maas-automation
 
-ENTRYPOINT ["/go/bin/cord-maas-automation"]
+ENTRYPOINT ["$GOPATH/bin/cord-maas-automation"]
diff --git a/automation/Godeps/Godeps.json b/automation/Godeps/Godeps.json
index 5e6d307..cd9aa7e 100644
--- a/automation/Godeps/Godeps.json
+++ b/automation/Godeps/Godeps.json
@@ -1,6 +1,7 @@
 {
 	"ImportPath": "_/Users/dbainbri/src/develop/mf",
-	"GoVersion": "go1.5",
+	"GoVersion": "go1.6",
+	"GodepVersion": "v72",
 	"Packages": [
 		"github.com/ciena/maas-flow"
 	],
@@ -21,8 +22,8 @@
 		},
 		{
 			"ImportPath": "github.com/hashicorp/consul",
-                        "Comment": "v0.6.4-341-g22938ab",
-                        "Rev": "22938ab8b3ca069e490a4897a8ec13308ac61605"
+			"Comment": "v0.6.4-341-g22938ab",
+			"Rev": "22938ab8b3ca069e490a4897a8ec13308ac61605"
 		}
 	]
 }
diff --git a/automation/lifecycle.png b/automation/lifecycle.png
index a81847e..cd77dd3 100644
--- a/automation/lifecycle.png
+++ b/automation/lifecycle.png
Binary files differ
diff --git a/automation/state.go b/automation/state.go
index 696f58f..f4c1bf9 100644
--- a/automation/state.go
+++ b/automation/state.go
@@ -77,7 +77,7 @@
 const (
 	// defaultStateMachine Would be nice to drive from a graph language
 	defaultStateMachine string = `
-        (New)->(Commissioning)
+	(New)->(Commissioning)
         (Commissioning)->(FailedCommissioning)
         (FailedCommissioning)->(New)
         (Commissioning)->(Ready)
@@ -96,10 +96,16 @@
         (Releasing)->(Ready)
         (DiskErasing)->(Ready)
         (Broken)->(Ready)
-	(Deployed)->(Provisioning)
-	(Provisioning)->(ProvisionError)
-	(ProvisionError)->(Provisioning)
-	(Provisioning)->(Provisioned)`
+        (Deployed)->(Provisioning)
+	(Provisioning)->|a|
+	|a|->(Execute Script)->|b|
+	|a|->(HTTP PUT)
+	(HTTP PUT)->(HTTP GET)
+	(HTTP GET)->(HTTP GET)
+	(HTTP GET)->|b|
+	|b|->(Provisioned)
+	|b|->(ProvisionError)
+        (ProvisionError)->(Provisioning)`
 )
 
 // updateName - changes the name of the MAAS node based on the configuration file
@@ -175,6 +181,11 @@
 				if len(ips) > 0 {
 					ip = ips[0]
 				}
+				macs := node.MACs()
+				mac := ""
+				if len(macs) > 0 {
+					mac = macs[0]
+				}
 				switch callout.Scheme {
 				// If the scheme is a file, then we will execute the refereced file
 				case "", "file":
@@ -184,7 +195,7 @@
 					record.State = Provisioning
 					record.Timestamp = time.Now().Unix()
 					options.ProvTracker.Set(node.ID(), record)
-					err = exec.Command(callout.Path, node.ID(), node.Hostname(), ip).Run()
+					err = exec.Command(callout.Path, node.ID(), node.Hostname(), ip, mac).Run()
 					if err != nil {
 						log.Printf("[error] Failed to execute '%s' : %s", options.ProvisionURL, err)
 					} else {
@@ -204,6 +215,7 @@
 						"id":   node.ID(),
 						"name": node.Hostname(),
 						"ip":   ip,
+						"mac":  mac,
 					}
 					hc := http.Client{}
 					var b []byte
