macros generate specifications;
need modification: domain type extraction;