Finished work up to Q2 (c). Currently broken.