handle families of functions with different signatures