revised and updated : 13th October 2016