add lazy message passing
stop when there are no changes
fix convergence