Index: src/lemon/lp_base.h
===================================================================
--- src/lemon/lp_base.h	(revision 1305)
+++ src/lemon/lp_base.h	(revision 1312)
@@ -393,6 +393,9 @@
     virtual SolveExitStatus _solve() = 0;
     virtual Value _getPrimal(int i) = 0;
-    virtual SolutionStatus _getPrimalType() = 0;
-
+    virtual Value _getPrimalValue() = 0;
+    virtual SolutionStatus _getPrimalStatus() = 0;
+    virtual void _setMax() = 0;
+    virtual void _setMin() = 0;
+    
 
     void clearObj() {}
@@ -428,5 +431,5 @@
     ///like
     ///\code
-    ///std::map<AnyType,LpSolverBase::Col>
+    ///std::map<AnyStatus,LpSolverBase::Col>
     ///\endcode
     ///- an iterable lemon \ref concept::WriteMap "write map" like 
@@ -607,4 +610,10 @@
     }
 
+    ///Maximize
+    void max() { _setMax(); }
+    ///Minimize
+    void min() { _setMin(); }
+
+    
     ///@}
 
@@ -624,6 +633,6 @@
 
     ///\e
-    SolutionStatus primalType() {
-      return _getPrimalType();
+    SolutionStatus primalStatus() {
+      return _getPrimalStatus();
     }
 
@@ -631,4 +640,12 @@
     Value primal(Col c) { return _getPrimal(cols.floatingId(c.id)); }
 
+    ///\e
+
+    ///\return
+    ///- \ref INF or -\ref INF means either infeasibility or unboundedness
+    /// of the primal problem, depending on whether we minimize or maximize.
+    ///- \ref NAN if no primal solution is found.
+    ///- The (finite) objective value if an optimal solution is found.
+    Value primalValue() { return _getPrimalValue();}
     ///@}
     
Index: src/lemon/lp_glpk.cc
===================================================================
--- src/lemon/lp_glpk.cc	(revision 1305)
+++ src/lemon/lp_glpk.cc	(revision 1312)
@@ -256,6 +256,11 @@
   }
   
+  LpGlpk::Value LpGlpk::_getPrimalValue()
+  {
+    return 0;
+  }
+  
  
-  LpGlpk::SolutionStatus LpGlpk::_getPrimalType()
+  LpGlpk::SolutionStatus LpGlpk::_getPrimalStatus()
   {
     int stat=  lpx_get_status(lp);
@@ -284,4 +289,12 @@
 
 
+  void LpGlpk::_setMax()
+  {
+  }
+  void LpGlpk::_setMin()
+  {
+  }
+
+ 
 } //END OF NAMESPACE LEMON
 
Index: src/lemon/lp_glpk.h
===================================================================
--- src/lemon/lp_glpk.h	(revision 1305)
+++ src/lemon/lp_glpk.h	(revision 1312)
@@ -81,6 +81,22 @@
     ///\bug Unimplemented
     ///
-    virtual SolutionStatus _getPrimalType();
+    virtual Value _getPrimalValue();
+    ///\e
+    
+    ///\bug Unimplemented
+    ///
+    virtual SolutionStatus _getPrimalStatus();
 
+    ///\e
+    
+    ///\bug Unimplemented
+    ///
+    virtual void _setMax();
+    ///\e
+    
+    ///\bug Unimplemented
+    ///
+    virtual void _setMin();
+  
   };
 } //END OF NAMESPACE LEMON
Index: src/lemon/lp_solver_skeleton.cc
===================================================================
--- src/lemon/lp_solver_skeleton.cc	(revision 1305)
+++ src/lemon/lp_solver_skeleton.cc	(revision 1312)
@@ -66,4 +66,11 @@
   }
 
+  void LpSolverSkeleton::_setMax()
+  {
+  }
+  void LpSolverSkeleton::_setMin()
+  {
+  }
+
   LpSolverSkeleton::SolveExitStatus LpSolverSkeleton::_solve()
   {
@@ -76,5 +83,10 @@
   }
   
-  LpSolverSkeleton::SolutionStatus LpSolverSkeleton::_getPrimalType()
+  LpSolverSkeleton::Value LpSolverSkeleton::_getPrimalValue()
+  {
+    return 0;
+  }
+  
+  LpSolverSkeleton::SolutionStatus LpSolverSkeleton::_getPrimalStatus()
   {
     return OPTIMAL;
Index: src/lemon/lp_solver_skeleton.h
===================================================================
--- src/lemon/lp_solver_skeleton.h	(revision 1305)
+++ src/lemon/lp_solver_skeleton.h	(revision 1312)
@@ -94,5 +94,16 @@
     ///\bug Wrong interface
     ///
-    virtual SolutionStatus _getPrimalType();
+    virtual Value _getPrimalValue();
+    ///\e
+
+    ///\bug Wrong interface
+    ///
+    virtual SolutionStatus _getPrimalStatus();
+
+    ///\e
+    virtual void _setMax();
+    ///\e
+    virtual void _setMin();
+    
 
   public:
