add pack function