changed observer structure