Add self update function