Final Working version