finish half of assignment3