impl new-define, supports match but not values