add part 2 (not finished yet)