more playing with functors