reconstruct tag every viewer update, refactor