diff --git a/docs/diagrams/disposableClientExecution.svg b/docs/diagrams/disposableClientExecution.svg
new file mode 100644
--- /dev/null
+++ b/docs/diagrams/disposableClientExecution.svg
@@ -0,0 +1,486 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="297mm"
+   height="210mm"
+   viewBox="0 0 1052.3622 744.09448"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="disposableClientExecution.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker13947"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path13949"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker4774"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path4776" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker4716"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:collect="always">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path4718" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4460"
+       style="overflow:visible;"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4462"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1;fill:#ff0000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4430"
+       style="overflow:visible;"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4432"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4157"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4460-3"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4462-6"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4430-9"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4432-9"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4774-5"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         id="path4776-2" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4142136"
+     inkscape:cx="188.93579"
+     inkscape:cy="206.9802"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1163"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-308.26772)">
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4136"
+       width="171.72594"
+       height="86.873116"
+       x="492.82062"
+       y="425.11902" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="120.47377"
+       y="724.63599"
+       id="text4138"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/remote-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"><tspan
+         sodipodi:role="line"
+         id="tspan4140"
+         x="120.47377"
+         y="724.63599"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25px;font-family:Cantarell;-inkscape-font-specification:Cantarell">Execution Start</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4430)"
+       d="m 281.90234,709.63601 c 18.92857,-19.64285 95.71429,-28.57143 95.71429,-28.57143"
+       id="path4148"
+       inkscape:connector-curvature="0"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/remote-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4460)"
+       d="M 378.33091,741.42173 C 331.18806,755.3503 285.47377,727.49316 285.47377,727.49316"
+       id="path4458"
+       inkscape:connector-curvature="0"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/remote-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="242.09079"
+       y="676.06458"
+       id="text4494"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/remote-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"><tspan
+         sodipodi:role="line"
+         id="tspan4496"
+         x="242.09079"
+         y="676.06458"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:Cantarell;-inkscape-font-specification:Cantarell">1. Send Commands</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="242.43579"
+       y="759.52039"
+       id="text4494-0"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/remote-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"><tspan
+         sodipodi:role="line"
+         id="tspan4496-7"
+         x="242.43579"
+         y="759.52039"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:Cantarell;-inkscape-font-specification:Cantarell">2. Retrieve Output</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.42262542;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4136-1"
+       width="171.30331"
+       height="176.25305"
+       x="361.4158"
+       y="849.74963"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="63.76252"
+       y="907.57837"
+       id="text4138-6"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"><tspan
+         sodipodi:role="line"
+         id="tspan4140-1"
+         x="63.76252"
+         y="907.57837"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25px;font-family:Cantarell;-inkscape-font-specification:Cantarell">Execution Start</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="407.33392"
+       y="867.22125"
+       id="text4142-1"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"><tspan
+         sodipodi:role="line"
+         id="tspan4144-4"
+         x="407.33392"
+         y="867.22125"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;font-family:Cantarell;-inkscape-font-specification:Cantarell">testcloud</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker13947)"
+       d="m 225.19108,892.57837 c 28.17857,-35.39285 135.2143,-34.32143 135.2143,-34.32143"
+       id="path4148-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="254.80704"
+       y="857.45367"
+       id="text4494-9"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"><tspan
+         sodipodi:role="line"
+         id="tspan4496-4"
+         x="254.80704"
+         y="857.45367"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:Cantarell;-inkscape-font-specification:Cantarell">1. Create VM</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4774)"
+       d="M 414.893,925.40825 C 280.00623,931.78783 232.912,902.52867 232.912,902.52867"
+       id="path4458-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="255.24454"
+       y="937.44501"
+       id="text4494-0-8"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"><tspan
+         sodipodi:role="line"
+         id="tspan4496-7-7"
+         x="255.24454"
+         y="937.44501"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:Cantarell;-inkscape-font-specification:Cantarell">3. Extract Output</tspan></text>
+    <g
+       id="g8754"
+       transform="translate(61.92031,123.03658)"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90">
+      <g
+         transform="matrix(1.3998156,0,0,1.3047841,-140.22012,-248.78463)"
+         id="g4685">
+        <ellipse
+           style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="path4645"
+           cx="378.125"
+           cy="789.50507"
+           rx="25.178572"
+           ry="2.8571429" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 403.17714,789.59627 0.10411,33.79272"
+           id="path4664"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 352.99307,789.50946 0.008,33.95849"
+           id="path4666"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 352.61444,822.97942 c 25.76328,5.90093 51.03904,-0.0843 51.03904,-0.0843"
+           id="path4668"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+      </g>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4691"
+         y="797.98053"
+         x="357.61926"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:15px"
+           y="797.98053"
+           x="357.61926"
+           id="tspan4693"
+           sodipodi:role="line">Client VM</tspan></text>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4716)"
+       d="m 231.70545,895.38334 c 157.11464,-60.60962 180.2143,17.92857 180.2143,17.92857"
+       id="path4148-0-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="255.09454"
+       y="901.88409"
+       id="text4494-9-4"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"><tspan
+         sodipodi:role="line"
+         id="tspan4496-4-3"
+         x="255.09454"
+         y="901.88409"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:Cantarell;-inkscape-font-specification:Cantarell">2. Execute Task</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4774-5)"
+       d="m 223.76402,908.7555 c 42.9013,70.81085 133.2997,43.41202 133.2997,43.41202"
+       id="path4458-8-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="255.66954"
+       y="979.23694"
+       id="text4494-9-1"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/disposable-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"><tspan
+         sodipodi:role="line"
+         id="tspan4496-4-1"
+         x="255.66954"
+         y="979.23694"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:Cantarell;-inkscape-font-specification:Cantarell">4. Destroy VM</tspan></text>
+    <g
+       id="g25080"
+       transform="translate(-85.913478,132.58252)"
+       inkscape:export-filename="/home/tflink/code/taskotron/libtaskotron/docs/source/img/remote-execution-process.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90">
+      <g
+         transform="matrix(2.2916099,0,0,2.7259165,-342.90242,-1627.9936)"
+         id="g4685-8">
+        <ellipse
+           style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="path4645-5"
+           cx="378.125"
+           cy="789.50507"
+           rx="25.178572"
+           ry="2.8571429" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 403.17714,789.59627 0.10411,33.79272"
+           id="path4664-3"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 352.99307,789.50946 0.008,33.95849"
+           id="path4666-1"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 352.61444,822.97942 c 25.76328,5.90093 51.03904,-0.0843 51.03904,-0.0843"
+           id="path4668-5"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+      </g>
+      <text
+         sodipodi:linespacing="125%"
+         id="text4691-6"
+         y="547.0434"
+         x="469.16571"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="font-size:15px"
+           y="547.0434"
+           x="469.16571"
+           id="tspan4693-7"
+           sodipodi:role="line">Remote Machine</tspan></text>
+    </g>
+  </g>
+</svg>
diff --git a/docs/source/disposableclients.rst b/docs/source/disposableclients.rst
new file mode 100644
--- /dev/null
+++ b/docs/source/disposableclients.rst
@@ -0,0 +1,117 @@
+==================================
+Disposable Clients in libtaskotron
+==================================
+
+
+Limiting task execution to a persistent or local machine has the unfortunate
+side effect of limiting the things which can be done inside tasks. For example,
+a task which can corrupt the filesystem where it's running can't really work
+if the client system is expected to survive for long periods of time.
+
+To address this, libtaskotron has a concept of disposable clients - single use
+virtual machines which are spun up for the sole purpose of running a task,
+extracting interesting output and destroying that virtual machine upon
+completion.
+
+
+New Terms and Definitions
+=========================
+
+Using disposable clients introduces a few new terms:
+
+.. Make sure this is using the correct terminology and actually makes sense
+
+Overlord
+  Orchestrates task execution, making the determination whether to run a given
+  task locally or using a minion.
+
+Minion
+  In the non-local case, execution is delegated to a minion which prepares
+  the execution environment and spawns an Executor to do the low level work.
+
+Executor
+  Coordinates and executes the individual steps of a formula.
+
+
+Possible Task Execution Processes
+=================================
+
+The exact process used to execute a task depends on the options specified at
+execution time. The default in non-production environments is to use local
+execution.
+
+Local Execution of Tasks
+------------------------
+
+.. make a diagram of local execution
+
+Local execution is the simplest of the processes used by libtaskotron. The task
+is processed on the local machine using the user which was used to start
+execution.
+
+
+Task Execution via Remote Connection
+------------------------------------
+.. make a diagram of remote execution
+
+libtaskotron is also capable of using a persistent virtual machine for executing
+tasks. This is mostly meant for libtaskotron and task development so that there
+isn't a constant overhead of starting and configuring single-use virtual machines.
+
+.. image:: img/remote-execution-process.png
+   :align: center
+   :alt: Remote Execution Diagram
+
+
+Task Execution using Disposable Clients
+-----------------------------------------
+
+Disposable clients involve spawning a virtual machine, configuring it to spec,
+using it to execute a task before the info we're interested in is extracted and
+the VM is destroyed.
+
+.. image:: img/disposable-execution-process.png
+   :align: center
+   :alt: Disposable Execution Diagram
+
+
+The specific process is:
+
+ #. Start Execution
+
+ #. Spawn VM using testcloud
+
+ #. Configure VM per formula specifications
+
+ #. Execute task on spawned VM
+
+ #. Extract desired information
+
+ #. Destroy spawned VM
+
+While this is used in production, it's not usually the most efficient method for
+executing tasks during development with the exception of testing the entire process
+before completion.
+
+.. Make note of how to get ahold of images? Do we need to make them public?
+
+
+What Can I Do with Disposable Clients?
+======================================
+
+There is little that you can't do with disposable clients - they effectively
+enable root access on a VM that you can do pretty much whatever you want to
+that VM. It might be a little difficult to extract data if you completely
+destroy the VM to the point where it isn't functioning anymore but it won't
+affect other tasks.
+
+
+What is Coming for Disposable Clients?
+======================================
+
+At the time of this writing, disposable clients are a new feature for
+libtaskotron and we have a lot more planned including:
+
+ * Specifying a fedora version to run against
+
+ * Specifying a non-standard image to run against
diff --git a/docs/source/img/disposable-execution-process.png b/docs/source/img/disposable-execution-process.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/docs/source/img/remote-execution-process.png b/docs/source/img/remote-execution-process.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/docs/source/index.rst b/docs/source/index.rst
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -30,6 +30,7 @@
    devguide
    directives/list_of_directives_modules
    resultyaml
