refined, more static typing, more macro magic