Part of the SOFT233 assignment