infrastructure for #50