add #args as type param for functors