first stab at @adt and @leaf macros