Updated and commented