revised and updated : 16th May 2015