Keep header when switching theme

Im trying to make a plugin that will keep the header after switching theme. So far i have come up with this:

<?php

add_action('pre_update_option_theme_mods_' . get_option( 'stylesheet' ), save_header_image_as_option);
add_action('switch_theme', 'keep_header');

error_log("stylesheet " . get_option( 'stylesheet' ),0);
error_log("prevous header " . get_option( 'previous_header_image_saved' ),0);

function save_header_image_as_option()
{
$details_before = get_theme_mods($blog_id);
update_option("previous_header_image_saved", get_theme_mod('header_image'));
error_log("before theme change" . json_encode($details_before), 0);
return $details_before;
}

function keep_header()
{
$details_after = get_theme_mods($blog_id);
set_theme_mod('header_image', get_option("previous_header_image_saved"));
error_log("after theme change" . json_encode($details_after), 0);
return $details_after;
}

?>

Sadly this breaks the ability to change the header and the header is not kept when switching themes. Any suggestions ?