diff --git a/yocto-poky/documentation/toaster-manual/figures/compatible-layers.png b/yocto-poky/documentation/toaster-manual/figures/compatible-layers.png
new file mode 100644
index 0000000..38436b0
--- /dev/null
+++ b/yocto-poky/documentation/toaster-manual/figures/compatible-layers.png
Binary files differ
diff --git a/yocto-poky/documentation/toaster-manual/figures/import-layer.png b/yocto-poky/documentation/toaster-manual/figures/import-layer.png
new file mode 100644
index 0000000..436ec7a
--- /dev/null
+++ b/yocto-poky/documentation/toaster-manual/figures/import-layer.png
Binary files differ
diff --git a/yocto-poky/documentation/toaster-manual/figures/new-project.png b/yocto-poky/documentation/toaster-manual/figures/new-project.png
new file mode 100644
index 0000000..dbc50b9
--- /dev/null
+++ b/yocto-poky/documentation/toaster-manual/figures/new-project.png
Binary files differ
diff --git a/yocto-poky/documentation/toaster-manual/toaster-manual-intro.xml b/yocto-poky/documentation/toaster-manual/toaster-manual-intro.xml
index 9f4c38b..ee1dcba 100644
--- a/yocto-poky/documentation/toaster-manual/toaster-manual-intro.xml
+++ b/yocto-poky/documentation/toaster-manual/toaster-manual-intro.xml
@@ -14,89 +14,25 @@
         remote build servers.
     </para>
 
-    <note>
-        <para>
-            This release of Toaster does allow you to configure and initiate
-            builds.
-            However, you cannot use Toaster to customize image recipes, which
-            still must either be done by hand or through
-            <ulink url='&YOCTO_HOME_URL;/tools-resources/projects/hob'>Hob</ulink>.
-            As Toaster matures, it eventually will equal and surpass Hob
-            functionality, at which time Hob will be deprecated.
-        </para>
+    <section id='intro-features'>
+        <title>Toaster Features</title>
 
         <para>
-            For more information on Hob,
-            see the
-            "<ulink url='&YOCTO_DOCS_DEV_URL;#image-development-using-hob'>Image Development Using Hob</ulink>"
-           section in the Yocto Project Development Manual.
-        </para>
-    </note>
-
-    <section id='intro-modes'>
-        <title>Toaster Operational Modes</title>
-
-        <para>
-            You can use Toaster in Analysis Mode or Build Mode:
+            Toaster allows you to configure and run builds, and it
+            provides extensive information about the build process.
             <itemizedlist>
-                <listitem><para id='toaster-analysis-mode'><emphasis>Analysis Mode:</emphasis>
-                    In Analysis Mode, you can record builds and statistics.
-                    In this Mode, you directly access the
-                    <filename>bitbake</filename> command, which you then use to
-                    build images.</para>
-                    <para>Analysis Mode requires you to have first started
-                    Toaster and then to initiate your build using the
-                    <filename>bitbake</filename> command from the shell.
-                    Toaster must be started before the build or it will not
-                    collect build data.</para>
-                    <para>Toaster has the following capabilities in
-                    Analysis Mode:
-                    <itemizedlist>
-                        <listitem><para>
-                            See what was built (recipes and packages) and what
-                            packages were installed into your final image.
-                            </para></listitem>
-                        <listitem><para>
-                            Browse the directory structure of your image.
-                            </para></listitem>
-                        <listitem><para>
-                            See the value of all variables in your build
-                            configuration, and which files set each value.
-                            </para></listitem>
-                        <listitem><para>
-                            Examine error, warning and trace messages to aid
-                            in debugging.
-                            </para></listitem>
-                        <listitem><para>
-                            See information about the BitBake tasks executed
-                            and reused during your build, including those that
-                            used shared state.
-                            </para></listitem>
-                        <listitem><para>
-                            See dependency relationships between recipes,
-                            packages and tasks
-                            </para></listitem>
-                        <listitem><para>
-                            See performance information such as build time,
-                            task time, CPU usage, and disk I/O.
-                            </para></listitem>
-                    </itemizedlist>
-                    </para></listitem>
-                <listitem><para id='toaster-build-mode'><emphasis>Build Mode:</emphasis>
-                    In Build Mode, Toaster handles the build configuration,
-                    scheduling and execution.
-                    In this mode, all your interaction with the build system
-                    happens through the web interface.
-                    You do not have direct access to the
-                    <filename>bitbake</filename> command.</para>
-                    <para>Using this mode, you configure and start your builds
-                    within Toaster's GUI.
-                    Each project can be configured for a specific version
-                    of the build system.
-                    As shipped, Toaster supports Yocto Project Releases 1.7 and
-                    beyond.</para>
-                    <para>Toaster has all the same capabilities in Build Mode
-                    as it does in Analysis Mode plus the following:
+                <listitem><para id='toaster-build-features'>
+                    <emphasis>Configure and Run Builds:</emphasis>
+                    You can use the Toaster web interface to configure and
+                    start your builds.
+                    Builds started using the Toaster web interface are
+                    organized into projects.
+                    When you create a project, you are asked to select a
+                    release, or version of the build system you want to
+                    use for the project builds.
+                    As shipped, Toaster supports Yocto Project releases 1.8
+                    and beyond.
+                    With the Toaster web interface, you can:
                     <itemizedlist>
                         <listitem><para>
                             Browse layers listed in the various
@@ -106,6 +42,10 @@
                             <ulink url='http://layers.openembedded.org/layerindex/'></ulink>).
                             </para></listitem>
                         <listitem><para>
+                            Browse images, recipes, and machines provided by
+                            those layers.
+                            </para></listitem>
+                        <listitem><para>
                             Import your own layers for building.
                             </para></listitem>
                         <listitem><para>
@@ -121,6 +61,53 @@
                             Start your builds.
                             </para></listitem>
                     </itemizedlist>
+                    Toaster also allows you to configure and run your builds
+                    from the command line, and switch between the command line and
+                    the web interface at any time.
+                    Builds started from  the command line appear within a special
+                    Toaster project called "Command line builds".
+                    </para></listitem>
+                <listitem><para id='toaster-analysis-features'>
+                    <emphasis>Information About the Build Process:</emphasis>
+                    Toaster also records extensive information about your builds.
+                    Toaster collects data for builds you start from the web
+                    interface and from the command line as long as Toaster
+                    is running.
+                    <note>
+                        You must start Toaster before the build or it will not
+                        collect build data.
+                    </note></para>
+                    <para>With Toaster you can:
+                    <itemizedlist>
+                        <listitem><para>
+                            See what was built (recipes and packages) and what
+                            packages were installed into your final image.
+                            </para></listitem>
+                        <listitem><para>
+                            Browse the directory structure of your image.
+                            </para></listitem>
+                        <listitem><para>
+                            See the value of all variables in your build
+                            configuration, and which files set each value.
+                            </para></listitem>
+                        <listitem><para>
+                            Examine error, warning, and trace messages to aid
+                            in debugging.
+                            </para></listitem>
+                        <listitem><para>
+                            See information about the BitBake tasks executed
+                            and reused during your build, including those that
+                            used shared state.
+                            </para></listitem>
+                        <listitem><para>
+                            See dependency relationships between recipes,
+                            packages, and tasks.
+                            </para></listitem>
+                        <listitem><para>
+                            See performance information such as build time,
+                            task time, CPU usage, and disk I/O.
+                            </para></listitem>
+                    </itemizedlist>
                     </para></listitem>
             </itemizedlist>
         </para>
@@ -132,8 +119,6 @@
         <para>
             You can set Toaster up to run as a local instance or as a shared
             hosted service.
-            Regardless of how you set up Toaster, both Analysis and Build
-            Modes are available.
         </para>
 
         <para>
diff --git a/yocto-poky/documentation/toaster-manual/toaster-manual-reference.xml b/yocto-poky/documentation/toaster-manual/toaster-manual-reference.xml
index faca4ca..3a46b61 100644
--- a/yocto-poky/documentation/toaster-manual/toaster-manual-reference.xml
+++ b/yocto-poky/documentation/toaster-manual/toaster-manual-reference.xml
@@ -159,25 +159,24 @@
                     </para>
 
                     <para>
-                        When you set up Toaster in Build Mode, you are prompted
-                        to select a Toaster configuration file.
+                        The Toaster startup script in
+                        <filename>/bitbake/bin/toaster</filename> specifies
+                        the location of a Toaster configuration file
+                        <filename>toasterconf.json</filename> as the value of
+                        the <filename>TOASTER_CONF</filename> variable.
                         This configuration file is used to set up the initial
                         configuration values within the Toaster database
                         including the layer sources.
-                        Three versions of the configuration file exist:
+                        Two versions of the configuration file exist:
                         <itemizedlist>
                             <listitem><para>
                                 The first version of the file is found in the
                                 <filename>conf</filename> directory of the
-                                <filename>meta-yocto</filename> layer
+                                <filename>meta-poky</filename> layer
                                 (i.e.
-                                <filename>meta-yocto/conf/toasterconf.json</filename>).
+                                <filename>meta-poky/conf/toasterconf.json</filename>).
                                 This version contains the default Yocto Project
                                 configuration for Toaster.
