The need to pass both xblocks AND locators is unfortunate. But it should go away once CMS is passing locators to the modulestore, as then the locator will be accessible via xblock.location. And I think we will remember to clean this up because we will be removing the loc_mapper().translate_location call above.