diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper
index 75217ad9..07100bbb 100755
--- a/data_from_portwine/scripts/functions_helper
+++ b/data_from_portwine/scripts/functions_helper
@@ -1125,58 +1125,66 @@ combobox_fix () {
 }
 
 get_and_set_reg_file () {
-    local name_block name_for_find find_block find_file find_line count
+    local name_block name_for_find find_block find_file find_line count name_for_new_block
     local line_reg find_number_line find_check_file name_for_set name_block_old
-    name_block=$1
-    name_for_find=$2
-    name_for_set=$3
+    name_block=$2
     name_block_old=$name_block
+    name_for_find=$3
+    name_for_set=$4
+    name_for_new_block=$5
     name_block=${name_block//\\/\\\\}
     name_block=${name_block//\[/\\[}
-    name_block=${name_block//\]/\\]}
-    find_block=$(grep -n "$name_block" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/"*.reg)
+    find_block=$(grep -n "${name_block//\]/\\]}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/"*.reg)
     if [[ -n $find_block ]] ; then
         find_file=${find_block//:*/}
         find_line=${find_block//$find_file:/}
         find_line=${find_line//:*/}
-    else
-        if [[ -n $4 ]] ; then
-            sed -i '$a\\n'"${name_block_old//\\/\\\\}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$4.reg"
-            find_file=${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$4.reg
-            find_line=$(wc -l "$find_file" | awk -F" " '{print $1}')
-        else
-            print_error "$name_block_old not found in reg files"
-            return 1
-        fi
+        count=-1
+        while IFS= read -r line_reg ; do
+            ((count++))
+            if [[ $line_reg =~ $name_for_find ]] ; then
+                find_number_line=$(( count + find_line ))
+                find_check_file=1
+                break
+            fi
+            [[ -z $line_reg ]] && break
+        done <<< $(sed -n "$find_line"',$p' $find_file)
+        IFS="$orig_IFS"
     fi
-    count=-1
-    while IFS= read -r line_reg ; do
-        ((count++))
-        if [[ $line_reg =~ $name_for_find ]] ; then
-            find_number_line=$(( count + find_line ))
-            find_check_file=1
-            break
+    if [[ $1 == --add ]] ; then
+        if [[ -z $find_block ]] ; then
+            if [[ -n $name_for_new_block ]] ; then
+                sed -i '$a\\n'"${name_block_old//\\/\\\\}" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg"
+                find_file=${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/$name_for_new_block.reg
+                find_line=$(wc -l "$find_file" | awk -F" " '{print $1}')
+                find_line=$(( find_line - 1 ))
+            else
+                print_error "$name_block_old not found in reg files"
+                return 1
+            fi
         fi
-        [[ -z $line_reg ]] && break
-    done <<< $(sed -n "$find_line"',$p' $find_file)
-    IFS="$orig_IFS"
-    if [[ $name_for_set =~ ^[0-9]+$ ]] ; then
-        name_for_set=$(convert_dec_and_hex --dec "$name_for_set")
-    fi
-    if [[ ${name_for_set,,} =~ ^[a-z]+$ ]] ; then
-        if [[ $find_check_file == 1 ]] ; then
-            sed -i "${find_number_line}s/$name_for_find.*/$name_for_find\"$name_for_set\"/" "$find_file"
+        if [[ $name_for_set =~ ^[0-9]+$ ]] ; then
+            name_for_set=$(convert_dec_and_hex --dec "$name_for_set")
+        fi
+        if [[ ! $name_for_set =~ ^[0-9]+$ ]] ; then
+            if [[ $find_check_file == 1 ]] ; then
+                sed -i "${find_number_line}s/$name_for_find.*/$name_for_find\"$name_for_set\"/" "$find_file"
+            else
+                print_info "Added ${name_for_find//=*} to reg file"
+                sed -i "$(( find_line + 1 ))"'a\\n'"$name_for_find\"$name_for_set\"" "$find_file"
+            fi
         else
-            print_info "Added ${name_for_find//=*} to reg file"
-            sed -i "$(( find_line + 1 ))a$name_for_find\"$name_for_set\"" "$find_file"
-        fi
-    else
-        if [[ $find_check_file == 1 ]] ; then
-            sed -i "${find_number_line}s/$name_for_find.*/$name_for_find$name_for_set/" "$find_file"
-        else
-            print_info "Added ${name_for_find//=*} to reg file"
-            sed -i "$(( find_line + 1 ))a$name_for_find$name_for_set" "$find_file"
+            if [[ $find_check_file == 1 ]] ; then
+                sed -i "${find_number_line}s/$name_for_find.*/$name_for_find$name_for_set/" "$find_file"
+            else
+                print_info "Added ${name_for_find//=*} to reg file"
+                sed -i "$(( find_line + 1 ))"'a\\n'"$name_for_find$name_for_set" "$find_file"
+            fi
         fi
+    elif [[ $1 == --delete ]] ; then
+        [[ $find_check_file != 1 ]] && return 0
+        print_info "Delete ${name_for_find//=*} to reg file"
+        sed -i "${find_number_line}d" "$find_file"
     fi
 }
 
@@ -3610,39 +3618,28 @@ start_portwine () {
     fi
 
     if [[ "$PW_DINPUT_PROTOCOL" == "1" ]] ; then
-        get_and_set_reg_file '[System\\CurrentControlSet\\Services\\winebus]' '"DisableHidraw"=dword:' "0"
-        get_and_set_reg_file '[System\\CurrentControlSet\\Services\\winebus]' '"Enable SDL"=dword:' "0"
+        get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"DisableHidraw"=dword:' "0"
+        get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"Enable SDL"=dword:' "0"
     else
-        get_and_set_reg_file '[System\\CurrentControlSet\\Services\\winebus]' '"DisableHidraw"=dword:' "1"
-        get_and_set_reg_file '[System\\CurrentControlSet\\Services\\winebus]' '"Enable SDL"=dword:' "1"
+        get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"DisableHidraw"=dword:' "1"
+        get_and_set_reg_file --add '[System\\CurrentControlSet\\Services\\winebus]' '"Enable SDL"=dword:' "1"
     fi
 
     if [[ "$PW_WINE_DPI_VALUE" != "disabled" ]] ; then
-        get_and_set_reg_file '[Control Panel\\Desktop]' '"LogPixels"=dword:' "${PW_WINE_DPI_VALUE// (*/}"
+        get_and_set_reg_file --add '[Control Panel\\Desktop]' '"LogPixels"=dword:' "${PW_WINE_DPI_VALUE// (*/}"
     fi
 
-    WINE_WAYLAND_VAR="$(grep "x11,wayland" "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg")"
-    if [[ "${PW_USE_NATIVE_WAYLAND}" == "1" ]] ; then
-        if [[ ! "$WINE_WAYLAND_VAR" ]] ; then
-            print_info "Enable experimental Wayland support"
-            ${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \
-            "${WINELOADER}" reg add "HKEY_CURRENT_USER\Software\Wine\Drivers" /v "Graphics" /t REG_SZ /d "x11,wayland" /f
-            wait_wineserver
-        fi
+    if [[ "$PW_USE_NATIVE_WAYLAND" == "1" ]] ; then
         export PW_DISPLAY="env DISPLAY="
         export PW_USE_RUNTIME="0"
+        get_and_set_reg_file --add '[Software\\Wine\\Drivers]' '"Graphics"=' "x11,wayland" "user"
     else
         unset PW_DISPLAY
-        if [[ "$WINE_WAYLAND_VAR" ]] ; then
-            print_info "Disable experimental Wayland support"
-            ${pw_runtime} LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" GST_PLUGIN_SYSTEM_PATH_1_0="" \
-            "${WINELOADER}" reg delete "HKEY_CURRENT_USER\Software\Wine\Drivers" /v "Graphics" /f
-            wait_wineserver
-        fi
+        get_and_set_reg_file --delete '[Software\\Wine\\Drivers]' '"Graphics"=' "x11,wayland"
     fi
 
-    if [[ "${PW_SOUND_DRIVER_USE}" != "disabled" ]] ; then
-        get_and_set_reg_file '[Software\\Wine\\Drivers]' '"Audio"=' "$PW_SOUND_DRIVER_USE" "user"
+    if [[ "$PW_SOUND_DRIVER_USE" != "disabled" ]] ; then
+        get_and_set_reg_file --add '[Software\\Wine\\Drivers]' '"Audio"=' "$PW_SOUND_DRIVER_USE" "user"
     fi
 
     pw_stop_progress_bar &&