new selfupdate method