-                                You are prompted to select this file during the
-                                Toaster set up process if you had cloned the
-                                <filename>poky</filename> repository (i.e.
-                                <filename>git://git.yoctoproject.org/poky</filename>).
                                 </para></listitem>
                             <listitem><para>
                                 The second version of the file is in the
@@ -186,19 +185,6 @@
                                 (i.e. <filename>meta/conf/toasterconf.json</filename>).
                                 This version contains the default OpenEmbedded
                                 configuration for Toaster.
-                                You are prompted to select this file during the
-                                Toaster set up process if you had cloned the
-                                <filename>openembedded-core</filename> repository
-                                (i.e.
-                                <filename>git://git.openembedded.org/openembedded-core</filename>).
-                                </para></listitem>
-                            <listitem><para>
-                                The third version is a sample configuration
-                                useful for when you want to set up a hosted
-                                service in Build Mode.
-                                You can find this version on the
-                                <ulink url='https://wiki.yoctoproject.org/wiki/File:Toasterconf.json.txt.patch'>File:Toasterconf.json.txt.patch</ulink>
-                                wiki page.
                                 </para></listitem>
                         </itemizedlist>
                     </para>
@@ -228,10 +214,10 @@
                     "dirpath": "meta"
                 },
                 {
-                    "name": "meta-yocto",
-                    "local_path": "meta-yocto",
+                    "name": "meta-poky",
+                    "local_path": "meta-poky",
                     "vcs_url": "remote:origin",
-                    "dirpath": "meta-yocto"
+                    "dirpath": "meta-poky"
                 },
                 {
                     "name": "meta-yocto-bsp",
@@ -307,10 +293,10 @@
                         <filename>toasterconf.json</filename> file you just edited.
                         For example, if you cloned the
                         <filename>poky</filename> repository and you edited the
-                        <filename>meta-yocto/conf/toasterconf.json</filename> file,
+                        <filename>meta-poky/conf/toasterconf.json</filename> file,
                         you would type something like the following:
                         <literallayout class='monospaced'>
-     $ bitbake/lib/toaster/manage.py loadconf /home/scottrif/poky/meta-yocto/conf/toasterconf.json
+     $ bitbake/lib/toaster/manage.py loadconf /home/scottrif/poky/meta-poky/conf/toasterconf.json
                         </literallayout>
                         After entering this command, you need to update the
                         Toaster database with the information coming from your
@@ -550,8 +536,7 @@
         <title>JSON Files</title>
 
         <para>
-            If you are going to be using Toaster in Build Mode, it must
-            be initially configured before use.
+            You must configure Toaster before using it.
             Configuration customizes layer source settings and Toaster defaults
             for all users and is performed by the person responsible for
             Toaster Configuration (i.e  the Toaster Administrator).
@@ -577,23 +562,22 @@
             <filename>toasterconf.json</filename>.
             The Toaster Administrator can customize the file prior to loading
             it into Toaster.
-            When you set up Toaster locally to run in Build Mode, the system
-            startup script actively looks for compatible configuration files
-            and prompts you to select a file to load if it detects that the
-            database has not been configured.
+            The <filename>TOASTER_CONF</filename> variable in the
+            Toaster startup script at <filename>bitbake/bin/toaster</filename>
+            specifies the location of the <filename>toasterconf.json</filename> file.
         </para>
 
         <section id='json-file-choices'>
             <title>Configuration File Choices</title>
 
             <para>
-                Three versions of the configuration file exist:
+                Two versions of the configuration file exist:
                 <itemizedlist>
                     <listitem><para>
                         The
-                        <filename>meta-yocto/conf/toasterconf.json</filename>
+                        <filename>meta-poky/conf/toasterconf.json</filename>
                         in the <filename>conf</filename> directory of the
-                        Yocto Project's <filename>meta-yocto</filename> layer.
+                        Yocto Project's <filename>meta-poky</filename> layer.
                         This version contains the default Yocto Project
                         configuration for Toaster.
                         You are prompted to select this file during the Toaster
@@ -613,15 +597,6 @@
                         <filename>openembedded-core</filename> repository (i.e.
                         <filename>git://git.openembedded.org/openembedded-core</filename>).
                         </para></listitem>
-                    <listitem><para>
-                        The <filename>Toasterconf.json.txt.patch</filename>
-                        located on the
-                        <ulink url='https://wiki.yoctoproject.org/wiki/File:Toasterconf.json.txt.patch'>File:Toasterconf.json.txt.patch</ulink>
-                        wiki page.
-                        This version of the file is useful as a sample
-                        configuration for when you want to set up Toaster as a
-                        hosted service in Build Mode.
-                        </para></listitem>
                 </itemizedlist>
             </para>
         </section>
@@ -723,10 +698,10 @@
                     "dirpath": "meta"
                 },
                 {
-                    "name": "meta-yocto",
-                    "local_path": "meta-yocto",
+                    "name": "meta-poky",
+                    "local_path": "meta-poky",
                     "vcs_url": "remote:origin",
-                    "dirpath": "meta-yocto"
+                    "dirpath": "meta-poky"
                 },
                 {
                     "name": "meta-yocto-bsp",
@@ -842,7 +817,7 @@
              "description": "Yocto Project master",
              "bitbake": "master",
              "branch": "master",
-             "defaultlayers": [ "openembedded-core", "meta-yocto", "meta-yocto-bsp"],
+             "defaultlayers": [ "openembedded-core", "meta-poky", "meta-yocto-bsp"],
              "layersourcepriority": { "Imported layers": 99, "Local Yocto Project" : 10, "OpenEmbedded" :  0 },
              "helptext": "Toaster will run your builds using the tip of the &lt;a href=\"http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/\"&gt;Yocto Project master branch&lt;/a&gt;, where active development takes place. This is not a stable branch, so your builds might not work as expected."
          },
@@ -851,7 +826,7 @@
              "description": "Yocto Project 2.0 Jethro",
              "bitbake": "jethro",
              "branch": "jethro",
-             "defaultlayers": [ "openembedded-core", "meta-yocto", "meta-yocto-bsp"],
+             "defaultlayers": [ "openembedded-core", "meta-poky", "meta-yocto-bsp"],
              "layersourcepriority": { "Imported layers": 99, "Local Yocto Project" : 10, "OpenEmbedded" :  0 },
              "helptext": "Toaster will run your builds with the tip of the &lt;a href=\"http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=jethro\"&gt;Yocto Project 2.0 \"Jethro\"&lt;/a&gt; branch."
          },
@@ -860,7 +835,7 @@
              "description": "Yocto Project 1.8 Fido",
              "bitbake": "fido",
              "branch": "fido",
-             "defaultlayers": [ "openembedded-core", "meta-yocto", "meta-yocto-bsp"],
+             "defaultlayers": [ "openembedded-core", "meta-poky", "meta-yocto-bsp"],
              "layersourcepriority": { "Imported layers": 99, "Local Yocto Project" : 10, "OpenEmbedded" :  0 },
              "helptext": "Toaster will run your builds with the tip of the &lt;a href=\"http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=fido\"&gt;Yocto Project 1.8 \"Fido\"&lt;/a&gt; branch."
          },
@@ -869,7 +844,7 @@
              "description": "Local Yocto Project",
              "bitbake": "HEAD",
              "branch": "HEAD",
-             "defaultlayers": [ "openembedded-core", "meta-yocto", "meta-yocto-bsp"],
+             "defaultlayers": [ "openembedded-core", "meta-poky", "meta-yocto-bsp"],
              "layersourcepriority": { "Imported layers": 99, "Local Yocto Project" : 10, "OpenEmbedded" :  0 },
              "helptext": "Toaster will run your builds with the version of the Yocto Project you have cloned or downloaded to your computer."
          }
@@ -1008,7 +983,7 @@
                 <literallayout class='monospaced'>
      $ bitbake/lib/toaster/manage.py checksettings
                 </literallayout>
-                In Build Mode, Toaster uses settings that are based on the
+                Toaster uses settings that are based on the
                 database to configure the building tasks.
                 The <filename>checksettings</filename> command verifies that
                 the database settings are valid in the sense that they have
diff --git a/yocto-poky/documentation/toaster-manual/toaster-manual-setup-and-use.xml b/yocto-poky/documentation/toaster-manual/toaster-manual-setup-and-use.xml
index 2693569..963b211 100644
--- a/yocto-poky/documentation/toaster-manual/toaster-manual-setup-and-use.xml
+++ b/yocto-poky/documentation/toaster-manual/toaster-manual-setup-and-use.xml
@@ -17,32 +17,12 @@
         </para>
 
         <para>
-            If you want to configure and start your builds using the
-            Toaster web interface
-            (i.e. "<link linkend='toaster-build-mode'>Build Mode</link>"),
-            navigate to the root of your
+            Navigate to the root of your
             <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
             (e.g. <filename>poky</filename>):
             <literallayout class='monospaced'>
      $ cd poky
             </literallayout>
-            Next, start Toaster:
-            <literallayout class='monospaced'>
-     $ bitbake/bin/toaster
-            </literallayout>
-            Open your favourite browser and enter the following:
-            <literallayout class='monospaced'>
-     http://127.0.0.1:8000
-            </literallayout>
-            If you would rather configure and start your builds
-            using the command line
-            (i.e. <link linkend='toaster-analysis-mode'>Analysis Mode</link>),
-            you can get Toaster to "listen"
-            to your builds and collect information about them.
-            To do that, navigate to the root of your Source Directory:
-            <literallayout class='monospaced'>
-     $ cd poky
-            </literallayout>
             Once in that directory, source the build environment script:
             <literallayout class='monospaced'>
      $ source oe-init-build-env
@@ -53,12 +33,14 @@
             <literallayout class='monospaced'>
      $ source ../bitbake/bin/toaster
             </literallayout>
-            You can now run builds normally.
+            You can now run your builds from the command line, or with
+            Toaster as explained in section
+            "<link linkend='using-the-toaster-web-interface'>Using the Toaster Web Interface</link>".
         </para>
 
         <para>
-            To see the build information provided by Toaster, open your
-            favorite browser and enter the following:
+            To access the Toaster web interface, open your favorite
+            browser and enter the following:
             <literallayout class='monospaced'>
      http://127.0.0.1:8000
             </literallayout>
@@ -72,12 +54,7 @@
             By default, Toaster starts on port 8000.
             You can use the <filename>WEBPORT</filename> parameter to
             set a different port.
-            For example, either of the following commands sets the
-            port to "8400":
-            <literallayout class='monospaced'>
-     $ bitbake/bin/toaster webport=8400
-            </literallayout>
-            or
+            For example, the following command sets the port to "8400":
             <literallayout class='monospaced'>
      $ source ../bitbake/bin/toaster webport=8400
             </literallayout>
@@ -88,18 +65,10 @@
         <title>The Directory for Cloning Layers</title>
 
         <para>
-            If you are running Toaster in
-            <link linkend='toaster-build-mode'>Build Mode</link>,
             Toaster creates a <filename>_toaster_clones</filename>
             directory inside your Source Directory
-            (i.e. <filename>poky</filename>).
-            For example, suppose you use this command to start Toaster:
-            <literallayout class='monospaced'>
-     poky/bitbake/bin/toaster
-            </literallayout>
-            In this example, Toaster creates and uses the
-            <filename>poky/_toaster_clones</filename>
-            directory to clone any layers needed for your builds.
+            (i.e. <filename>poky</filename>) to clone any layers
+            needed for your builds.
         </para>
 
         <para>
@@ -117,17 +86,9 @@
         <title>The Build Directory</title>
 
         <para>
-            If you are running Toaster in
-            <link linkend='toaster-build-mode'>Build Mode</link>,
             Toaster creates a build directory within your Source
-            Directory (e.g. <filename>poky</filename>).
-            For example, suppose you use this command to start Toaster:
-            <literallayout class='monospaced'>
-     poky/bitbake/bin/toaster
-            </literallayout>
-            In this example, Toaster creates and uses the
-            <filename>poky/build</filename>
-            directory to execute the builds.
+            Directory (e.g. <filename>poky</filename>) to execute
+            the builds.
         </para>
 
         <para>
@@ -136,7 +97,7 @@
             the <filename>TOASTER_DIR</filename> environment variable,
             which takes precedence over your current working directory.
             Setting this environment variable causes Toaster to use
-            <filename>$TOASTER_DIR./build</filename> as the build directory.
+            <filename>$TOASTER_DIR/build</filename> as the build directory.
         </para>
     </section>
 
@@ -154,1267 +115,519 @@
             To access the Django administration interface, you must
             create a superuser by following these steps:
             <orderedlist>
