fixed stop condition
added hessian calculation
grad_descent is now second order
chose a better objective
got rid of squares and stupid checks
generalised hessian calculation