Metafunction class