Part 5
Part 6
Part 7
Functional tests unfinished