naming

started as a functor, turned into a factory