> But this will not be compatible. Array#delete, #fill and all the others > must be changed to the bang version. Any change to existing method names > will break code. A solution would be to introduce #delete! etc.. > that are just an alias to #delete. But this would break IMO PoLP. I think, you either 1) See the bang as a help, especially in situations where is is not clear. that array#delete_at modifies the receiver is quite clear I think. 2) See it as a part of the languages syntax. Then is should be enforced by the interpreter. I prefer the opinion 1). However, the change _would_ be possible. One would have to define two include files, ruby_old and ruby_new. First, ruby_old would be an empty file, and ruby_new would change the array class (and perhaps other classes) accordingly. After the change is done in ruby itself, ruby_new would be empty, and ruby_old would restore the previous behaviour. Of course, when phase two is reached, code breaks. But by then, everyone has hd the change to either fix his code, or add a "require 'ruby_old'" at the beginning of each file. greetings, Florian Pflug