refactor environment reaction propagation