Features 1+2+3

Relies on:

- [ ] #7 
- [ ] #8 
- [ ] #9 
- [ ] #10