diff --git a/README.md b/README.md
index 23af668..fd736ff 100644
--- a/README.md
+++ b/README.md
@@ -6,13 +6,12 @@
Aka Yer Bacon,
- #### A language that transpiles into lua, javascript or python code.
-
-Here's how a "hello world" lambda will look like (`#=>` can be used as a shorthand for `#= ->`)
```
main #=> {
println "Hello, World!"
}
```
+
### Planned features:
- Type inference
@@ -20,7 +19,7 @@ main #=> {
- Compilation to jvm bytecode?
## Getting Started
-Variables assigned using #= can't be changed (they are "final"), while the ones affected using the normal operator (=) can.
+#### See the documentation
## Build requirements
diff --git a/docs/gettingstarted.md b/docs/gettingstarted.md
new file mode 100644
index 0000000..2056f97
--- /dev/null
+++ b/docs/gettingstarted.md
@@ -0,0 +1,44 @@
+## 1 - Variables
+Variables defined using #= can't be changed (they are "final"), while the ones affected using the normal operator (=) can.
+```
+helloworld #= "Hello World"
+```
+
+## 2 - (Anonymous) Functions
+You can make an anonymous functions using the following syntax:
+```
+getHelloWorld: ~String => {
+ return "Hello World!"
+}
+```
+`~String` can be omitted, see [#3](#3---types).
+
+Note that you can make `getHelloWorld` final by replacing `=>` with `#=>`.
+
+To define a **named** (and mandatorily final) function, replace `=>` with `>>` and put the (optional) return type before the function's name:
+```
+String getHelloWorld >> {
+ return "Hello, World!"
+}
+```
+### 2.1 - Main
+Main can be a variable named `main` that contains an anonymous function, a function named `main` or a function that has the `as_main` attribute:
+```
+main #=> {}
+main >> {}
+as_main helloWorld >> {}
+```
+
+## 3 - Types
+Types are *inferred*, which means that specifying types of variables or returned values is optional.
+
+Every variable has a static type by default; it is possible to make a **non-final** variable dynamic by adding the `dyn`/`dynamic` attribute:
+```
+dyn helloWorld = 0
+helloWorld = "Hello World!"
+```
+The attributes mentioned above can also be used as a return type for functions/anonymous functions:
+```
+helloWorld: ~dynamic => {}
+dyn helloWorld >> {}
+```
\ No newline at end of file