First batch of new features

Implemented features are crossed out in the TODO.md