+   disposableclients
 
 
 
@@ -74,15 +75,46 @@
 
 .. TODO - replace this link with a non-copr repo that's more stable over time
 
-Once the repository is enabled, install libtaskotron with::
+The easiest way to get started is to install ``libtaskotron-core`` and all of the
+other modules with::
 
   sudo yum install libtaskotron
 
 Note: The permissions on several notable directories (e.g. ``/var/log/taskotron``,
 ``/var/lib/taskotron/``, ``/var/cache/taskotron``) are set to ``777``. If
 desired, edit ``/etc/taskotron/taskotron.yaml`` and set these paths to
 directories with more appropriate permissions.
 
+
+libtaskotron modules
+--------------------
+
+As functionality has been added to libtaskotron, we've started breaking up that
+functionality into modules to increase flexibility and shrink the minimal
+install profile. Each module is packaged separately for easy installation.
+
+libtaskotron is composed of 3 modules - ``libtaskotron-core``,
+``libtaskotron-fedora`` and ``libtaskotron-disposable``.
+
+
+**libtaskotron-core**
+  The minimum needed to run tasks with libtaskotron. It consists of the most
+  basic bits that most tasks will use.
+
+**libtaskotron-fedora**
+  The fedora-specific functionality which is in libtaskotron - things like bodhi,
+  koji and rpm-based directives.
+
+**libtaskotron-disposable**
+  The bits needed to enable execution with `disposable clients <disposableclients.html>`_. Local-only execution
+  is still possible without this module but it was separated off to reduce
+  the minimal installation profile when the functionality is not needed.
+
+  Note that ``libtaskotron-disposable`` depends on `testcloud
+  <https://github.com/Rorosha/testcloud>`_ which will pull in several other
+  non-trivial dependencies.
+
+
 .. _running-tasks:
 
 Running Tasks

