add error handling to getSerialNumber()