would be good to do a comment here what these case distinctions exactly do, maybe add in another PR