First part of the advanced assignment