added spectral differentiation