manual merge from observerui branch