added safe_update which backs up dotfiles before overwriting