General non-linear optimization