william mcpherson