updated for relative nonlinearity