Add Functor module supplemented with tests