simpler (could still be better) type safe wrapper render passes