self update mechanism