revised and updated : 4th October 2017