made Observation generic