more generic system which goes through id_looper(), reducing the maintainance burden for new constraint authors