*support integral value types in NumericalDiff
*some cleanup in NumericalDiff