work on section 3.2, metafunction compilation