-                <listitem><para>
-                    If you used <filename>virtualenv</filename>, which is
-                    recommended, to set up the Toaster system dependencies,
-                    you need be sure the virtual environment is activated.
-                    To activate this environment, use the following:
-                    <literallayout class='monospaced'>
-     $ source venv/bin/activate
-                    </literallayout>
-                    </para></listitem>
-                <listitem><para>
-                    From the root of your checkout directory, invoke the
-                    following command from <filename>manage.py</filename>:
-                    <literallayout class='monospaced'>
-     $ ./bitbake/lib/toaster/manage.py createsuperuser
-                    </literallayout>
-                    </para></listitem>
-                <listitem><para>
-                    Django prompts you for the username, which you need to
-                    provide.
-                    </para></listitem>
-                <listitem><para>
-                    Django prompts you for an email address, which is
-                    optional.
-                    </para></listitem>
-                <listitem><para>
-                    Django prompts you for a password, which you must provide.
-                    </para></listitem>
-                <listitem><para>
-                    Django prompts you to re-enter your password for verification.
-                    </para></listitem>
-            </orderedlist>
-            After completing these steps, the following confirmation message
-            appears:
-            <literallayout class='monospaced'>
-     Superuser created successfully.
-            </literallayout>
-        </para>
+              <listitem><para>
+                  If you used <filename>virtualenv</filename>, which is
+                  recommended, to set up the Toaster system dependencies,
+                  you need be sure the virtual environment is activated.
+                  To activate this environment, use the following command:
+                  <literallayout class='monospaced'>
+   $ source venv/bin/activate
+                  </literallayout>
+                  </para></listitem>
+              <listitem><para>
+                  From the directory containing the Toaster database,
+                  which by default is the
+                  <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
+                  invoke the <filename>createsuperuser</filename> command
+                  from <filename>manage.py</filename>:
+                  <literallayout class='monospaced'>
+   $ cd ~/poky/build
+   $ ../bitbake/lib/toaster/manage.py createsuperuser
+                  </literallayout>
+                  </para></listitem>
+              <listitem><para>
+                  Django prompts you for the username, which you need to
+                  provide.
+                  </para></listitem>
+              <listitem><para>
+                  Django prompts you for an email address, which is
+                  optional.
+                  </para></listitem>
+              <listitem><para>
+                  Django prompts you for a password, which you must provide.
+                  </para></listitem>
+              <listitem><para>
+                  Django prompts you to re-enter your password for verification.
+                  </para></listitem>
+          </orderedlist>
+          After completing these steps, the following confirmation message
+          appears:
+          <literallayout class='monospaced'>
+   Superuser created successfully.
+          </literallayout>
+      </para>
 
-        <para>
-            Creating a superuser allows you to access the Django administration
-            interface through a browser.
-            The URL for this interface is the same as the URL used for the
-            Toaster instance with "/admin" on the end.
-            For example, if you are running Toaster locally, use the
-            following URL:
-            <literallayout class='monospaced'>
-     http://127.0.0.1:8000/admin
-            </literallayout>
-            You can use the Django administration interface to set Toaster
-            configuration parameters such as the build directory, layer sources,
-            default variable values, and BitBake versions.
-        </para>
-    </section>
+      <para>
+          Creating a superuser allows you to access the Django administration
+          interface through a browser.
+          The URL for this interface is the same as the URL used for the
+          Toaster instance with "/admin" on the end.
+          For example, if you are running Toaster locally, use the
+          following URL:
+          <literallayout class='monospaced'>
+   http://127.0.0.1:8000/admin
+          </literallayout>
+          You can use the Django administration interface to set Toaster
+          configuration parameters such as the build directory, layer sources,
+          default variable values, and BitBake versions.
+      </para>
+  </section>
 
-    <section id='toaster-setting-up-a-production-instance-of-toaster'>
-        <title>Setting Up a Production Instance of Toaster</title>
+  <section id='toaster-setting-up-a-production-instance-of-toaster'>
+      <title>Setting Up a Production Instance of Toaster</title>
 
-        <para>
-            You can use a production instance of Toaster to share the
-            Toaster instance with remote users, multiple users, or both.
-            The production instance is also the setup that can cope with
-            heavier loads on the web service.
-            Use the instructions in the following sections to set up
-            Toaster in
-            <link linkend='toaster-build-mode'>Build Mode</link>
-            where builds and projects are run,
-            viewed, and defined through the Toaster web interface.
-        </para>
+      <para>
+          You can use a production instance of Toaster to share the
+          Toaster instance with remote users, multiple users, or both.
+          The production instance is also the setup that can handle
+          heavier loads on the web service.
+          Use the instructions in the following sections to set up
+          Toaster to run builds through the Toaster web interface.
+      </para>
 
-        <section id='toaster-production-instance-requirements'>
-            <title>Requirements</title>
+      <section id='toaster-production-instance-requirements'>
+          <title>Requirements</title>
 
-            <para>
-                Be sure you meet the following requirements:
-                <note>
-                    You must comply with all Apache,
-                    <filename>mod-wsgi</filename>, and Mysql requirements.
-                </note>
-                <itemizedlist>
-                    <listitem><para>
-                        Have all the build requirements as described in
-                        "<link linkend='toaster-setting-up-the-basic-system-requirements'>Setting Up the Basic System Requirements</link>"
-                        chapter.
-                        </para></listitem>
-                    <listitem><para>
-                        Have an Apache webserver.
-                        </para></listitem>
-                    <listitem><para>
-                        Have <filename>mod-wsgi</filename> for the Apache
-                        webserver.
-                        </para></listitem>
-                    <listitem><para>
-                        Use the Mysql database server.
-                        </para></listitem>
-                    <listitem><para>
-                        If you are using Ubuntu 14.04.3, run the following:
-                        <literallayout class='monospaced'>
-     $ sudo apt-get install apache2 libapache2-mod-wsgi mysql-server virtualenv libmysqlclient-dev
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para>
-                        If you are using Fedora 22 or a RedHat distribution, run
-                        the following:
-                        <literallayout class='monospaced'>
-     $ sudo dnf install httpd mod_wsgi python-virtualenv gcc mysql-devel
-                        </literallayout>
-                        </para></listitem>
-                </itemizedlist>
-            </para>
-        </section>
+          <para>
+              Be sure you meet the following requirements:
+              <note>
+                  You must comply with all Apache,
+                  <filename>mod-wsgi</filename>, and Mysql requirements.
+              </note>
+              <itemizedlist>
+                  <listitem><para>
+                      Have all the build requirements as described in
+                      "<link linkend='toaster-setting-up-the-basic-system-requirements'>Setting Up the Basic System Requirements</link>"
+                      chapter.
+                      </para></listitem>
+                  <listitem><para>
+                      Have an Apache webserver.
+                      </para></listitem>
+                  <listitem><para>
+                      Have <filename>mod-wsgi</filename> for the Apache
+                      webserver.
+                      </para></listitem>
+                  <listitem><para>
+                      Use the Mysql database server.
+                      </para></listitem>
+                  <listitem><para>
+                      If you are using Ubuntu 14.04.3, run the following:
+                      <literallayout class='monospaced'>
+   $ sudo apt-get install apache2 libapache2-mod-wsgi mysql-server virtualenv libmysqlclient-dev
+                      </literallayout>
+                      </para></listitem>
+                  <listitem><para>
+                      If you are using Fedora 22 or a RedHat distribution, run
+                      the following:
+                      <literallayout class='monospaced'>
+   $ sudo dnf install httpd mod_wsgi python-virtualenv gcc mysql-devel
+                      </literallayout>
+                      </para></listitem>
+              </itemizedlist>
+          </para>
+      </section>
 
-        <section id='toaster-installation-steps'>
-            <title>Installation</title>
+      <section id='toaster-installation-steps'>
+          <title>Installation</title>
 
-            <para>
-                Perform the following steps to install Toaster:
-                <orderedlist>
-                    <listitem><para>
-                        Checkout a copy of <filename>poky</filename>
-                        into the web server directory.
-                        You will be using <filename>/var/www/toaster</filename>:
-                        <literallayout class='monospaced'>
-     $ mkdir -p /var/www/toaster
-     $ cd /var/www/toaster/
-     $ git clone git://git.yoctoproject.org/poky
-     $ git checkout &DISTRO_NAME;
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para>
-                        Initialize a virtual environment and install Toaster
-                        dependencies.
-                        Using a virtual environment keeps the Python packages
-                        isolated from your system-provided packages:
-                        <literallayout class='monospaced'>
-     $ cd /var/www/toaster/
-     $ virtualenv venv
-     $ source ./venv/bin/activate
-     $ pip install -r ./poky/bitbake/toaster-requirements.txt
-     $ pip install mysql
-     $ pip install MySQL-python
-                        </literallayout>
-                        <note>
-                            Isolating these packages is not required but is
-                            recommended.
-                            Alternatively, you can use your operating system's
-                            package manager to install the packages.
-                        </note>
-                        </para></listitem>
-                    <listitem><para>
-                        Configure Toaster by editing
-                        <filename>/var/www/toaster/poky/bitbake/lib/toaster/toastermain/settings.py</filename>
-                        as follows:
-                        <itemizedlist>
-                            <listitem><para>
-                                Edit the <filename>DATABASE</filename> settings:
-                                <literallayout class='monospaced'>
-     DATABASES = {
-         'default': {
-             'ENGINE': 'django.db.backends.mysql',
-             'NAME': 'toaster_data',
-             'USER': 'toaster',
-             'PASSWORD': 'yourpasswordhere',
-             'HOST': 'localhost',
-             'PORT': '3306',
-        }
-     }
-                                </literallayout>
-                                </para></listitem>
-                            <listitem><para>
-                                Edit the <filename>SECRET_KEY</filename>:
-                                <literallayout class='monospaced'>
-     SECRET_KEY = '<replaceable>your_secret_key</replaceable>'
-                                </literallayout>
-                                </para></listitem>
-                            <listitem><para>
-                                Edit the <filename>STATIC_ROOT</filename>:
-                                <literallayout class='monospaced'>
-     STATIC_ROOT = '/var/www/toaster/static_files/'
-                                </literallayout>
-                                </para></listitem>
-                            <listitem><para>
-                                Enable Build Mode by adding the following
-                                line to <filename>settings.py</filename>:
-                                <literallayout class='monospaced'>
-     BUILD_MODE=True
-                                </literallayout>
-                                </para></listitem>
-                        </itemizedlist>
-                        </para></listitem>
-                    <listitem><para>
-                        Add the database and user to the <filename>mysql</filename>
-                        server defined earlier:
-                        <literallayout class='monospaced'>
-     $ mysql -u root -p
-     mysql> CREATE DATABASE toaster_data;
-     mysql> CREATE USER 'toaster'@'localhost' identified by 'yourpasswordhere';
-     mysql> GRANT all on toaster_data.* to 'toaster'@'localhost';
-     mysql> quit
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para>
-                        Get Toaster to create the database schema,
-                        default data, and gather the statically-served files:
-                        <literallayout class='monospaced'>
-     $ cd  /var/www/toaster/poky/
-     $ ./bitbake/lib/toaster/manage.py syncdb
-     $ ./bitbake/lib/toaster/manage.py migrate
-     $ TOASTER_DIR=`pwd` TOASTER_CONF=./meta-yocto/conf/toasterconf.json ./bitbake/lib/toaster/manage.py checksettings
-     $ ./bitbake/lib/toaster/manage.py collectstatic
-                        </literallayout>
-                        </para>
+          <para>
+              Perform the following steps to install Toaster:
+              <orderedlist>
+                  <listitem><para>
+                      Checkout a copy of <filename>poky</filename>
+                      into the web server directory.
+                      You will be using <filename>/var/www/toaster</filename>:
+                      <literallayout class='monospaced'>
+   $ mkdir -p /var/www/toaster
+   $ cd /var/www/toaster/
+   $ git clone git://git.yoctoproject.org/poky
+   $ git checkout &DISTRO_NAME_NO_CAP;
+                      </literallayout>
+                      </para></listitem>
+                  <listitem><para>
+                      Initialize a virtual environment and install Toaster
+                      dependencies.
+                      Using a virtual environment keeps the Python packages
+                      isolated from your system-provided packages:
+                      <literallayout class='monospaced'>
+   $ cd /var/www/toaster/
+   $ virtualenv venv
+   $ source ./venv/bin/activate
+   $ pip install -r ./poky/bitbake/toaster-requirements.txt
+   $ pip install mysql
+   $ pip install MySQL-python
+                      </literallayout>
+                      <note>
+                          Isolating these packages is not required but is
+                          recommended.
+                          Alternatively, you can use your operating system's
+                          package manager to install the packages.
+                      </note>
+                      </para></listitem>
+                  <listitem><para>
+                      Configure Toaster by editing
+                      <filename>/var/www/toaster/poky/bitbake/lib/toaster/toastermain/settings.py</filename>
+                      as follows:
+                      <itemizedlist>
+                          <listitem><para>
+                              Edit the <filename>DATABASE</filename> settings:
+                              <literallayout class='monospaced'>
+   DATABASES = {
+       'default': {
+           'ENGINE': 'django.db.backends.mysql',
+           'NAME': 'toaster_data',
+           'USER': 'toaster',
+           'PASSWORD': 'yourpasswordhere',
+           'HOST': 'localhost',
+           'PORT': '3306',
+      }
+   }
+                              </literallayout>
+                              </para></listitem>
+                          <listitem><para>
+                              Edit the <filename>SECRET_KEY</filename>:
+                              <literallayout class='monospaced'>
+   SECRET_KEY = '<replaceable>your_secret_key</replaceable>'
+                              </literallayout>
+                              </para></listitem>
+                          <listitem><para>
+                              Edit the <filename>STATIC_ROOT</filename>:
+                              <literallayout class='monospaced'>
+   STATIC_ROOT = '/var/www/toaster/static_files/'
+                              </literallayout>
+                              </para></listitem>
+                      </itemizedlist>
+                      </para></listitem>
+                  <listitem><para>
+                      Add the database and user to the <filename>mysql</filename>
+                      server defined earlier:
+                      <literallayout class='monospaced'>
+   $ mysql -u root -p
+   mysql> CREATE DATABASE toaster_data;
+   mysql> CREATE USER 'toaster'@'localhost' identified by 'yourpasswordhere';
+   mysql> GRANT all on toaster_data.* to 'toaster'@'localhost';
+   mysql> quit
+                      </literallayout>
+                      </para></listitem>
+                  <listitem><para>
+                      Get Toaster to create the database schema,
+                      default data, and gather the statically-served files:
+                      <literallayout class='monospaced'>
+   $ cd  /var/www/toaster/poky/
+   $ ./bitbake/lib/toaster/manage.py syncdb
+   $ ./bitbake/lib/toaster/manage.py migrate
+   $ TOASTER_DIR=`pwd` TOASTER_CONF=./meta-poky/conf/toasterconf.json ./bitbake/lib/toaster/manage.py checksettings
+   $ ./bitbake/lib/toaster/manage.py collectstatic
+                      </literallayout>
+                      </para>
 
