observer part is revised