diff --git a/Makefile b/Makefile
index 3525c4402edf767269a3cbc13a13773045bd02ef..f2c462d8aad0858b01b8b6f16381a4512d468338 100644
--- a/Makefile
+++ b/Makefile
@@ -73,18 +73,26 @@ else
 EXTRA_FLAGS =
 endif
 
+ifeq ($(PLATFORM), windows)
+EXTRA_GO_LDFLAGS = "-H windowsgui"
+endif
+
 golib:
 	# TODO stop building golib in gui/build.sh, it's redundant. 
 	# we should port the buildGoLib parts of the gui/build.sh script here
 	@echo "doing nothing"
 
-build: golib build_helper build_openvpn
-	@XBUILD=no TARGET=${TARGET} gui/build.sh
+build_gui:
+	@XBUILD=no TARGET=${TARGET} VENDOR_PATH=${VENDOR_PATH}/${PROVIDER} gui/build.sh
+
+build: golib build_helper build_openvpn build_gui
 
 build_helper:
 	@echo "PLATFORM: ${PLATFORM}"
 	@mkdir -p build/bin/${PLATFORM}
-	go build -o build/bin/${PLATFORM}/bitmask-helper -ldflags "-X main.AppName=${APPNAME} -X main.Version=${VERSION} -H windowsgui" ./cmd/bitmask-helper/
+
+	go build -o build/bin/${PLATFORM}/bitmask-helper -ldflags "-X main.AppName=${APPNAME} -X main.Version=${VERSION} ${EXTRA_GO_LDFLAGS}" ./cmd/bitmask-helper/
+	@echo "build helper done."
 
 build_openvpn:
 	@[ -f $(OPENVPN_BIN) ] && echo "OpenVPN already built at" $(OPENVPN_BIN) || ./branding/thirdparty/openvpn/build_openvpn.sh
diff --git a/bitmask.pro b/bitmask.pro
index 795a3d52d2e49de4ee3adef74a8bcbd4b5786508..c22ee8c7d235f4061d39f8540c2a002ede50a76a 100644
--- a/bitmask.pro
+++ b/bitmask.pro
@@ -6,13 +6,19 @@ unix:DEBUG:CONFIG += debug
 lessThan(QT_MAJOR_VERSION, 5): error("requires Qt 5")
 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.11
 
+!defined(VENDOR_PATH, var):VENDOR_PATH="providers/riseup"
+
+RESOURCES += gui/gui.qrc
+RESOURCES += $$VENDOR_PATH/vendor.qrc
+
+ICON = $$VENDOR_PATH/icon.png
+
 macx {
+    ICON = $$VENDOR_PATH/assets/icon.icns
     LIBS += -framework Security
-    # TODO -- pass the vendor icon here from Makefile.
-    ICON = branding/assets/riseup/icon.icns
 }
 win32 {
-    RC_ICONS = branding/assets/riseup/icon.ico
+    RC_ICONS = $$VENDOR_PATH/assets/icon.ico
 }
 
 QT += qml quick widgets
@@ -31,9 +37,6 @@ HEADERS += \
 # we build from build/qt
 LIBS += -L../../lib -lgoshim -lpthread
 
-RESOURCES += gui/gui.qrc
-RESOURCES += providers/riseup/vendor.qrc
-
 DESTDIR = release
 OBJECTS_DIR = release/.obj
 MOC_DIR = release/.moc
diff --git a/branding/scripts/init b/branding/scripts/init
index 4c57d43d1303bf1edffe70204ee71d2d41f5268b..aa22326655358ac69682650b9ef29c7dccd95d04 100755
--- a/branding/scripts/init
+++ b/branding/scripts/init
@@ -12,6 +12,7 @@ PROVIDER=None
 SCRIPT_NAME = sys.argv[0]
 CA_README = "CERT.Readme"
 ASSETS_README = "assets/FILES.Readme"