-                        <para>
-                            For the above set of commands, after moving to the
-                            <filename>poky</filename> directory,
-                            the <filename>syncdb</filename> and <filename>migrate</filename>
-                            commands ensure the database
-                            schema has had changes propagated correctly (i.e.
-                            migrations).
-                        </para>
+                      <para>
+                          For the above set of commands, after moving to the
+                          <filename>poky</filename> directory,
+                          the <filename>syncdb</filename> and <filename>migrate</filename>
+                          commands ensure the database
+                          schema has had changes propagated correctly (i.e.
+                          migrations).
+                      </para>
 
-                        <para>
-                            The next line sets the Toaster root directory
-                            <filename>TOASTER_DIR</filename> and the location of
-                            the Toaster configuration file
-                            <filename>TOASTER_CONF</filename>, which is
-                            relative to the Toaster root directory
-                            <filename>TOASTER_DIR</filename>.
-                            For more information on the Toaster configuration file
-                            <filename>TOASTER_CONF</filename>, see the
-                            <link linkend='toaster-json-files'>JSON Files</link>
-                            section of this manual.
-                        </para>
+                      <para>
+                          The next line sets the Toaster root directory
+                          <filename>TOASTER_DIR</filename> and the location of
+                          the Toaster configuration file
+                          <filename>TOASTER_CONF</filename>, which is
+                          relative to the Toaster root directory
+                          <filename>TOASTER_DIR</filename>.
+                          For more information on the Toaster configuration file
+                          <filename>TOASTER_CONF</filename>, see the
+                          <link linkend='toaster-json-files'>JSON Files</link>
+                          section of this manual.
+                      </para>
 
-                        <para>
-                            This line also runs the <filename>checksettings</filename>
-                            command, which configures the location of the Toaster
-                            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build directory</ulink>.
-                            The Toaster root directory <filename>TOASTER_DIR</filename>
-                            determines where the Toaster build directory
-                            is created on the file system.
-                            In the example above,
-                            <filename>TOASTER_DIR</filename> is set as follows:
-                            <literallayout class="monospaced">
-     /var/www/toaster/poky
-                            </literallayout>
-                            This setting causes the Toaster build directory to be:
-                            <literallayout class="monospaced">
-     /var/www/toaster/poky/build
-                            </literallayout>
-                        </para>
+                      <para>
+                          This line also runs the <filename>checksettings</filename>
+                          command, which configures the location of the Toaster
+                          <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build directory</ulink>.
+                          The Toaster root directory <filename>TOASTER_DIR</filename>
+                          determines where the Toaster build directory
+                          is created on the file system.
+                          In the example above,
+                          <filename>TOASTER_DIR</filename> is set as follows:
+                          <literallayout class="monospaced">
+   /var/www/toaster/poky
+                          </literallayout>
+                          This setting causes the Toaster build directory to be:
+                          <literallayout class="monospaced">
+   /var/www/toaster/poky/build
+                          </literallayout>
+                      </para>
 
-                        <para>
-                            Finally, the <filename>collectstatic</filename> command
-                            is a Django framework command that collects all the
-                            statically served files into a designated directory to
-                            be served up by the Apache web server.
-                        </para></listitem>
-                    <listitem><para>
-                        Add an Apache configuration file for Toaster to your Apache web
-                        server's configuration directory.
-                        If you are using Ubuntu or Debian, put the file here:
-                        <literallayout class='monospaced'>
-     /etc/apache2/conf-available/toaster.conf
-                        </literallayout>
-                        If you are using Fedora or RedHat, put it here:
-                        <literallayout class='monospaced'>
-     /etc/httpd/conf.d/toaster.conf
-                        </literallayout>
-                        Following is a sample Apache configuration for Toaster
-                        you can follow:
-                        <literallayout class='monospaced'>
-     Alias /static /var/www/toaster/static_files
-     &lt;Directory /var/www/toaster/static_files&gt;
-             Order allow,deny
-             Allow from all
-             Require all granted
-     &lt;/Directory&gt;
+                      <para>
+                          Finally, the <filename>collectstatic</filename> command
+                          is a Django framework command that collects all the
+                          statically served files into a designated directory to
+                          be served up by the Apache web server.
+                      </para></listitem>
+                  <listitem><para>
+                      Add an Apache configuration file for Toaster to your Apache web
+                      server's configuration directory.
+                      If you are using Ubuntu or Debian, put the file here:
+                      <literallayout class='monospaced'>
+   /etc/apache2/conf-available/toaster.conf
+                      </literallayout>
+                      If you are using Fedora or RedHat, put it here:
+                      <literallayout class='monospaced'>
+   /etc/httpd/conf.d/toaster.conf
+                      </literallayout>
+                      Following is a sample Apache configuration for Toaster
+                      you can follow:
+                      <literallayout class='monospaced'>
+   Alias /static /var/www/toaster/static_files
+   &lt;Directory /var/www/toaster/static_files&gt;
+           Order allow,deny
+           Allow from all
+           Require all granted
+   &lt;/Directory&gt;
 
-     WSGIDaemonProcess toaster_wsgi python-path=/var/www/toaster/poky/bitbake/lib/toaster:/var/www/toaster/venv/lib/python2.7/site-packages
+   WSGIDaemonProcess toaster_wsgi python-path=/var/www/toaster/poky/bitbake/lib/toaster:/var/www/toaster/venv/lib/python2.7/site-packages
 
-     WSGIScriptAlias / "/var/www/toaster/poky/bitbake/lib/toaster/toastermain/wsgi.py"
-     &lt;Location /&gt;
-         WSGIProcessGroup toastern_wsgi
-     &lt;/Location&gt;
-                        </literallayout>
-                        If you are using Ubuntu or Debian,
-                        you will need to enable the config and module for Apache:
-                        <literallayout class='monospaced'>
-     $ sudo a2enmod wsgi
-     $ sudo a2enconf toaster
-     $ chmod +x bitbake/lib/toaster/toastermain/wsgi.py
-                        </literallayout>
-                        Finally, restart Apache to make sure all new configuration
-                        is loaded.
-                        For Ubuntu and Debian use:
-                        <literallayout class='monospaced'>
-     $ sudo service apache2 restart
-                        </literallayout>
-                        For Fedora and RedHat use:
-                        <literallayout class='monospaced'>
-     $ sudo service httpd restart
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para>
-                        Install the build runner service.
-                        This service needs to be running in order to dispatch
-                        builds.
-                        Use this command:
-                        <literallayout class='monospaced'>
-     /var/www/toaster/poky/bitbake/lib/toaster/manage.py runbuilds
-                        </literallayout>
-                        Here is an example:
-                        <literallayout class='monospaced'>
-     #!/bin/sh
-     # toaster run builds dispatcher
-     cd /var/www/toaster/
-     source ./venv/bin/activate
-     ./bitbake/lib/toaster/manage.py runbuilds
-                        </literallayout>
-                        </para></listitem>
-                </orderedlist>
-                You can now open up a browser and start using Toaster.
-            </para>
-        </section>
-    </section>
+   WSGIScriptAlias / "/var/www/toaster/poky/bitbake/lib/toaster/toastermain/wsgi.py"
+   &lt;Location /&gt;
+       WSGIProcessGroup toastern_wsgi
+   &lt;/Location&gt;
+                      </literallayout>
+                      If you are using Ubuntu or Debian,
+                      you will need to enable the config and module for Apache:
+                      <literallayout class='monospaced'>
+   $ sudo a2enmod wsgi
+   $ sudo a2enconf toaster
+   $ chmod +x bitbake/lib/toaster/toastermain/wsgi.py
+                      </literallayout>
+                      Finally, restart Apache to make sure all new configuration
+                      is loaded.
+                      For Ubuntu and Debian use:
+                      <literallayout class='monospaced'>
+   $ sudo service apache2 restart
+                      </literallayout>
+                      For Fedora and RedHat use:
+                      <literallayout class='monospaced'>
+   $ sudo service httpd restart
+                      </literallayout>
+                      </para></listitem>
+                  <listitem><para>
+                      Install the build runner service.
+                      This service needs to be running in order to dispatch
+                      builds.
+                      Use this command:
+                      <literallayout class='monospaced'>
+   /var/www/toaster/poky/bitbake/lib/toaster/manage.py runbuilds
+                      </literallayout>
+                      Here is an example:
+                      <literallayout class='monospaced'>
+   #!/bin/sh
+   # toaster run builds dispatcher
+   cd /var/www/toaster/
+   source ./venv/bin/activate
+   ./bitbake/lib/toaster/manage.py runbuilds
+                      </literallayout>
+                      </para></listitem>
+              </orderedlist>
+              You can now open up a browser and start using Toaster.
+          </para>
+      </section>
+  </section>
 
+  <section id='using-the-toaster-web-interface'>
+      <title>Using the Toaster Web Interface</title>
 
