finish half of assignment2