part A final version