finished assign4