make serial_number generate if not passed in