Non-linear controller