added training with lbfgs