Note that I am new to this list and to Ruby. Consider ... irb(main):020:0> c=[0,1] => [0, 1] irb(main):021:0> c[0].freeze => 0 irb(main):022:0> c[0]=2 => 2 irb(main):023:0> c => [2, 1] irb(main):024:0> Similarly ... irb(main):029:0> f=1 => 1 irb(main):030:0> f.freeze => 1 irb(main):031:0> f=2 => 2 It took a few moments for me to scratch my head and then I thought that the reason that there was no message when c[0] or f changed was that c[0] is not an object but a reference to an object (the number 2). So I searched the archives and it appears taht my reasoning is correct. I think. there was the suggestion to make f a constant, F. Yes, that generates a warning ... but it is not what I want. I want to freeze the reference as well as the object. In C++ it is possible to "freeze" (i.e. const) both a pointer to an object and the object itself. Is this possible in Ruby? a) Is my reasoning correct? b) Is there a way to do what I want? That is, freeze f or c[0] so that I get some sort of message/error/exception? c) Do my examples violate POLS?