finish l5_p8...messy, but passed