open functor