Before reading this section, I recommend reading through parts 1 & 2 of project LMS to understand why this subproject exists.