finalised part 1