added non-linear response