changed some method args to final