improved selfupdate