improved nth order diff