update for clean observer