diff --git a/minimize.cc b/minimize.cc
index b85d1cff85fab6a455fce7b4cf65d4a3b08e862c..29c2c6ca80958c908293d869393c203545881f51 100644
--- a/minimize.cc
+++ b/minimize.cc
@@ -193,7 +193,7 @@ ReturnMatrix hessian(const ColumnVector& x, const EvalFunction& func, float h,in
 }
 
 
-void minimize(ColumnVector& x, const EvalFunction& func){
+void fminsearch(ColumnVector& x, const EvalFunction& func){
   //perform generic function minimization without gradient info
   int n=x.Nrows(), maxiter=200*n,iter=0;
   int func_evals=0;
diff --git a/minimize.h b/minimize.h
index a56c58baaed2eaef0cc572f1dbbfa0a9aeab153e..918fc10d928f3e5f15e53196d730458d4712b3cf 100644
--- a/minimize.h
+++ b/minimize.h
@@ -42,7 +42,7 @@ public:
 };
 
 class EvalFunction
-{//Function where gradient is not analytic (or you are too lazy to work it out)
+{//Function where gradient is not analytic (or you are too lazy to work it out) (required for fminsearch)
 public:
   EvalFunction(){}
   virtual float evaluate(const ColumnVector& x) const = 0; //evaluate the function
@@ -56,11 +56,12 @@ private:
 
 class gEvalFunction : public EvalFunction
 {//Function where gradient is analytic (required for scg)
+
 public:
   gEvalFunction() : EvalFunction(){}
   // evaluate is inherited from EvalFunction
-  // virtual float evaluate(const ColumnVector& x) const = 0; //evaluate the function  
-  virtual ColumnVector g_evaluate(const ColumnVector& x) const = 0; //evaluate the gradient
+  
+  virtual ReturnMatrix g_evaluate(const ColumnVector& x) const = 0; //evaluate the gradient
   virtual ~gEvalFunction(){};
 
 private:
@@ -80,8 +81,8 @@ ReturnMatrix gradient(const ColumnVector& x, const EvalFunction& func,float h,in
 
 ReturnMatrix hessian(const ColumnVector& x, const EvalFunction& func,float h,int errorord=4);// finite diff hessian
 
+void fminsearch(ColumnVector& x, const EvalFunction& func);
 
-void minimize(ColumnVector& x, const EvalFunction& func);
 void scg(ColumnVector& x, const gEvalFunction& func);
 }