diff --git a/docs/04-specification/durations.md b/docs/04-specification/durations.md
index 7722c784..631ee5a7 100644
--- a/docs/04-specification/durations.md
+++ b/docs/04-specification/durations.md
@@ -19,25 +19,25 @@ abstract: A core component of impact graphing is the concept of time and specifi
- Duration and time is a core component of any impact measurement, every input is for a time and duration and every output impact metric is for a time and duration.
- The times and durations of input inputs and output impact metrics do not have to match.
-![](../../static/img//87a9d57e7434b7b59eb30b1b61633cb5.png)
+![](../../static/img/87a9d57e7434b7b59eb30b1b61633cb5.png)
## Time Series
An IG can calculate one summary impact metric for the whole duration of the IG.
-![](../../static/img//df140bba2035b620ecde3a563c1186c1.png)
+![](../../static/img/df140bba2035b620ecde3a563c1186c1.png)
Or it can compute a **time series** of output metrics for smaller buckets of time, for example when you have multiple components that scale up/down, start/stop at different times during the input window.
-![](../../static/img//c911708f4edeb6d3ca7a96c724f64826.png)
+![](../../static/img/c911708f4edeb6d3ca7a96c724f64826.png)
If you just have one input for one component, or one input for multiple components that span the input window, then generating a time series isn't so useful. It will just attribute the total impact equally across every time bucket, like so:
-![](../../static/img//af9a3bf0c4158e7262be6f38dbd56cc1.png)
+![](../../static/img/af9a3bf0c4158e7262be6f38dbd56cc1.png)
When it comes to outputting time series it's much more likely to surface useful information if there are multiple fine grained inputs about each component in our system. For example in the image below we have one component with a time series of inputs (cpu utilization)
-![](../../static/img//94f54a84d6331d9aa72ee0d8c0386c9f.png)
+![](../../static/img/94f54a84d6331d9aa72ee0d8c0386c9f.png)
### No Synchronization Required
diff --git a/docs/04-specification/graph.md b/docs/04-specification/graph.md
index b6415682..6cb07846 100644
--- a/docs/04-specification/graph.md
+++ b/docs/04-specification/graph.md
@@ -26,7 +26,7 @@ The graph's leaf nodes (**Components**) represent the components that need impac
The intermediate nodes (**Groupings**) represent a grouping of leaf nodes for useful aggregation, e.g. **backend** intermediate node might contain all the leaf nodes for the backend components.
-![](../../static/img//3f18767c1a55cee416e3de70314609e3.png)
+![](../../static/img/3f18767c1a55cee416e3de70314609e3.png)
### Component
@@ -35,13 +35,13 @@ Each component has some configuration, some Inputs, and a model.
- **Inputs** are a time series of data points used as inputs to the model.
- **Model** is a plugin [Model Plugin](./model-plugin.md) which when given some configuration and a series of [Inputs](./inputs.md), can calculate the impact, e.g. carbon impact from an input of CPU utilization.
-![](../../static/img//decc58c3420d1e4e3701e5d1ac12883e.png)
+![](../../static/img/decc58c3420d1e4e3701e5d1ac12883e.png)
### Computation
During graph computation, we first calculate the Component nodes to generate Impact Metrics. Then we aggregate the Impact Metrics up the tree to any Grouping nodes and, finally, a total Impact Metric for the whole graph. Every node in the graph has an impact metric; this means you can analyze a system as a who but also dig into and analyze the impacts of its components.
-![](../../static/img//bcb0066204a750f6b18a43a627c66b90.png)
+![](../../static/img/bcb0066204a750f6b18a43a627c66b90.png)
A computation of a Graph can create one Impact Metric. It can also be configured to return a **time series of outputs**, so you can identify the moments when impact is higher or lower. Importantly a time series is computed for every node (grouping or component) in the graph so that you can analyze the source of impact structurally and temporally.
diff --git a/docs/04-specification/inputs.md b/docs/04-specification/inputs.md
index 6981d278..a2504513 100644
--- a/docs/04-specification/inputs.md
+++ b/docs/04-specification/inputs.md
@@ -61,7 +61,7 @@ Each component in your graph needs `inputs`; we need inputs to compute outputs.
A helpful feature of the Impact Framework is that you don't need to synchronize all your `inputs` for all your components with each other. You can provide `inputs` at different intervals for every component in the graph.
-![](../../static/img//72efce519e8c2264406864148a8a3151.png)
+![](../../static/img/72efce519e8c2264406864148a8a3151.png)
In the [](Computation%20Pipeline.md#Normalization|Normalization) phase of the computation of a graph, we do synchronize the output Impact Metrices, but we don't need the `inputs` synchronized to do this.
diff --git a/static/img/3f18767c1a55cee416e3de70314609e3.png b/static/img/3f18767c1a55cee416e3de70314609e3.png
new file mode 100644
index 00000000..12591ebf
Binary files /dev/null and b/static/img/3f18767c1a55cee416e3de70314609e3.png differ
diff --git a/static/img/4f5d33a26e8aa2964cf5272641e0618c.png b/static/img/4f5d33a26e8aa2964cf5272641e0618c.png
new file mode 100644
index 00000000..674d3312
Binary files /dev/null and b/static/img/4f5d33a26e8aa2964cf5272641e0618c.png differ
diff --git a/static/img/72efce519e8c2264406864148a8a3151.png b/static/img/72efce519e8c2264406864148a8a3151.png
new file mode 100644
index 00000000..4198c1ee
Binary files /dev/null and b/static/img/72efce519e8c2264406864148a8a3151.png differ
diff --git a/static/img/87a9d57e7434b7b59eb30b1b61633cb5.png b/static/img/87a9d57e7434b7b59eb30b1b61633cb5.png
new file mode 100644
index 00000000..40d4b96f
Binary files /dev/null and b/static/img/87a9d57e7434b7b59eb30b1b61633cb5.png differ
diff --git a/static/img/94f54a84d6331d9aa72ee0d8c0386c9f.png b/static/img/94f54a84d6331d9aa72ee0d8c0386c9f.png
new file mode 100644
index 00000000..51a25f46
Binary files /dev/null and b/static/img/94f54a84d6331d9aa72ee0d8c0386c9f.png differ
diff --git a/static/img/af9a3bf0c4158e7262be6f38dbd56cc1.png b/static/img/af9a3bf0c4158e7262be6f38dbd56cc1.png
new file mode 100644
index 00000000..44e51c85
Binary files /dev/null and b/static/img/af9a3bf0c4158e7262be6f38dbd56cc1.png differ
diff --git a/static/img/background.png b/static/img/background.png
new file mode 100644
index 00000000..de3f356b
Binary files /dev/null and b/static/img/background.png differ
diff --git a/static/img/bcb0066204a750f6b18a43a627c66b90.png b/static/img/bcb0066204a750f6b18a43a627c66b90.png
new file mode 100644
index 00000000..0f1e3fcd
Binary files /dev/null and b/static/img/bcb0066204a750f6b18a43a627c66b90.png differ
diff --git a/static/img/c911708f4edeb6d3ca7a96c724f64826.png b/static/img/c911708f4edeb6d3ca7a96c724f64826.png
new file mode 100644
index 00000000..d30228b3
Binary files /dev/null and b/static/img/c911708f4edeb6d3ca7a96c724f64826.png differ
diff --git a/static/img/decc58c3420d1e4e3701e5d1ac12883e.png b/static/img/decc58c3420d1e4e3701e5d1ac12883e.png
new file mode 100644
index 00000000..d8f699c9
Binary files /dev/null and b/static/img/decc58c3420d1e4e3701e5d1ac12883e.png differ
diff --git a/static/img/df140bba2035b620ecde3a563c1186c1.png b/static/img/df140bba2035b620ecde3a563c1186c1.png
new file mode 100644
index 00000000..d82bc6b2
Binary files /dev/null and b/static/img/df140bba2035b620ecde3a563c1186c1.png differ
diff --git a/static/img/undraw_docusaurus_mountain.svg b/static/img/undraw_docusaurus_mountain.svg
new file mode 100644
index 00000000..af961c49
--- /dev/null
+++ b/static/img/undraw_docusaurus_mountain.svg
@@ -0,0 +1,171 @@
+
diff --git a/static/img/undraw_docusaurus_react.svg b/static/img/undraw_docusaurus_react.svg
new file mode 100644
index 00000000..94b5cf08
--- /dev/null
+++ b/static/img/undraw_docusaurus_react.svg
@@ -0,0 +1,170 @@
+
diff --git a/static/img/undraw_docusaurus_tree.svg b/static/img/undraw_docusaurus_tree.svg
new file mode 100644
index 00000000..d9161d33
--- /dev/null
+++ b/static/img/undraw_docusaurus_tree.svg
@@ -0,0 +1,40 @@
+