metafunctions