forground now takes a few iterations, requires slightly different structure