copy operation factored out for each lens type