If you've ever read "Real Programmers don't use Pascal" (see http://www.codeproject.com/KB/scrapbook/realprog.aspx ) you'll know that "Determined Real Programemrs can write Fortran programs in any language" Just because you're a Ruby programmer you don't have to use all that OO stuff. This algorithm picks out the first label and moves it into a new space on the left, and then moves the second label to where the first was and so on. Lastly it removes the vacated slot on the right: def initialise_globals $m1 = "JANUARY" $m2 = "FEBRUARY" $m3 = "MARCH" $m1_index = 0 $m2_index = 0 $m3_index = 0 end def get_array $input_array = ["#<Event:0x4d4cf78>", "#<Event:0x4d4d470>", "MARCH", "#<Event:0x4d4dc08>", "#<Event:0x4d4e100>", "FEBRUARY", "#<Event:0x4d4e898>","JANUARY"] puts " #{$input_array}" end def shuffle_all_right #insert m3 while we¡Çre at it. $input_array.unshift " " end def locate_months $m1_index = $input_array.index $m1 $m2_index = $input_array.index $m2 $m3_index = $input_array.index $m3 end def bring_months_to_left $input_array[0] = $input_array[$m3_index] $input_array[$m3_index] = $input_array[$m2_index] $input_array[$m2_index] = $input_array[$m1_index] end def delete_right_slot $input_array.pop end def main_program initialise_globals get_array shuffle_all_right locate_months bring_months_to_left delete_right_slot end main_program puts $input_array Actually I cheated there as I enclosed the #strings in quotes. Anyone know how to deal with #s?