Bug 976411 - Use ConstructFramesFromItemList in more places, and some minor cleanup.  r=bz