merge parts from p2
align with branch p2