diff --git a/README.md b/README.md
index 28b5936..aeb7878 100644
--- a/README.md
+++ b/README.md
@@ -11,25 +11,131 @@
`forest` provides some flexibility in usage of its API:
1. `print`: The most straightforward function, prints to `stdout`
-1. `print_to`: Prints to provided `std::FILE*` stream
-1. `format`: Obtains formatted text as a `std::string`
-1. `format_to`: fully `constexpr` code path that formats text to a provided output iterator
-1. `literal`: compile-time alternative for literals
+2. `print_to`: Prints to provided `std::FILE*` stream
+3. `format`: Obtains formatted text as a `std::string`
+4. `format_to`: fully `constexpr` code path that formats text to a provided output iterator
+5. `literal`: compile-time alternative for literals
[example/forest-example.cpp](example/forest-example.cpp) contains some samples.
+## Markup Language
+
+Below is a description of the markup language used by all functions exposed by the API
+
+### Style
+
+A style consists of two things
+
+- Scope
+
+- Logic
+
+### Logic
+
+Logic depicts the operations the style will perform in order to apply the changes to the group of text
+
+### Scope
+
+Together with logic, scope refers to the group of text to which the style can be applied to and how. There are 2 types of scopes
+
+#### Opened
+
+Styles with an open scope can and will be used to apply styling or logic to
+
+- anything after the tag
+
+- anything leading up to the tag
+
+They are of the form ``
+
+## Style Types
+
+There are 3 types of styles
+
+- **Hint**
+
+- **Decoration**
+
+- **Property**
+
+### Hint
+
+Refers to a set of styles that are single-use and open scoped
+
+### Decoration
+
+Refers to all closed scoped styles
+
+### Property
+
+Refers to a set of styles that parameterized over a set of specified values which can be given via the `=` syntax
+
+- ``
+
+- ``
+
+**Note**
+
+**Specifying a value outside of the allowed range is not an error as all values are effectively clamped**
+
+## Styles
+
+| NAME | TAG | ALT. TAG | OPENING TAG | CLOSING TAG | PROPERTIES | TYPE |
+| -------------- | -------------- | -------- | ------------------ | ------------------ | ---------- | ------ |
+| bold | `` | | :white_check_mark: | :white_check_mark: | :x: | `D` |
+| italic | `` | | :white_check_mark: | :white_check_mark: | :x: | `D` |
+| underline | `` | | :white_check_mark: | :white_check_mark: | :x: | `D` |
+| dim | `` | | :white_check_mark: | :white_check_mark: | :x: | `D` |
+| blink | `