backward marking, needs optimization