add even and odd cases to do propagation