bug fix forward pass and backward pass.
separate into their own methods to eliminate confusion