revised and updated : 8th December 2017