generateId() is better than changeId()