add an generic ID generator