Add a load of functionality until the end of 3rd week

Implement all assignments except the ones concerning the personal
project.