def _merge_observation(accum_observation, observation):
    """
    Old visual observation is discarded, because it is outdated frame.
    Text observations are merged, because they are messages sent from the rewarder.
    """
    if observation is None:
        return None
    elif accum_observation is None:
        return observation
    accum_observation['vision'] = observation.get('vision')
    accum_observation['text'] = accum_observation.get('text', []
        ) + observation.get('text', [])
    return accum_observation
