diff --git a/README.md b/README.md
index d4dc395..c81f97c 100644
--- a/README.md
+++ b/README.md
@@ -5,6 +5,8 @@ Rust Implementation of Ladder-Types (parsing, unification, rewriting, etc)
 
 ## Ladder Types
 
+### Motivation
+
 In order to implement complex datastructures and algorithms, usually
 many layers of abstraction are built ontop of each other.
 Consequently higher-level data types are encoded into lower-level data
@@ -57,6 +59,32 @@ this:
 1696093021:1696093039:1528324679:1539892301:1638141920:1688010253
 ```
 
+### Syntax
+
+A type-term can be of the form:
+- `0` | `1` | `2` | ...   (**Literal Integer**)
+- `'a'` | `'b'` | `'c'` | ... (**Literal Character**)
+- `SomeTypeName`  (**Atomic Type**)
+- `<T_1 T_2>` given `T_1` and `T_2` are type-terms. (**Parameter Application**)
+- `T_1 ~ T_2` given `T_1` and `T_2` are type-terms. (**Ladder**)
+
+Ontop of that, the following syntax-sugar is defined:
+
+#### Complex Types
+- `[T]` <===> `<Seq T>`
+- `{a:A,b:B}` <===> `<Struct <"a" A> <"b" B>>`
+- `a:A|b:B` <===> `<Enum <"a" A> <"b" B>>`
+
+#### Function Types
+- `A -> B` <===> `<Fn A B>`
+
+#### Reference Types
+- `*A`  <===> `<Ptr A>`
+- `&A`  <===> `<ConstRef A>`
+- `&!A` <===> `<MutRef A>`
+
+
+
 ## How to use this crate
 
 ```rust
@@ -73,6 +101,19 @@ fn main() {
 }
 ```
 
+## Roadmap
+
+- [x] (Un-)Parsing
+- [x] (De-)Currying
+- [x] Unification
+- [x] Ladder-Normal-Form
+- [x] Parameter-Normal-Form
+- [ ] (De)-Sugaring
+  - [ ] Seq
+  - [ ] Enum
+  - [ ] Struct
+  - [ ] References
+  - [ ] Function
 
 ## License
 [GPLv3](COPYING)