revised and updated : 28th April 2017