+      <para>
+          The Toaster web interface allows you to do the following:
+          <itemizedlist>
+              <listitem><para>
+                  Browse published layers in the
+                  <ulink url='http://layers.openembedded.org'>OpenEmbedded Metadata Index</ulink>
+                  that are available for your selected version of the build
+                  system.
+                  </para></listitem>
+              <listitem><para>
+                  Import your own layers for building.
+                  </para></listitem>
+              <listitem><para>
+                  Add and remove layers from your configuration.
+                  </para></listitem>
+              <listitem><para>
+                  Set configuration variables.
+                  </para></listitem>
+              <listitem><para>
+                  Select a target or multiple targets to build.
+                  </para></listitem>
+              <listitem><para>
+                  Start your builds.
+                  </para></listitem>
+              <listitem><para>
+                  See what was built (recipes and packages) and what
+                  packages were installed into your final image.
+                  </para></listitem>
+              <listitem><para>
+                  Browse the directory structure of your image.
+                  </para></listitem>
+              <listitem><para>
+                  See the value of all variables in your build configuration,
+                  and which files set each value.
+                  </para></listitem>
+              <listitem><para>
+                  Examine error, warning and trace messages to aid in
+                  debugging.
+                  </para></listitem>
+              <listitem><para>
+                  See information about the BitBake tasks executed and
+                  reused during your build, including those that used
+                  shared state.
+                  </para></listitem>
+              <listitem><para>
+                  See dependency relationships between recipes, packages
+                  and tasks.
+                  </para></listitem>
+              <listitem><para>
+                  See performance information such as build time, task time,
+                  CPU usage, and disk I/O.
+                  </para></listitem>
+          </itemizedlist>
+      </para>
 
+      <section id='web-interface-videos'>
+          <title>Toaster Web Interface Videos</title>
 
-<!--    <section id='using-toaster-in-analysis-mode'>
-        <title>Using Toaster in Analysis Mode</title>
+          <para>
+              Following are several videos that show how to use the Toaster GUI:
+              <itemizedlist>
+                  <listitem><para><emphasis>Build Configuration:</emphasis>
+                      This
+                      <ulink url='https://www.youtube.com/watch?v=qYgDZ8YzV6w'>video</ulink>
+                      overviews and demonstrates build configuration for Toaster.
+                      </para></listitem>
+                  <listitem><para><emphasis>Build Custom Layers:</emphasis>
+                      This
+                      <ulink url='https://www.youtube.com/watch?v=QJzaE_XjX5c'>video</ulink>
+                      shows you how to build custom layers that are used with
+                      Toaster.
+                      </para></listitem>
+                  <listitem><para><emphasis>Toaster Homepage and Table Controls:</emphasis>
+                      This
+                      <ulink url='https://www.youtube.com/watch?v=QEARDnrR1Xw'>video</ulink>
+                      goes over the Toaster entry page, and provides
+                      an overview of the data manipulation capabilities of
+                      Toaster, which include search, sorting and filtering by
+                      different criteria.
+                      </para></listitem>
+                  <listitem><para><emphasis>Build Dashboard:</emphasis>
+                      This
+                      <ulink url='https://www.youtube.com/watch?v=KKqHYcnp2gE'>video</ulink>
+                      shows you the build dashboard, a page providing an
+                      overview of the information available for a selected build.
+                      </para></listitem>
+                  <listitem><para><emphasis>Image Information:</emphasis>
+                      This
+                      <ulink url='https://www.youtube.com/watch?v=XqYGFsmA0Rw'>video</ulink>
+                      walks through the information Toaster provides
+                      about images: packages installed and root file system.
+                      </para></listitem>
+                  <listitem><para><emphasis>Configuration:</emphasis>
+                      This
+                      <ulink url='https://www.youtube.com/watch?v=UW-j-T2TzIg'>video</ulink>
+                      provides Toaster build configuration information.
+                      </para></listitem>
+                  <listitem><para><emphasis>Tasks:</emphasis>
+                      This
+                      <ulink url='https://www.youtube.com/watch?v=D4-9vGSxQtw'>video</ulink>
+                      shows the information Toaster provides about the
+                      tasks run by the build system.
+                      </para></listitem>
+                  <listitem><para><emphasis>Recipes and Packages Built:</emphasis>
+                      This
+                      <ulink url='https://www.youtube.com/watch?v=x-6dx4huNnw'>video</ulink>
+                      shows the information Toaster provides about recipes
+                      and packages built.
+                      </para></listitem>
+                  <listitem><para><emphasis>Performance Data:</emphasis>
+                      This
+                      <ulink url='https://www.youtube.com/watch?v=qWGMrJoqusQ'>video</ulink>
+                      shows the build performance data provided by
+                      Toaster.
+                      </para></listitem>
+              </itemizedlist>
+          </para>
+      </section>
 
+      <section id='a-note-on-the-local-yocto-project-release'>
+          <title>Additional Information About the Local Yocto Project Release</title>
 
-        <para>
-            This section describes how to use Toaster in Analysis Mode
-            after setting Toaster up as a local instance or as a hosted
-            service.
-        </para>
+          <para>
+              This section only applies if you have set up Toaster
+              for local development, as explained in the
+              "<link linkend='starting-toaster-for-local-development'>Starting Toaster for Local Development</link>"
+              section.
+          </para>
 
-        <section id='setting-up-locally-and-running-in-analysis-mode'>
-            <title>Setting Up Locally and Running in Analysis Mode</title>
+          <para>
+              When you create a project in Toaster, you will be asked to
+              provide a name and to select a Yocto Project release.
+              One of the release options you will find is called
+              "Local Yocto Project".
+              <imagedata fileref="figures/new-project.png" align="center" width="9in" />
+          </para>
 
-            <para>
-                Follow these steps to set up a local instance of Toaster and
-                then run in Analysis Mode:
-                <orderedlist>
-                    <listitem><para><emphasis>Prepare your Build System:</emphasis>
-                        Be sure your system has the Toaster requirements
-                        by following the steps in the
-                        "<link linkend='toaster-establishing-toaster-system-dependencies'>Establishing Toaster System Dependencies</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Get Set Up to Use the Yocto Project:</emphasis>
-                        Get the requirements set up so that you can use the
-                        Yocto Project to build images.
-                        See the
-                        "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
-                        section in the Yocto Project Quick Start for information.
-                        </para></listitem>
-                    <listitem><para><emphasis>Source your Build Environment Setup Script:</emphasis>
-                        From your
-                        <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
-                        (e.g. <filename>poky/build</filename>), source the build
-                        environment setup script
-                        <ulink url="&YOCTO_DOCS_REF_URL;#structure-core-script"><filename>&OE_INIT_FILE;</filename></ulink>
-                        or
-                        <ulink url="&YOCTO_DOCS_REF_URL;#structure-memres-core-script"><filename>oe-init-build-env-memres</filename></ulink>.
-                        </para></listitem>
-                    <listitem><para><emphasis>Start Toaster:</emphasis>
-                        From the
-                        <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
-                        start Toaster:
-                        <literallayout class='monospaced'>
-     $ source toaster start
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Start Your Build Using BitBake:</emphasis>
-                        Use the <filename>bitbake</filename> command to start your
-                        build.
-                        Here is an example that builds the
-                        <filename>core-image-minimal</filename> image:
-                        <literallayout class='monospaced'>
-     $ bitbake core-image-minimal
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Open Your Browser:</emphasis>
-                        Open your browser and visit
-                        <filename>http://host:port/toastergui</filename>.
-                        For host and port values, see the output of the
-                        <filename>source toaster start</filename> command.
-                        For information on how to use Toaster, see the
-                        "<link linkend='using-the-toaster-web-interface'>Using the Toaster Web Interface</link>"
-                        section.
-                        </para></listitem>
-                </orderedlist>
-            </para>
+          <para>
+              When you select the "Local Yocto Project" release, Toaster
+              will run your builds using the local Yocto
+              Project clone you have in your computer: the same clone
+              you are using to run Toaster.
+              Unless you manually update
+              this clone, your builds will always use the same Git revision.
+          </para>
 
-            <para>
+          <para>
+              If you select any of the other release options, Toaster
+              will fetch the tip of your selected release from the upstream
+              <ulink url='https://git.yoctoproject.org'>Yocto Project repository</ulink>
+              every time you run a build.
+              Fetching this tip effectively
+              means that if your selected release is updated upstream, the
+              Git revision you are using for your builds will change.
+              If you are doing development locally, you might not want this
+              change to happen.
+              In that case, the "Local Yocto Project"
+              release might be the right choice.
+          </para>
 
-            </para>
-        </section>
+          <para>
+              However, the "Local Yocto Project" release
+              will not provide you with any compatible layers, other than the
+              three core layers that come with the Yocto Project:
+              <itemizedlist>
+                  <listitem><para>
+                      <ulink url='http://layers.openembedded.org/layerindex/branch/master/layer/openembedded-core/'>openembedded-core</ulink>
+                  </para></listitem>
+                  <listitem><para>
+                      <ulink url='http://layers.openembedded.org/layerindex/branch/master/layer/meta-poky/'>meta-poky</ulink>
+                  </para></listitem>
+                  <listitem><para>
+                      <ulink url='http://layers.openembedded.org/layerindex/branch/master/layer/meta-yocto-bsp/'>meta-yocto-bsp</ulink>
+                  </para></listitem>
+              </itemizedlist>
+              <imagedata fileref="figures/compatible-layers.png" align="center" width="9in" />
+          </para>
 
