document explanation for #540
this now passes typechecker