Abstract ID generation