implemented step backward, still buggy