merge Observer branch