undo fixes, viewer change_source rework, cleanup