Most of HW02.