add backpropagete method