if you want to make public_attrs inmutable, to defend against changes by mistake, maybe a tuple of tuples would work better?