Added regenerateId() function