FINAL version for part2