I've actually been thinking about this a bit lately. It seems to me that the CREATURE_CLASS system could provide a more versatile replacement for the COMMON_DOMESTIC tag, and the related entity tokens. I'm picturing something like this:
[USES_PET_CLASS:COMMON_DOMESTIC:ALWAYS]
There'd be a set of these tokens to match the current COMMON_DOMESTIC_PACK and so forth. I've been working out a rough list of possibilities.
USES_PET_CLASS would be for pets. Creatures on this list would sometimes turn up belonging to individuals, instead of to a group, in towns in Adventure Mode and migrant waves in Fortress Mode. For humans, and maybe dwarves, it would include things like cats and dogs, but probably not cows and the like.
USES_PACK_CLASS would determine what pack animals an entity used.
USES_PULL_CLASS would determine wagon haulers. If things like plows and ore carts go in, it'd probably control what animals were generally used to pull them, too.
USES_MOUNT_CLASS would control what the entity's cavalry would ride, and any other riders that turn up. Once mounts go in for adventure mode, these would probably be readily available at any town.
USES_SPECIAL_MOUNT class would be for mounts that only turn up in small numbers. Squad leaders in sieges might ride them, but not common soldiers. This could be anything from mildly exotic creatures like war bears and cave crocodiles up to tamed megabeasts, depending on the entity. Migrant waves probably wouldn't bring these, and they'd be rare in caravans and Adventure Mode towns.
USES_LIVESTOCK_CLASS would be for animals that are raised for meat, leather, milk, and the like. It would determine what animal products an entity sells, along with any tokens for hunting and fishing and such. Humans probably wouldn't have dogs and cats on this list, although dwarves might.
USES_WAR_CLASS would determine the the animals that are used in battle. They would take part in battles during world gen, and turn up in sieges and ambushes. If trainable, they might be found as trained war animals in towns and migrant waves, either assigned to someone with military skills or unassigned.
USES_HUNTING_CLASS would be similar, but for animals used in hunting. They probably wouldn't take part in world gen battles, but might accompany wanderers and beast hunters. They could turn up assigned to hunters, and possibly to herbalists and wood cutters.
What do you think?
COMMON_DOMESTIC could be any CREATURE_CLASS. It might also accept a few general categories, like ANY_PET, ANY_EXOTIC_PET, ANY_CAVE_PET, ALL_EVIL, ALL_GOOD, ALL_ANIMALS, and such.
I'd thought of the frequency as being ALWAYS, which would be like common domestics are now, and IF_AVAILABLE, which would add any animals that are discovered and tamed by the entity during world gen. To cut down on the length of the list a bit, it might also accept the clothing frequency tokens - COMMON, UNCOMMON, and RARE, or whatever the list is. Then it could randomly generate a list for each instance of an entity, like it does with clothing right now.
EDIT: Added war and hunting animals.