functional part1 and part2