final version without comment