begin final version