+VENDOR_QRC = "vendor.qrc"
 
 def initVendor():
     global VENDOR_PATH
@@ -87,11 +88,15 @@ def initVendorConfig():
 
     with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "ASSETS_REQUIRED")) as f:
         allAssets = f.read()
-
     with open(os.path.join(VENDOR_PATH, ASSETS_README), "w") as f:
         f.write(ASSETS_INFO)
         f.write(allAssets)
 
+    with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../templates/vendor/vendor.qrc")) as f:
+        qrc = f.read()
+    with open(os.path.join(VENDOR_PATH, VENDOR_QRC), "w") as f:
+        f.write(qrc)
+
 def initGitRepo():
     out = subprocess.run(['git', 'init'], cwd=VENDOR_PATH)
     if out.returncode != 0:
diff --git a/branding/templates/vendor/vendor.qrc b/branding/templates/vendor/vendor.qrc
new file mode 100644
index 0000000000000000000000000000000000000000..2cfa32b86cad15ada6345b3feab2d54d5326c8a3
--- /dev/null
+++ b/branding/templates/vendor/vendor.qrc
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/vendor/">
+        <file alias="icon.svg">assets/icon.svg</file>
+    </qresource>
+</RCC>
diff --git a/gui/build.sh b/gui/build.sh
index 8b336fa79b87a0588c7322a8a7a1f13e2b9caea1..deb73a1c43692a5a07c8d6ba845fb7dda757bcc5 100755
--- a/gui/build.sh
+++ b/gui/build.sh
@@ -1,6 +1,9 @@
 #!/bin/bash
 set -e
-set -x
+
+# DEBUG --------------
+# set -x
+# --------------------
 
 XBUILD=${XBUILD-no}
 OSX_TARGET=10.11
@@ -13,6 +16,7 @@ SOURCE_GOLIB=gui/backend.go
 
 QTBUILD=build/qt
 RELEASE=$QTBUILD/release
+VENDOR_PATH=${VENDOR_PATH-providers/riseup}
 
 PLATFORM=$(uname -s)
 LDFLAGS=""
