john mcgregor