-        <section id='setting-up-a-hosted-service-and-running-in-analysis-mode'>
-            <title>Setting Up a Hosted Service and Running in Analysis Mode</title>
-
-            <para>
-                A hosted service resides on a shared server and allows
-                multiple users to take advantage of Toaster.
-            </para>
-
-            <para>
-                In a production environment, you might want to have multiple
-                local instances of the Toaster Logging Interface running on
-                various remote build machines, and have those local instances
-                access and use a single web server.
-                To do this, you need to do the following:
-                <itemizedlist>
-                    <listitem><para>
-                        Maintain a common SQL database.
-                        </para></listitem>
-                    <listitem><para>
-                        Set up separate instances of BitBake servers
-                        and Toaster Logging Interfaces for each of those
-                        separate BitBake servers.
-                        </para></listitem>
-                </itemizedlist>
-            </para>
-
-            <para>
-                The common SQL database allows the Web server to show data from
-                all the various BitBake builds.
-                Setting the SQL database outside of any
-                <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
-                maintains a separation between the various builds.
-                The BitBake servers, the SQL server, and the Web server or
-                servers can be run on separate machines.
-            </para>
-
-            <para>
-                Follow these steps to set up and run a hosted service and run
-                Toaster in Analysis Mode:
-                <note>
-                    The steps assume a Toaster installation path of
-                    <filename>/opt/bitbake/</filename>.
-                </note>
-                <orderedlist>
-                    <listitem><para><emphasis>Prepare your Build System:</emphasis>
-                        Be sure your system has the Toaster requirements
-                        by following the steps in the
-                        "<link linkend='toaster-establishing-toaster-system-dependencies'>Establishing Toaster System Dependencies</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Get Set Up to Use the Yocto Project:</emphasis>
-                        Get the requirements set up so that you can use the
-                        Yocto Project to build images.
-                        See the
-                        "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
-                        section in the Yocto Project Quick Start for information.
-                        </para></listitem>
-                    <listitem><para><emphasis>Install and Set up the Database Server:</emphasis>
-                        You can use any SQL server out of the box.
-                        It is recommended that you use
-                        <filename>mysql-server</filename> because it has
-                        the advantages of advanced SQL features along with a
-                        fast and reliable database.
-                        However, setting up <filename>mysql-server</filename>
-                        is more complex and might require a Database
-                        Administrator to tune it.</para>
-                        <para>Another supported database backend is
-                        <filename>sqlite3</filename>.
-                        With <filename>sqlite3</filename>, you have the
-                        advantage of no configuration and an easy installation.
-                        However, Toaster still requires direct access to the
-                        backend.
-                        The <filename>sqlite</filename> backend is also slower
-                        as compared to <filename>mysql-server</filename>, and
-                        has no transactional support.</para>
-                        <para>You should set up proper username and password
-                        access on the shared database for everyone that will
-                        be using Toaster.
-                        You need administrator rights for the root account,
-                        which is not the same thing as root access on the
-                        machine.
-                        Here is an example that installs
-                        <filename>mysql-server</filename> and sets up
-                        some user accounts and the database.
-                        <literallayout class='monospaced'>
-     $ apt-get install mysql-server
-     $ mysql -u root
-     mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
-     mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
-     mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
-     mysql> CREATE DATABASE 'toaster';
-                        </literallayout>
-                        You need a separate clone of the
-                        <ulink url='&YOCTO_DOCS_DEV_URL;#source-repositories'>Source Repositories</ulink>
-                        for the Database Server.
-                        This clone is only used for getting the latest Toaster
-                        files.
-                        You can set this up using the following Git command.
-                        Be sure to set up the directory outside of any
-                        Build Directories.
-                        <literallayout class='monospaced'>
-     $ git clone git://git.yoctoproject.org/poky
-                        </literallayout>
-                        In the separately cloned tree for the Database Server,
-                        edit the
-                        <filename>bitbake/lib/toaster/toastermain/settings.py</filename>
-                        file so that the <filename>DATABASES</filename> value
-                        points to the previously created database server.
-                        Use the username and password established
-                        earlier.
-                        Here is an example:
-                        <literallayout class='monospaced'>
-     $ cat /opt/bitbake/lib/toaster/toastermain/settings.py
-        ...
-     DATABASES = {
-         'default': {
-             'ENGINE': 'django.db.backends.mysql',
-             'NAME': 'toaster',
-             'USER': 'newuser',
-             'PASSWORD': 'password',
-             'HOST': '192.168.0.25',
-             'PORT': '3306',
-         }
-        ...
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Install and Set Up the Web Server:</emphasis>
-                        For a production environment, it is recommended that
-                        you install and set up a front-end web server.
-                        This server allows for load balancing and
-                        multi-threading over Toaster and
-                        <ulink url='https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/'><filename>django</filename> WSGI</ulink>.
-                        Here is an example that uses Apache web server.
-                        <literallayout class='monospaced'>
-     $ apt-get install apache2 libapache2-mod-wsgi
-     $ a2enmod wsgi
-     $ cat /etc/apache2/sites-available/000-default.conf
-
-        ...
-
-     # the WSGIPythonPath is global
-     WSGIPythonPath /opt/bitbake/lib/toaster/
-
-        ...
-
-     #snip - in VirtualHost
-     WSGIScriptAlias / /opt/bitbake/lib/toaster/toastermain/wsgi.py
-
-     &lt;Directory //opt/bitbake/lib/toaster/toastermain/&gt;
-         &lt;Files wsgi.py&gt;
-             Require all granted
-         &lt;/Files&gt;
-     &lt;/Directory&gt;
-
-        ...
-                        </literallayout>
-                        You need to collect static media from Toaster and
-                        continue configuring Apache to serve that static
-                        media:
-                        <literallayout class='monospaced'>
-     $ mkdir /var/www.html/static &amp;&amp; cd /var/www.html/static
-     $ /opt/bitbake/lib/toaster/manage.py collectstatic
-     $ cat /etc/apache2/sites-available/000-default.conf
-
-        ...
-
-     # in VirtualHost, AHEAD of the WSGIScriptAlias definition
-     Alias /static/ /var/www.html/static/
-
-     &lt;Directory /var/www.html/static/&gt;
-     Require all granted
-     &lt;/Directory&gt;
-
-        ...
-
-     WSGIScript Alias / /opt/bitbake/lib/toaster/toastermain/wsgi.py
-
-        ...
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Start Toaster:</emphasis>
-                        Synchronize the databases for toaster, and then start
-                        up the web server.
-                        Here is an example that continues with the assumed
-                        components from the previous steps:
-                        <literallayout class='monospaced'>
-     $ /opt/bitbake/lib/toaster/manage.py syncdb
-     $ /opt/bitbake/lib/toaster/manage.py migrate orm
-     $ /opt/bitbake/lib/toaster/manage.py migrate bldcontrol
-
-     $ service apache2 restart
-                        </literallayout>
-                        You can find general documentation on
-                        <filename>manage.py</filename> at the
-                        <ulink url='https://docs.djangoproject.com/en/1.7/ref/django-admin/'>Django</ulink>
-                        site.
-                        For reference information on Toaster-specific
-                        <filename>manage.py</filename> commands,
-                        see the
-                        "<link linkend='toaster-useful-commands'>Useful Commands</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Enable Build Logging to the Common SQL Server for Each Build Directory you are Using:</emphasis>
-                        You need to make sure that the
-                        <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-toaster'><filename>toaster</filename></ulink>
-                        class and build history are enabled.
-                        This is done in a
-                        <filename>toaster.conf</filename> file that is
-                        created automatically by the toaster
-                        <filename>start</filename> command,
-                        and that lives inside the
-                        <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
-                        in <filename>/conf/toaster.conf</filename>.</para>
-                        <para>That file should include the following line:
-                        <literallayout class='monospaced'>
-     INHERIT += "toaster buildhistory"
-                        </literallayout>
-                        For information on build history, see the
-                        "<ulink url='&YOCTO_DOCS_REF_URL;#maintaining-build-output-quality'>Maintaining Build Output Quality</ulink>"
-                        section in the Yocto Project Development
-                        Manual.</para>
-                        <para>You also need to point to the database that you set
-                        up in step 3.
-                        You can do this by exporting the <filename>DATABASE_URL</filename>
-                        variable as follows:
-                        <literallayout class='monospaced'>
-     export DATABASE_URL=mysql://newuser:password@192.168.0.25:3306/toaster
-                        </literallayout>
-                        This example assumes that you are using
-                        <filename>mysql-server</filename>.
-                        The IP address should be the IP address of your
-                        database server.
-                        </para></listitem>
-                    <listitem><para><emphasis>Source your Build Environment Setup Script:</emphasis>
-                        From your
-                        <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
-                        on each of the build systems,
-                        (e.g. <filename>poky/build</filename>), source the
-                        build environment setup script (i.e.
-                        <ulink url="&YOCTO_DOCS_REF_URL;#structure-core-script"><filename>&OE_INIT_FILE;</filename></ulink>
-                        or
-                        <ulink url="&YOCTO_DOCS_REF_URL;#structure-memres-core-script"><filename>oe-init-build-env-memres</filename></ulink>).
-                        </para></listitem>
-                    <listitem><para><emphasis>Start the BitBake Server:</emphasis>
-                        Start the BitBake server using the following command:
-                        <literallayout class='monospaced'>
-     $ bitbake &dash;&dash;postread conf/toaster.conf &dash;&dash;server-only -t xmlrpc -B localhost:0 &amp;&amp; export BBSERVER=localhost:-1
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Start the Logging Server:</emphasis>
-                        Start the Toaster Logging Interface using the following
-                        command:
-                        <literallayout class='monospaced'>
-     $ nohup bitbake &dash;&dash;observe-only -u toasterui >toaster_ui.log &amp;
-                        </literallayout>
-                        <note>
-                            No hard-coded ports are used in the BitBake options
-                            as there is enough code to run
-                            <filename>autodiscovery</filename> for BitBake
-                            ports.
-                            Doing so prevents collisions.
-                        </note>
-                        </para></listitem>
-                    <listitem><para><emphasis>Start Builds Using BitBake:</emphasis>
-                        Use the <filename>bitbake</filename> command to start a
-                        build on a build system.
-                        Here is an example that builds the
-                        <filename>core-image-minimal</filename> image:
-                        <literallayout class='monospaced'>
-     $ bitbake core-image-minimal
-                        </literallayout>
-                        When you are finished with a build in a given
-                        Build Directory, be sure to <filename>kill</filename>
-                        the BitBake server for that build area:
-                        <literallayout class='monospaced'>
-     $ bitbake -m
-                        </literallayout>
-                        </para></listitem>
-                </orderedlist>
-            </para>
-
-            <para>
-                For information on how to use the Toaster web interface,
-                see the
-                "<link linkend='using-the-toaster-web-interface'>Using the Toaster Web Interface</link>"
-                section.
-            </para>
-        </section>
-    </section>
-
-    <section id='using-toaster-in-build-mode'>
-        <title>Using Toaster in Build Mode</title>
-
-        <para>
-            This section describes how to use Toaster in Build Mode
-            after setting Toaster up as a local instance or as a hosted
-            service.
-        </para>
-
-        <section id='setting-up-locally-and-running-in-build-mode'>
-            <title>Setting Up Locally and Running in Build Mode</title>
-
-            <para>
-                Follow these steps to set up a local instance of Toaster and
-                then run in Build Mode:
-                <orderedlist>
-                    <listitem><para><emphasis>Prepare your Build System:</emphasis>
-                        Be sure your system has the Toaster requirements
-                        by following the steps in the
-                        "<link linkend='toaster-establishing-toaster-system-dependencies'>Establishing Toaster System Dependencies</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Get Set Up to Use the Yocto Project:</emphasis>
-                        Get the requirements set up so that you can use the
-                        Yocto Project to build images.
-                        See the
-                        "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
-                        section in the Yocto Project Quick Start for information.
-                        </para></listitem>
-                    <listitem><para><emphasis>Start Toaster:</emphasis>
-                        From the root of the source directory (e.g
-                        <filename>poky/</filename>), run the following command:
-                        <literallayout class='monospaced'>
-     $ bitbake/bin/toaster
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Create a Superuser:</emphasis>
-                        Django will ask you if you want to create a superuser.
-                        You can skip this step, but it is recommended that you
-                        create a superuser.
-                        You can use the superuser to access the Django
-                        administration interface and make changes to the
-                        Toaster configuration.
-                        </para></listitem>
-                    <listitem><para><emphasis>Select the Build Log Directory:</emphasis>
-                        Toaster asks you to specify the directory where you
-                        want to store the build log files.
-                        Choosing a directory for these files makes sure they
-                        are always available to you.
-                        If you do not choose a directory, the logs can
-                        disappear (e.g. deleting the Build Directory).</para>
-                        <para>When Toaster prompts you for the Build Log
-                        directory, you can select the suggested default
-                        or provide a path to a different directory.
-                        </para></listitem>
-                    <listitem><para><emphasis>Specify the Layer Checkout Directory:</emphasis>
-                        Toaster asks you to specify the directory into which
-                        layers are checked out.
-                        Toaster clones any layers needed for your builds
-                        inside this directory.</para>
-                        <para>When Toaster prompts you for the Layer
-                        checkout directory, you can select the suggested
-                        default or provide a path to a different directory.
-                        </para></listitem>
-                    <listitem><para><emphasis>Specify the Build Directory Path:</emphasis>
-                        Toaster asks you to specify the path to the
-                        Build Directory.
-                        You can select the suggested default or provide a
-                        path to a different directory.
-                        </para></listitem>
-                    <listitem><para><emphasis>Choose Whether or not to Import a Default Toaster Configuration File:</emphasis>
-                        Toaster asks you if you want to import a default
-                        Toaster configuration file.
-                        Toaster configurations are stored in
-                        JSON files called
-                        <filename>toasterconf.json</filename>.
-                        For information on JSON files, see the
-                        "<link linkend='toaster-json-files'>JSON Files</link>"
-                        section.</para>
-                        <para>You can skip importing a configuration file
-                        by entering "0" at the prompt.
-                        However, it is recommended that you import one of the
-                        configuration files listed during this step.
-                        You can always amend the imported configuration during
-                        a later stage through the Django administration
-                        interface.</para>
-                        <para>For general information on Django, see the
-                        available
-                        <ulink url='https://docs.djangoproject.com/en/1.7/'>documentation</ulink>.
-                        You can also find information on Toaster-specific
-                        <filename>manage.py</filename> commands in the
-                        "<link linkend='toaster-useful-commands'>Useful Commands</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Open the Browser:</emphasis>
-                        If no browser window appears, open your favorite
-                        browser and enter the following:
-                        <literallayout class='monospaced'>
-     http://localhost:8000/toastergui
-                        </literallayout>
-                        You can now use the Toaster web interface.
-                        </para></listitem>
-                </orderedlist>
-            </para>
-        </section>
-
-        <section id='setting-up-a-hosted-service-and-running-in-build-mode'>
-            <title>Setting Up a Hosted Service and Running in Build Mode</title>
-
-            <para>
-                Follow these steps to set up a hosted service and run Toaster
-                in Build Mode:
-                <orderedlist>
-                    <listitem><para><emphasis>Prepare your Build System:</emphasis>
-                        Be sure your system has the Toaster requirements
-                        by following the steps in the
-                        "<link linkend='toaster-establishing-toaster-system-dependencies'>Establishing Toaster System Dependencies</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Get Set Up to Use the Yocto Project:</emphasis>
-                        Get the requirements set up so that you can use the
-                        Yocto Project to build images.
-                        See the
-                        "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
-                        section in the Yocto Project Quick Start for information.
-                        </para></listitem>
-                    <listitem><para><emphasis>Be Sure Management is Enabled:</emphasis>
-                        If you are running Toaster under Apache, you need to
-                        be sure management is enabled.
-                        To enable management, set
-                        <filename>MANAGED</filename> to "True" by adding
-                        the following to the
-                        <filename>bitbake/lib/toaster/settings.py</filename>
-                        file:
-                        <literallayout class='monospaced'>
-     MANAGED="True"
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Set Up Toaster for Normal Usage:</emphasis>
-                        You need to configure each build environment, layer
-                        sources, and BitBake versions.</para>
-                        <para>Verify that your releases have been loaded correctly by
-                        using the Toaster web interface to create a new
-                        project.
-                        Check the "Releases" dropdown menu to be sure your
-                        newly specified releases exist.</para>
-                        <para>If you want to use the administration interface
-                        for this step, here is a set of example commands
-                        with some descriptions as an example:
-                        <literallayout class='monospaced'>
-     # Create the user under which the builds will run
-     $ adduser poky
-
-     # Bring up the administration interface
-     $xdg-open http://<replaceable>server-address</replaceable>/admin/
-
-     # Login with the admin user previously created
-
-     # Go to the BuildEnvironment object in Build Environments and
-     # set address to local host, sourcedir to /home/poky, and
-     # builddir to /home/pokybuild.
-     #
-     # Save your changes and exit
-
-     # Go to Home, Layer Sources and select add Layer Source
-     # Name: OpenEmbedded, Sourcetype: layerindex,
-     # Apiurl: http://layers openembedded.org/layerindex/api/
-     # Save your changes and exit
-
-     # Go to Home, Bitbake Versions, Add bitbake version;
-     # Take version information from: http://git.openembedded.org/bitbake/refs/heads,
-     # This example assumes "master" version.
-     # set Name: master, Giturl git://git.openembedded.org/bitbake
-     # branch master, dirpath /
-     # Save your changes and exit
-                        </literallayout>
-                        You also need to configure the project releases, the
-                        default variables, and update information from the
-                        layer index.
-                        Continuing with the example:
-                        <literallayout class='monospaced'>
-     # Go to Home, Releases, Add release
-     # set Name: master, Description: Current master release, select Bitbake Version,
-     # and Branch: master
-     # Save your changes and exit
-
-     # Go to Home, Toaster Settings, select the Setting for DEFAULT_RELEASE
-     # set Helptext: This selects the default release., Value: master
-     # Save your changes and exit
-
-     # Go to Home, Bitbake Versions, Add bitbake version;
-     # take version information from : http://git.openembedded.org/bitbake/refs/heads,
-     # this manual assumes the master version
-     # set Name: master, Giturl git://git.openembedded.org/bitbake
-     # branch master, dirpath /
-     # Save your changes and exit
-
-     # Update the information
-     # bitbake/lib/toaster/manage.py lsupdates
-                        </literallayout>
-                        For reference information on Toaster-specific
-                        <filename>manage.py</filename> commands, see the
-                        "<link linkend='toaster-useful-commands'>Useful Commands</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Install and Set up the Database Server:</emphasis>
-                        You can use any SQL server out of the box.
-                        It is recommended that you use
-                        <filename>mysql-server</filename> because it has
-                        the advantages of advanced SQL features along with a
-                        fast and reliable database.
-                        However, setting up <filename>mysql-server</filename>
-                        is more complex and might require a Database
-                        Administrator to tune it.</para>
-                        <para>Another supported database backend is
-                        <filename>sqlite3</filename>.
-                        With <filename>sqlite3</filename>, you have the
-                        advantage of no configuration and an easy installation.
-                        However, Toaster still requires direct access to the
-                        backend.
-                        The <filename>sqlite</filename> backend is also slower
-                        as compared to <filename>mysql-server</filename>, and
-                        has no transactional support.</para>
-                        <para>You should set up proper username and password
-                        access on the shared database for everyone that will
-                        be using Toaster.
-                        You need administrator rights for the root account,
-                        which is not the same thing as root access on the
-                        machine.
-                        Here is an example that installs
-                        <filename>mysql-server</filename> and sets up
-                        some user accounts and the database.
-                        <literallayout class='monospaced'>
-     $ apt-get install mysql-server
-     $ mysql -u root
-     mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
-     mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
-     mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
-     mysql> CREATE DATABASE 'toaster';
-                        </literallayout>
-                        You need a separate clone of the
-                        <ulink url='&YOCTO_DOCS_DEV_URL;#source-repositories'>Source Repositories</ulink>
-                        for the Database Server.
-                        This clone is only used for getting the latest Toaster
-                        files.
-                        You can set this up using the following Git command.
-                        Be sure to set up the directory outside of any
-                        Build Directories.
-                        <literallayout class='monospaced'>
-     $ git clone git://git.yoctoproject.org/poky
-                        </literallayout>
-                        In the separately cloned tree for the Database Server,
-                        edit the
-                        <filename>bitbake/lib/toaster/toastermain/settings.py</filename>
-                        file so that the <filename>DATABASES</filename> value
-                        points to the previously created database server.
-                        Use the username and password established
-                        earlier.
-                        Here is an example:
-                        <literallayout class='monospaced'>
-     $ cat /opt/bitbake/lib/toaster/toastermain/settings.py
-        ...
-     DATABASES = {
-         'default': {
-             'ENGINE': 'django.db.backends.mysql',
-             'NAME': 'toaster',
-             'USER': 'newuser',
-             'PASSWORD': 'password',
-             'HOST': '192.168.0.25',
-             'PORT': '3306',
-         }
-        ...
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Create the Database</emphasis>
-                        Use the following commands to create the default
-                        database structure:
-                        <literallayout class='monospaced'>
-     $ bitbake/lib/toaster/manage.py syncdb
-     $ bitbake/lib/toaster/manage.py migrate orm
-     $ bitbake/lib/toaster/manage.py migrate bldcontrol
-                        </literallayout>
-                        The interface asks you if you want to create a
-                        superuser.
-                        Do not skip this step.
-                        You will use the superuser account to access the
-                        administration interface and make changes to the
-                        Toaster configuration.
-                        </para></listitem>
-                    <listitem><para><emphasis>Select Where the Build Process Takes Place:</emphasis>
-                        You need to create three directories for storing
-                        build artifacts, downloading sources, and running
-                        builds.
-                        All three directories need to be writable by
-                        the user, which is "poky" in this example.
-                        The build artifacts directory needs to readable by the
-                        apache user.
-                        You also need free disk space in the range of
-                        100 Gbytes.
-                        Following are three suggested directories:
-                        <literallayout class='monospaced'>
-     /home/poky/buildartifacts/
-     /home/poky/build/
-     /home/poky/sources/
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Set Up the <filename>toasterconf.json</filename> File:</emphasis>
-                        <ulink url='https://wiki.yoctoproject.org/wiki/File:Toasterconf.json.txt.patch'>Download the hosted <filename>toasterconf.json</filename> file</ulink>
-                        from the Yocto Project wiki and edit it to suit your
-                        environment.
-                        For information on the relevant sections of the file,
-                        see the
-                        "<link linkend='toaster-json-files'>JSON Files</link>"
-                        section.</para>
-                        <para>After editing the file, load it by running
-                        the following:
-                        <literallayout class='monospaced'>
-     $ bitbake/lib/toaster/manage.py loadconf path-to-toasterconf.json-file
-                        </literallayout>
-                        For reference information on Toaster-specific
-                        <filename>manage.py</filename>, see the
-                        "<link linkend='toaster-useful-commands'>Useful Commands</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Check the Toaster Settings:</emphasis>
-                        Configure the build environment by running the
-                        following:
-                        <literallayout class='monospaced'>
-     $ bitbake/lib/toaster/manage.py checksettings
-                        </literallayout>
-                        When prompted, paste in the directory paths created
-                        previously during Step 7.
-                        For reference information on Toaster-specific
-                        <filename>manage.py</filename>, see the
-                        "<link linkend='toaster-useful-commands'>Useful Commands</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Install and Set Up the Web Server:</emphasis>
-                        For a production environment, it is recommended that
-                        you install and set up a front-end web server.
-                        This server allows for load balancing and
-                        multi-threading over Toaster and
-                        <ulink url='https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/'><filename>django</filename> WSGI</ulink>.
-                        Here is an example that uses Apache web server:
-                        <literallayout class='monospaced'>
-     $ apt-get install apache2 libapache2-mod-wsgi
-     $ a2enmod wsgi
-     $ cat /etc/apache2/sites-available/000-default.conf
-
-        ...
-
-     # the WSGIPythonPath is global
-     WSGIPythonPath /opt/bitbake/lib/toaster/
-
-        ...
-
-     #snip - in VirtualHost
-     WSGIScriptAlias / /opt/bitbake/lib/toaster/toastermain/wsgi.py
-
-     &lt;Directory //opt/bitbake/lib/toaster/toastermain/&gt;
-         &lt;Files wsgi.py&gt;
-             Require all granted
-         &lt;/Files&gt;
-     &lt;/Directory&gt;
-
-        ...
-                        </literallayout>
-                        You need to collect static media from Toaster and
-                        continue configuring Apache to serve that static
-                        media:
-                        <literallayout class='monospaced'>
-     $ mkdir /var/www.html/static &amp;&amp; cd /var/www.html/static
-     $ /opt bitbake/lib/toaster/manage.py collectstatic
-     $ cat /etc/apache2/sites-available/000-default.conf
-
-        ...
-
-     # in VirtualHost, AHEAD of the WSGIScriptAlias definition
-     Alias /static/ /var/www.html/static/
-
-     &lt;Directory /var/www.html/static/&gt;
-     Require all granted
-     &lt;/Directory&gt;
-
-        ...
-
-     WSGIScript Alias / /opt/bitbake/lib/toaster/toastermain/wsgi.py
-
-        ...
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Start Toaster:</emphasis>
-                        Synchronize the databases for Toaster, and then start
-                        up the web server.
-                        Here is an example that continues with the assumed
-                        components from the previous steps:
-                        <literallayout class='monospaced'>
-     $ /opt/bitbake/lib/toaster/manage.py syncdb
-     $ /opt/bitbake/lib/toaster/manage.py migrate orm
-     $ /opt/bitbake/lib/toaster/manage.py migrate bldcontrol
-
-     $ service apache2 restart
-                        </literallayout>
-                        For reference information on the
-                        <filename>manage.py</filename> commands used here,
-                        see the
-                        "<link linkend='toaster-useful-commands'>Useful Commands</link>"
-                        section.
-                        </para></listitem>
-                    <listitem><para><emphasis>Set up Build Control and Open the Web Interface:</emphasis>
-                        You need to run the build control manager.
-                        You can do this as shown in the following example:
-                        <literallayout class='monospaced'>
-     # as the "poky" user, start the runbuilds command in a loop (or put it in crontab!)
-     $ sudo -i -u poky
-     $ while true; do /opt/bitbake/lib/toaster/manage.py runbuilds; sleep 10; done
-
-     # open up the web interface
-     $ xdg-open http://[server-address]/toastergui/
-                        </literallayout>
-                        It is suggested that you enable build control by
-                        setting <filename>runbuilds</filename> in the
-                        <filename>crontab</filename> as follows:
-                        <literallayout class='monospaced'>
-     $ crontab -l
-     * * * * *  /opt/bitbake/lit/toaster/manage.py runbuilds
-                        </literallayout>
-                        </para></listitem>
-                    <listitem><para><emphasis>Open the Browser:</emphasis>
-                        Once the Apache server is running, connect to it with
-                        your favorite browser and verify that the Toaster
-                        interface comes up:
-                        <literallayout class='monospaced'>
-     http://localhost:8000/toastergui
-                        </literallayout>
-                        You can track accesses and errors in the Apache
-                        service logs.
-                        </para></listitem>
-                </orderedlist>
-            </para>
-        </section>
-    </section>
--->
-
-    <section id='using-the-toaster-web-interface'>
-        <title>Using the Toaster Web Interface</title>
-
-        <para>
-            The Toaster web interface allows you to do the following:
-            <itemizedlist>
-                <listitem><para>
-                    Browse published layers in the
-                    <ulink url='http://layers.openembedded.org'>OpenEmbedded Metadata Index</ulink>
-                    that are available for your selected version of the build
-                    system.
-                    </para></listitem>
-                <listitem><para>
-                    Import your own layers for building.
-                    </para></listitem>
-                <listitem><para>
-                    Add and remove layers from your configuration.
-                    </para></listitem>
-                <listitem><para>
-                    Set configuration variables.
-                    </para></listitem>
-                <listitem><para>
-                    Select a target or multiple targets to build.
-                    </para></listitem>
-                <listitem><para>
-                    Start your builds.
-                    </para></listitem>
-                <listitem><para>
-                    See what was built (recipes and packages) and what
-                    packages were installed into your final image.
-                    </para></listitem>
-                <listitem><para>
-                    Browse the directory structure of your image.
-                    </para></listitem>
-                <listitem><para>
-                    See the value of all variables in your build configuration,
-                    and which files set each value.
-                    </para></listitem>
-                <listitem><para>
-                    Examine error, warning and trace messages to aid in
-                    debugging.
-                    </para></listitem>
-                <listitem><para>
-                    See information about the BitBake tasks executed and
-                    reused during your build, including those that used
-                    shared state.
-                    </para></listitem>
-                <listitem><para>
-                    See dependency relationships between recipes, packages
-                    and tasks.
-                    </para></listitem>
-                <listitem><para>
-                    See performance information such as build time, task time,
-                    CPU usage, and disk I/O.
-                    </para></listitem>
-            </itemizedlist>
-        </para>
-
-        <section id='web-interface-videos'>
-            <title>Toaster Web Interface Videos</title>
+          <para>
+              If you want to build any other layers, you will need to
+              manually import them into your Toaster project, using the
+              "Import layer" page.
+              <imagedata fileref="figures/import-layer.png" align="center" width="9in" />
+          </para>
 
-            <para>
-                Following are several videos that show how to use the Toaster GUI:
-                <itemizedlist>
-                    <listitem><para><emphasis>Build Configuration:</emphasis>
-                        This
-                        <ulink url='https://www.youtube.com/watch?v=qYgDZ8YzV6w'>video</ulink>
-                        overviews and demonstrates build configuration for Toaster.
-                        </para></listitem>
-                    <listitem><para><emphasis>Build Custom Layers:</emphasis>
-                        This
-                        <ulink url='https://www.youtube.com/watch?v=QJzaE_XjX5c'>video</ulink>
-                        shows you how to build custom layers that are used with
-                        Toaster.
-                        </para></listitem>
-                    <listitem><para><emphasis>Toaster Homepage and Table Controls:</emphasis>
-                        This
-                        <ulink url='https://www.youtube.com/watch?v=QEARDnrR1Xw'>video</ulink>
-                        goes over the Toaster entry page, and provides
-                        an overview of the data manipulation capabilities of
-                        Toaster, which include search, sorting and filtering by
-                        different criteria.
-                        </para></listitem>
-                    <listitem><para><emphasis>Build Dashboard:</emphasis>
-                        This
-                        <ulink url='https://www.youtube.com/watch?v=KKqHYcnp2gE'>video</ulink>
-                        shows you the build dashboard, a page providing an
-                        overview of the information available for a selected build.
-                        </para></listitem>
-                    <listitem><para><emphasis>Image Information:</emphasis>
-                        This
-                        <ulink url='https://www.youtube.com/watch?v=XqYGFsmA0Rw'>video</ulink>
-                        walks through the information Toaster provides
-                        about images: packages installed and root file system.
-                        </para></listitem>
-                    <listitem><para><emphasis>Configuration:</emphasis>
-                        This
-                        <ulink url='https://www.youtube.com/watch?v=UW-j-T2TzIg'>video</ulink>
-                        provides Toaster build configuration information.
-                        </para></listitem>
-                    <listitem><para><emphasis>Tasks:</emphasis>
-                        This
-                        <ulink url='https://www.youtube.com/watch?v=D4-9vGSxQtw'>video</ulink>
-                        shows the information Toaster provides about the
-                        tasks run by the build system.
-                        </para></listitem>
-                    <listitem><para><emphasis>Recipes and Packages Built:</emphasis>
-                        This
-                        <ulink url='https://www.youtube.com/watch?v=x-6dx4huNnw'>video</ulink>
-                        shows the information Toaster provides about recipes
-                        and packages built.
-                        </para></listitem>
-                    <listitem><para><emphasis>Performance Data:</emphasis>
-                        This
-                        <ulink url='https://www.youtube.com/watch?v=qWGMrJoqusQ'>video</ulink>
-                        shows the build performance data provided by
-                        Toaster.
-                        </para></listitem>
-                </itemizedlist>
-            </para>
-        </section>
+      </section>
 
-        <section id='toaster-web-interface-preferred-version'>
-            <title>Building a Specific Recipe Given Multiple Versions</title>
+      <section id='toaster-web-interface-preferred-version'>
+          <title>Building a Specific Recipe Given Multiple Versions</title>
 
             <para>
                 Occasionally, a layer might provide more than one version of
@@ -1461,105 +674,4 @@
             </para>
         </section>
     </section>
-
-<!--
-        <section id='toaster-gui-vids-1'>
-            <title>Toaster Homepage and Table Controls</title>
-
-            <para>
-                This video goes over the Toaster entry page, and provides
-                an overview of the data manipulation capabilities of Toaster,
-                which include search, sorting and filtering by different
-                criteria.
-                <mediaobject>
-                    <videoobject>
-                        <videodata width="640" height="480" fileref="http://www.youtube.com/v/QEARDnrR1Xw"></videodata>
-                    </videoobject>
-                </mediaobject>
-            </para>
-        </section>
-
-        <section id='toaster-gui-vids-2'>
-            <title>Build Dashboard</title>
-
-            <para>
-                This video shows you the build dashboard, a page providing an
-                overview of the information available for a selected build.
-                <mediaobject>
-                    <videoobject>
-                        <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/KKqHYcnp2gE"></videodata>
-                    </videoobject>
-                </mediaobject>
-            </para>
-        </section>
-
-        <section id='toaster-gui-vids-3'>
-            <title>Image Information</title>
-
-            <para>
-                This video walks through the information Toaster provides
-                about images: packages installed and root file system.
-                <mediaobject>
-                    <videoobject>
-                        <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/XqYGFsmA0Rw"></videodata>
-                    </videoobject>
-                </mediaobject>
-            </para>
-        </section>
-
-        <section id='toaster-gui-vids-4'>
-            <title>Configuration</title>
-
-            <para>
-                This video shows the information Toaster provides about build
-                configuration.
-                <mediaobject>
-                    <videoobject>
-                        <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/UW-j-T2TzIg"></videodata>
-                    </videoobject>
-                </mediaobject>
-            </para>
-        </section>
-
-        <section id='toaster-gui-vids-5'>
-            <title>Tasks</title>
-
-            <para>
-                This video shows the information Toaster provides about the
-                tasks run by the build system.
-                <mediaobject>
-                    <videoobject>
-                        <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/D4-9vGSxQtw"></videodata>
-                    </videoobject>
-                </mediaobject>
-            </para>
-        </section>
-
-        <section id='toaster-gui-vids-6'>
-            <title>Recipes and Packages Built</title>
-
-            <para>
-                This video shows the information Toaster provides about recipes
-                and packages built.
-                <mediaobject>
-                    <videoobject>
-                        <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/x-6dx4huNnw"></videodata>
-                    </videoobject>
-                </mediaobject>qYgDZ8YzV6w
-            </para>
-        </section>
-        <section id='toaster-gui-vids-7'>
-            <title>Performance Data</title>
-
-            <para>
-                This video shows the build performance data provided by
-                Toaster.
-                <mediaobject>
-                    <videoobject>
-                        <videodata width="640px" height="480px" fileref="http://www.youtube.com/v/qWGMrJoqusQ"></videodata>
-                    </videoobject>
-                </mediaobject>
-            </para>
-        </section>
--->
 </chapter>
diff --git a/yocto-poky/documentation/toaster-manual/toaster-manual.xml b/yocto-poky/documentation/toaster-manual/toaster-manual.xml
index 59dca8f..7a8912a 100644
--- a/yocto-poky/documentation/toaster-manual/toaster-manual.xml
+++ b/yocto-poky/documentation/toaster-manual/toaster-manual.xml
@@ -41,6 +41,11 @@
                 <date>October 2015</date>
                 <revremark>Released with the Yocto Project 2.0 Release.</revremark>
             </revision>
+            <revision>
+                <revnumber>2.1</revnumber>
+                <date>April 2016</date>
+                <revremark>Released with the Yocto Project 2.1 Release.</revremark>
+            </revision>
        </revhistory>
 
     <copyright>
