preserve calling context; #1