Updated : final version