added automated ID generation