pad_zero is optional