hw6 p4 implementation