forwader generalized for all type