refactored updating of observables, added new fields

I am half asleep so I have no idea if any of this makes sense but it works on my end.