diff --git a/docs/devel_env_setup.md b/docs/devel_env_setup.md
deleted file mode 100644
index b8f2e18..0000000
--- a/docs/devel_env_setup.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# The CORD Development Environment
-
-The development environment is required for the tasks in this repository.
-This environment leverages [Vagrant](https://www.vagrantup.com/docs/getting-started/)
-to install the tools required to build and deploy the CORD software.  
-
-## Cloning the Repository
-To clone the repository, on your build host issue the `git` command:
-```
-git clone http://gerrit.opencord.org/cord
-```
-
-### Complete
-When this is complete, a listing (`ls`) of this directory should yield output
-similar to:
-```
-ls
-LICENSE.txt        ansible/           components/        gradle/            gradlew.bat        utils/
-README.md          build.gradle       config/            gradle.properties  scripts/
-Vagrantfile        buildSrc/          docs/              gradlew*           settings.gradle
-```
-## Creating the Development Machine
-To create the development machine the following  Vagrant command can be
-used. This will create an Ubuntu 14.04 LTS based virtual machine and install
-some basic required packages, such as Docker, Docker Compose, and
-Oracle Java 8.
-```
-vagrant up corddev
-```
-**NOTE:** *It may have several minutes for the first command `vagrant up
-corddev` to complete as it will include creating the VM as well as downloading
-and installing various software packages.*
-
-## Connect to the Development Machine
-To connect to the development machine the following vagrant command can be used.
-```
-vagrant ssh corddev
-```
-
-Once connected to the Vagrant machine, you can find the deployment artifacts
-in the `/cord` directory on the VM.
-```
-cd /cord
-```
-
-## Gradle
-[Gradle](https://gradle.org/) is the build tool that is used to help
-orchestrate the build and deployment of a POD. A *launch* script is included
-in the Vagrant machine that will automatically download and install `gradle`.
-The script is called `gradlew` and the download / install will be invoked on
-the first use of this script; thus the first use may take a little longer
-than subsequent invocations and requires a connection to the internet.
-
-### Complete
-Once you have created and connected to the development environment this task is
-complete. The `cord` repository files can be found on the development machine
-under `/cord`. This directory is mounted from the host machine so changes
-made to files in this directory will be reflected on the host machine and
-vice-versa.
diff --git a/docs/quickstart.md b/docs/quickstart.md
index 7363747..e296b2d 100644
--- a/docs/quickstart.md
+++ b/docs/quickstart.md
@@ -19,9 +19,10 @@
 
 ## What you need (Prerequisites)
 
-You will need a build machine (can be your developer laptop) and a target server.
+You will need a *build host* (e.g., your laptop) and a *target server*.  The build host will run
+a development environment in a Vagrant VM that will be used to deploy CORD to the target server.
 
-Build host:
+Build host requirements:
 
 * Mac OS X, Linux, or Windows with a 64-bit OS
 * [`git`](https://git-scm.com/) (2.5.4 or later)
@@ -29,7 +30,7 @@
 * Access to the Internet
 * SSH access to the target server
 
-Target server:
+Target server requirements:
 
 * 64-bit server, with
   * 48GB+ RAM
@@ -39,9 +40,9 @@
 * Ubuntu 14.04 LTS freshly installed (see [TBF]() for instruction on how to install Ubuntu 14.04).
 * Account used to SSH from build host has password-less *sudo* capability (e.g., like the `ubuntu` user)
 
-### Running on CloudLab (optional)
+### Target Server on CloudLab (optional)
 
-If you do not have a target server available, you can borrow one on
+If you do not have a target server available that meets the above requirements, you can borrow one on
 [CloudLab](https://www.cloudlab.us).  Sign up for an account using your organization's
 email address and choose "Join Existing Project"; for "Project Name" enter `cord-testdrive`.
 
@@ -56,13 +57,74 @@
 
 Refer to the [CloudLab documentation](https://docs.cloudlab.us) for more information.
 
-## Create the development environment
+## Clone the Repository
+To clone the repository, on your build host issue the `git` command:
+```
+git clone http://gerrit.opencord.org/cord
+```
 
-Follow the instructions in [devel_env_setup.md](./devel_env_setup.md) to set
-up the Vagrant development machine for CORD on your build host.  
+### Complete
+When this is complete, a listing (`ls`) of this directory should yield output
+similar to:
+```
+ls
+LICENSE.txt        ansible/           components/        gradle/            gradlew.bat        utils/
+README.md          build.gradle       config/            gradle.properties  scripts/
+Vagrantfile        buildSrc/          docs/              gradlew*           settings.gradle
+```
+## Create the Development Machine
 
-The rest of the tasks in this guide are run from inside the Vagrant development
-machine, in the `/cord` directory.
+The development environment is required for the tasks in this repository.
+This environment leverages [Vagrant](https://www.vagrantup.com/docs/getting-started/)
+to install the tools required to build and deploy the CORD software.
+
+To create the development machine the following  Vagrant command can be
+used. This will create an Ubuntu 14.04 LTS based virtual machine and install
+some basic required packages, such as Docker, Docker Compose, and
+Oracle Java 8.
+```
+vagrant up corddev
+```
+**NOTE:** *It may takes several minutes for the first command `vagrant up
+corddev` to complete as it will include creating the VM as well as downloading
+and installing various software packages.*
+
+### Complete
+
+Once the Vagrant VM is created and provisioned, you will see output ending
+with:
+```
+==> corddev: PLAY RECAP *********************************************************************
+==> corddev: localhost                  : ok=29   changed=25   unreachable=0    failed=0
+==> corddev: Configuring cache buckets...
+```
+
+## Connect to the Development Machine
+To connect to the development machine the following vagrant command can be used.
+```
+vagrant ssh corddev
+```
+
+Once connected to the Vagrant machine, you can find the deployment artifacts
+in the `/cord` directory on the VM.
+```
+cd /cord
+```
+
+### Gradle
+[Gradle](https://gradle.org/) is the build tool that is used to help
+orchestrate the build and deployment of a POD. A *launch* script is included
+in the Vagrant machine that will automatically download and install `gradle`.
+The script is called `gradlew` and the download / install will be invoked on
+the first use of this script; thus the first use may take a little longer
+than subsequent invocations and requires a connection to the internet.
+
+### Complete
+Once you have created and connected to the development environment this task is
+complete. The `cord` repository files can be found on the development machine
+under `/cord`. This directory is mounted from the host machine so changes
+made to files in this directory will be reflected on the host machine and
+vice-versa.
 
 ## Fetch
 The fetching phase of the deployment pulls Docker images from the public
@@ -140,7 +202,7 @@
 ## Login to the CORD GUI and look around
 
 You can access the CORD GUI (provided by XOS) by pointing your browser to URL
-`http://<target-server>`, using username `padmin@vicci.org` and password `letmein`.
+`http://<target-server>:8888`, using username `padmin@vicci.org` and password `letmein`.
 
 The state of the system is that all CORD services have been onboarded to XOS (you
 can see them in the GUI by clicking _Services_ at left), but no
diff --git a/docs/quickstart_physical.md b/docs/quickstart_physical.md
index a29a81c..56c2069 100644
--- a/docs/quickstart_physical.md
+++ b/docs/quickstart_physical.md
@@ -47,7 +47,7 @@
 **Note:** *This quick start guide has only been tested against Vagrant and
 VirtualBox, specially on MacOS.*
 
-## Bootstrapping the Head Node
+## Bootstrap the Head Node
 The head node is the key to the physical deployment of a CORD POD. The
 automated deployment of the physical POD is designed such that the head node is
 manually deployed, with the aid of automation tools, such as Ansible and from
@@ -58,16 +58,77 @@
 slightly different because during the bootstrapping of the head node it is
 possible that the interfaces needed to be renamed and the system to be
 rebooted. This guide assumes that the head node is being bootstrapped from a
-host outside of the POD.
+host outside of the POD (OtP).
 
-## Create Development Environment
+## Clone the Repository
+To clone the repository, on your OtP build host issue the `git` command:
+```
+git clone http://gerrit.opencord.org/cord
+```
 
-Follow the instructions in [devel_env_setup.md](./devel_env_setup.md) to set
-up the Vagrant development machine for CORD on your build host outside the
-POD (OtP).
+### Complete
+When this is complete, a listing (`ls`) of this directory should yield output
+similar to:
+```
+ls
+LICENSE.txt        ansible/           components/        gradle/            gradlew.bat        utils/
+README.md          build.gradle       config/            gradle.properties  scripts/
+Vagrantfile        buildSrc/          docs/              gradlew*           settings.gradle
+```
+## Create the Development Machine
 
-The rest of the tasks in this guide are run from inside the Vagrant development
-machine, in the `/cord` directory.
+The development environment is required for the tasks in this repository.
+This environment leverages [Vagrant](https://www.vagrantup.com/docs/getting-started/)
+to install the tools required to build and deploy the CORD software.
+
+To create the development machine the following  Vagrant command can be
+used. This will create an Ubuntu 14.04 LTS based virtual machine and install
+some basic required packages, such as Docker, Docker Compose, and
+Oracle Java 8.
+```
+vagrant up corddev
+```
+**NOTE:** *It may takes several minutes for the first command `vagrant up
+corddev` to complete as it will include creating the VM as well as downloading
+and installing various software packages.*
+
+### Complete
+
+Once the Vagrant VM is created and provisioned, you will see output ending
+with:
+```
+==> corddev: PLAY RECAP *********************************************************************
+==> corddev: localhost                  : ok=29   changed=25   unreachable=0    failed=0
+==> corddev: Configuring cache buckets...
+```
+
+## Connect to the Development Machine
+To connect to the development machine the following vagrant command can be used.
+```
+vagrant ssh corddev
+```
+
+Once connected to the Vagrant machine, you can find the deployment artifacts
+in the `/cord` directory on the VM.
+```
+cd /cord
+```
+
+### Gradle
+[Gradle](https://gradle.org/) is the build tool that is used to help
+orchestrate the build and deployment of a POD. A *launch* script is included
+in the Vagrant machine that will automatically download and install `gradle`.
+The script is called `gradlew` and the download / install will be invoked on
+the first use of this script; thus the first use may take a little longer
+than subsequent invocations and requires a connection to the internet.
+
+### Complete
+Once you have created and connected to the development environment this task is
+complete. The `cord` repository files can be found on the development machine
+under `/cord`. This directory is mounted from the host machine so changes
+made to files in this directory will be reflected on the host machine and
+vice-versa.
+
 
 ## Fetch
 The fetching phase of the deployment pulls Docker images from the public
@@ -177,7 +238,7 @@
 images to the target server that are used in the reset of the process, thus
 making the head node a self contained deployment.
 ```
-./gradew -PdeployConfig=config/podX.yml prime
+./gradlew -PdeployConfig=config/podX.yml prime
 ```
 
 ### Complete
@@ -197,7 +258,7 @@
 transfer all the image from the development machine to the target head node.
 This step is started with the following command:
 ```
-./gradew -PtargetReg=<head-node-ip-address>:5000 publish
+./gradlew -PtargetReg=<head-node-ip-address>:5000 publish
 ```
 
 ### Complete
@@ -287,10 +348,10 @@
 
    - eth0 / eth1 - 40G interfaces, not relevant for the test environment.
    - eth2 - the interface on which the head node supports PXE boots and is an internally interface to which all
-            the compute nodes connected
+   the compute nodes connected
    - eth3 - WAN link. the head node will NAT from eth2 to eth3
    - mgmtbr - Not associated with a physical network and used to connect in the VM created by the openstack
-              install that is part of XOS
+   install that is part of XOS
 
 The Ansible scripts configure MAAS to support DHCP/DNS/PXE on the eth2 and mgmtbr interfaces.
 
