Matz version made me thought: > > persons = [] > > 1000.times{ persons.push(Person::new) } > > or > > persons = (0...1000).collect{ Person::new } how about adding a new Array.new version Array.new( size_of_the_array, klass ) allowing one to say persons = Array.new( 1000, Person ) It could be something like: class Array def new( size = 0, object = nil ) if defined? object and object.type == Class ary = [] 1000.times do ary.push( object.new ) end else # the existing Array.new end end - Aleksi