fixed observer hierarchy