fireing updated only when needed