introduce an indirection to be able to promote the args