diff --git a/src/mir/construction.md b/src/mir/construction.md
index f0e3cf76..0e0bf35e 100644
--- a/src/mir/construction.md
+++ b/src/mir/construction.md
@@ -92,6 +92,13 @@ There are essentially four kinds of representations one might want of an express
* `Operand` is an argument to e.g. a `+` operation or a function call
* a temporary variable containing a copy of the value
+These following image depicts a general overview of the interactions between the
+representations:
+
+
+
+[Click here for a more detailed view](mir_detailed.svg)
+
We start out with lowering the function body to an `Rvalue` so we can create an
assignment to `RETURN_PLACE`, This `Rvalue` lowering will in turn trigger lowering to
`Operand` for its arguments (if any). `Operand` lowering either produces a `const`
diff --git a/src/mir/mir_detailed.dot b/src/mir/mir_detailed.dot
new file mode 100644
index 00000000..1494f4f0
--- /dev/null
+++ b/src/mir/mir_detailed.dot
@@ -0,0 +1,27 @@
+digraph G {
+ Operand -> Constant
+ Operand -> Place [taillabel="read"]
+ Place -> Projection
+ Projection -> Place
+ Place -> LocalId
+ Rvalue -> "Rvalue\nAggregate"
+ Rvalue -> "Rvalue\nBinaryOp"
+ Rvalue -> "Rvalue\nUnaryOp"
+ Rvalue -> "Rvalue\n..."
+ "Rvalue\nAggregate" -> Operand [headlabel="*"]
+ "Rvalue\nBinaryOp" -> Operand [headlabel="2"]
+ "Rvalue\nUnaryOp" -> Operand
+ "Statement\nAssignment" -> Place [taillabel="write"]
+ "Statement\nAssignment" -> Rvalue
+ Statement -> "Statement\nAssignment"
+ Statement -> "Statement\n..."
+ Block -> Statement [headlabel="*"]
+ Block -> Terminator
+ Terminator -> "Terminator\nSwitchInt"
+ "Terminator\nSwitchInt" -> Operand
+ "Terminator\nSwitchInt" -> Constant [headlabel="*"]
+ "Terminator\nSwitchInt" -> BlockId [headlabel="*"]
+ Terminator -> "Terminator\n..."
+ Mir -> Block [headlabel="*"]
+ Mir -> Local [headlabel="*"]
+}
\ No newline at end of file
diff --git a/src/mir/mir_detailed.svg b/src/mir/mir_detailed.svg
new file mode 100644
index 00000000..771e9e5d
--- /dev/null
+++ b/src/mir/mir_detailed.svg
@@ -0,0 +1,300 @@
+
+
+
+
+
diff --git a/src/mir/mir_overview.dot b/src/mir/mir_overview.dot
new file mode 100644
index 00000000..c0b51674
--- /dev/null
+++ b/src/mir/mir_overview.dot
@@ -0,0 +1,10 @@
+digraph G {
+ Operand -> Constant
+ Operand -> Place
+ Place -> Projection
+ Projection -> Place
+ Place -> Local
+ Rvalue -> Operand
+ Assignment -> Place
+ Assignment -> Operand
+}
\ No newline at end of file
diff --git a/src/mir/mir_overview.svg b/src/mir/mir_overview.svg
new file mode 100644
index 00000000..b8f092cd
--- /dev/null
+++ b/src/mir/mir_overview.svg
@@ -0,0 +1,103 @@
+
+
+
+
+