JOHN DU'S CONTRIBUTION
merge conflicts