Abstract out some functor things; make a string functor