the primitive method of the final project is ok(implement the nested
but delivery is not that good)