With regards to building lists right-to-left (or atleast moving around non-expansive elements), I assume that you would only do the fancier thing (where you build a reversed list of the expansive pieces) in the case that the list was big (above some threshold).