sealed
modify F0 from interface to sealed class
add CoYoneda