use some funny macro-generated data structure things