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.
none of these keys should have worked previously without the function call to get the explicit value. No idea why they were. Ah well they're fixed