added unique id generation