there's a nice skill in macro_test.c