do_diff function was always removing all views from the old list. 

Simple 2-characters fix. 
Would it make more sense to start at `i = old_list.length` and then just test for inequality?