added some nonlinear things