@@ -72,8 +76,9 @@ function buildGoLib {
 function buildQmake {
     echo "[+] Now building Qml app with Qt qmake"
     echo "[+] Using qmake in:" $QMAKE
+    echo "[+] VENDOR_PATH:" $VENDOR_PATH
     mkdir -p $QTBUILD
-    $QMAKE -o $QTBUILD/Makefile "CONFIG-=debug CONFIG+=release" $PROJECT
+    $QMAKE -o $QTBUILD/Makefile "CONFIG-=debug CONFIG+=release VENDOR_PATH=${VENDOR_PATH}" $PROJECT
 }
 
 function renameOutput {
diff --git a/gui/main.cpp b/gui/main.cpp
index 684b0be2fa2419c778961a0f6bdd351e4cf8e4cb..893cb4d233ca7c0c4b1e30b007df9c05f214c189 100644
--- a/gui/main.cpp
+++ b/gui/main.cpp
@@ -152,6 +152,9 @@ int main(int argc, char **argv) {
     QTranslator translator;
     translator.load(QLocale(), QLatin1String("main"), QLatin1String("_"), QLatin1String(":/i18n"));
     app.installTranslator(&translator);
+    /* set window icon */
+    app.setWindowIcon(QIcon(":/vendor/icon.svg"));
+
 
     QQmlApplicationEngine engine;
     QQmlContext *ctx = engine.rootContext();
diff --git a/gui/providers/providers.json b/gui/providers/providers.json
index 5c9b08b6583c64bb837496ff879fa78bb65454c0..6f82ba37ce9b8d82349a46aeaa12e1b8043fffeb 100644
--- a/gui/providers/providers.json
+++ b/gui/providers/providers.json
@@ -15,7 +15,7 @@
             "apiURL": "https://api.black.riseup.net/",
             "geolocationAPI": "https://api.black.riseup.net:9001/json",
             "caCertString": "-----BEGIN CERTIFICATE-----\nMIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl\ndXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE\nAwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw\nNDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM\nEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv\nb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m\nTP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a\n7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE\nLliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY\niw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK\n5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx\nHUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58\nm/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF\nPM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q\nhzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj\nshczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k\nha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu\nf9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD\nVR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB\nAGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v\nqHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/\n3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ\n4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7\n3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch\nTd5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf\nXu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg\ntsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF\ntGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ\nUN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp\n0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO\n-----END CERTIFICATE-----",
-            "timeStamp": "2020-10-08 18:10:13"
+            "timeStamp": "2020-10-09 22:41:19"
         }
     ]
-}
+}
\ No newline at end of file
diff --git a/gui/qml/AboutDialog.qml b/gui/qml/AboutDialog.qml
index a101ea3d2495633a0786036e2782c0e4fd24f9fb..bd3d77e8eaf9f11bd23d7036a45fde3eb25a667b 100644
--- a/gui/qml/AboutDialog.qml
+++ b/gui/qml/AboutDialog.qml
@@ -5,6 +5,7 @@ MessageDialog {
     title: qsTr("About")
     text: getText()
     informativeText: getVersion() 
+    icon: StandardIcon.Information
 
     function getText() {
         var _name = ctx ? ctx.appName : "vpn"
diff --git a/gui/qml/main.qml b/gui/qml/main.qml
index ce72fffc84114b8f6c2f49f8bc361e0af13d82d6..dcffcdef13dc46768dcb4f86e01e8c844eeffb3f 100644
--- a/gui/qml/main.qml
+++ b/gui/qml/main.qml
@@ -42,6 +42,9 @@ ApplicationWindow {
                    showInitFailure()
                }
             }
+            if (ctx.donateURL) {
+                donateItem.visible = true
+            }
         }
     }
 
@@ -98,8 +101,8 @@ ApplicationWindow {
         allowEmptyPass = shouldAllowEmptyPass()
 
         app.visible = true;
-        show();
-        hide();
+        //show();
+        //hide();
     }
 
     function toHuman(st) {
@@ -251,8 +254,9 @@ ApplicationWindow {
             }
 
             MenuItem {
+                id: donateItem
                 text: qsTr("Donate...")
-                visible: ctx && ctx.donateURL
+                visible: ctx ? ctx.donateURL : false
                 onTriggered: { donate.visible = true }
             }
 
diff --git a/pkg/config/logger.go b/pkg/config/logger.go
index cb78349581615ae4e26c037e7831c45843cc5d43..cc7a4f65a4fc3536a26a83ba9ccfd478e73d7097 100644
--- a/pkg/config/logger.go
+++ b/pkg/config/logger.go
@@ -25,9 +25,13 @@ import (
 //ConfigureLogger to write logs into a file as well as the stderr
 func ConfigureLogger(logPath string) (io.Closer, error) {
 	dir := path.Dir(logPath)
-	err := os.MkdirAll(dir, 0700)
-	if err == nil {
-		log.Println("ERROR: cannot create data dir")
+	if _, err := os.Stat(dir); err != nil {
+		if os.IsNotExist(err) {
+			err := os.MkdirAll(dir, 0700)
+			if err == nil {
+				log.Println("ERROR: cannot create data dir")
+			}
+		}
 	}
 	logFile, err := os.OpenFile(logPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
 	if err == nil {
diff --git a/providers/riseup/vendor.qrc b/providers/riseup/vendor.qrc
new file mode 100644
index 0000000000000000000000000000000000000000..2cfa32b86cad15ada6345b3feab2d54d5326c8a3
--- /dev/null
+++ b/providers/riseup/vendor.qrc
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/vendor/">
+        <file alias="icon.svg">assets/icon.svg</file>
+    </qresource>
+</RCC>