backward pass seems to be done correct