Add more functor
add Bifunctor