diff --git a/gui/backend.go b/gui/backend.go
index d05ba7a97494919866ce458ec1fe0a3c0fa549c9..cf7c0fb225fef88514fa1f27da5cc3c5b02bc4d4 100644
--- a/gui/backend.go
+++ b/gui/backend.go
@@ -6,22 +6,16 @@ import (
 	"bytes"
 	"encoding/json"
 	"fmt"
-	"io"
 	"log"
 	"net/http"
 	"os"
-	"path"
 	"reflect"
 	"sync"
 	//"time"
 	"unsafe"
 
 	"0xacab.org/leap/bitmask-vpn/pkg/bitmask"
-	"0xacab.org/leap/bitmask-vpn/pkg/config"
 	"0xacab.org/leap/bitmask-vpn/pkg/pickle"
-	"0xacab.org/leap/bitmask-vpn/pkg/systray2"
-	"github.com/jmshal/go-locale"
-	"golang.org/x/text/message"
 )
 
 // typedef void (*cb)();
@@ -184,37 +178,17 @@ func setStatusFromStr(stStr string) {
 	setStatus(unknown.fromString(stStr))
 }
 
-func initPrinter() *message.Printer {
-	locale, err := go_locale.DetectLocale()
-	if err != nil {
-		log.Println("Error detecting the system locale: ", err)
-	}
-
-	return message.NewPrinter(message.MatchLanguage(locale, "en"))
-}
-
-const logFile = "systray.log"
-
-var logger io.Closer
-
 // initializeBitmask instantiates a bitmask connection
 func initializeBitmask() {
-	_, err := config.ConfigureLogger(path.Join(config.Path, logFile))
-
-	if err != nil {
-		log.Println("Can't configure logger: ", err)
-	}
-
 	if ctx == nil {
 		log.Println("error: cannot initialize bitmask, ctx is nil")
 		os.Exit(1)
 	}
-	conf := systray.ParseConfig()
-	conf.Version = "unknown"
-	conf.Printer = initPrinter()
-	b, err := bitmask.Init(conf.Printer)
+	bitmask.InitializeLogger()
+
+	b, err := bitmask.InitializeBitmask()
 	if err != nil {
-		log.Fatal(err)
+		log.Println("error: cannot initialize bitmask")
 	}
 	ctx.bm = b
 }
@@ -318,10 +292,10 @@ func SubscribeToEvent(event string, f unsafe.Pointer) {
 
 //export InitializeBitmaskContext
 func InitializeBitmaskContext() {
-	provider := config.Provider
-	appName := config.ApplicationName
+	pi := bitmask.GetConfiguredProvider()
+
 	initOnce.Do(func() {
-		initializeContext(provider, appName)
+		initializeContext(pi.Provider, pi.AppName)
 	})
 	go ctx.updateStatus()
 
diff --git a/pkg/bitmask/autostart.go b/pkg/bitmask/autostart.go
index 32b931a2bf06b2bbb4c9afbaac8bd27482e6a7a9..ebab428a72af5e2dc78c7b4044864ffd26cddeb0 100644
--- a/pkg/bitmask/autostart.go
+++ b/pkg/bitmask/autostart.go
@@ -21,12 +21,12 @@ type Autostart interface {
 	Enable() error
 }
 
-type DummyAutostart struct{}
+type dummyAutostart struct{}
 
-func (a *DummyAutostart) Disable() error {
+func (a *dummyAutostart) Disable() error {
 	return nil
 }
 
-func (a *DummyAutostart) Enable() error {
+func (a *dummyAutostart) Enable() error {
 	return nil
 }
diff --git a/pkg/bitmask/bitmaskd.go b/pkg/bitmask/bitmaskd.go
deleted file mode 100644
index a8c4e5d20727d3c4fbbec4f8cd9a19349e81da7c..0000000000000000000000000000000000000000
--- a/pkg/bitmask/bitmaskd.go
+++ /dev/null
@@ -1,44 +0,0 @@
-// +build bitmaskd
-// Copyright (C) 2018 LEAP
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-package bitmask
-
-import (
-	"errors"
-	"log"
-
-	"0xacab.org/leap/bitmask-vpn/pkg/bitmaskd"
-	"golang.org/x/text/message"
-)
-
-const (
-	notRunning = `Is bitmaskd running? Start bitmask and try again.`
-)
-
-// Init bitmask
-func Init(printer *message.Printer) (Bitmask, error) {
-	b, err := bitmaskd.Init()
-	if err != nil {
-		log.Printf("An error ocurred starting bitmaskd: %v", err)
-		err = errors.New(printer.Sprintf(notRunning))
-	}
-	return b, err
-}
-
-// NewAutostart creates a handler for the autostart of your platform
-func NewAutostart(appName string, iconPath string) Autostart {
-	return &DummyAutostart{}
-}
diff --git a/pkg/systray2/run.go b/pkg/bitmask/init.go
similarity index 58%
rename from pkg/systray2/run.go
rename to pkg/bitmask/init.go
index 00c2c9436d1a29ed67fd9ea2c659646caa420bad..9af79489578ad9e2745caf06dd8673aa84798085 100644
--- a/pkg/systray2/run.go
+++ b/pkg/bitmask/init.go
@@ -1,4 +1,4 @@
-// Copyright (C) 2018 LEAP
+// Copyright (C) 2018-2020 LEAP
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -13,52 +13,83 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-package systray
+package bitmask
 
 import (
 	"log"
 	"os"
+	"path"
+
+	"github.com/jmshal/go-locale"
+	"golang.org/x/text/message"
 
-	"0xacab.org/leap/bitmask-vpn/pkg/bitmask"
 	"0xacab.org/leap/bitmask-vpn/pkg/config"
+	"0xacab.org/leap/bitmask-vpn/pkg/pid"
 )
 
-/*
-func initialize(conf *Config, bt *bmTray, finishedCh chan bool) {
-	defer func() { finishedCh <- true }()
+type ProviderInfo struct {
+	Provider string
+	AppName  string
+}
+
+func GetConfiguredProvider() *ProviderInfo {
+	provider := config.Provider
+	appName := config.ApplicationName
+	return &ProviderInfo{provider, appName}
+}
+
+func InitializeLogger() {
+	_, err := config.ConfigureLogger(path.Join(config.LogPath))
+	if err != nil {
+		log.Println("Can't configure logger: ", err)
+	}
+}
+
+func InitializeBitmask() (Bitmask, error) {
 	if _, err := os.Stat(config.Path); os.IsNotExist(err) {
 		os.MkdirAll(config.Path, os.ModePerm)
 	}
 
-	err := acquirePID()
+	err := pid.AcquirePID()
 	if err != nil {
 		log.Fatal(err)
 	}
-	defer releasePID()
+	defer pid.ReleasePID()
+
+	conf := config.ParseConfig()
+	conf.Version = "unknown"
+	conf.Printer = initPrinter()
 
-	b, err := bitmask.Init(conf.Printer)
+	b, err := Init(conf.Printer)
 	if err != nil {
 		// TODO notify failure
-		return
+		log.Fatal(err)
 	}
-	defer b.Close()
 	go checkAndStartBitmask(b, conf)
-	go listenSignals(b)
 
-	var as bitmask.Autostart
+	var as Autostart
 	if conf.DisableAustostart {
-		as = &bitmask.DummyAutostart{}
+		as = &dummyAutostart{}
 	} else {
-		as = bitmask.NewAutostart(config.ApplicationName, "")
+		as = newAutostart(config.ApplicationName, "")
 	}
 	err = as.Enable()
 	if err != nil {
 		log.Printf("Error enabling autostart: %v", err)
 	}
+	return b, nil
+}
+
+func initPrinter() *message.Printer {
+	locale, err := go_locale.DetectLocale()
+	if err != nil {
+		log.Println("Error detecting the system locale: ", err)
+	}
+
+	return message.NewPrinter(message.MatchLanguage(locale, "en"))
 }
-*/
 
-func checkAndStartBitmask(b bitmask.Bitmask, conf *Config) {
+func checkAndStartBitmask(b Bitmask, conf *config.Config) {
 	if conf.Obfs4 {
 		err := b.UseTransport("obfs4")
 		if err != nil {
@@ -76,9 +107,9 @@ func checkAndStartBitmask(b bitmask.Bitmask, conf *Config) {
 	}
 }
 
-func checkAndInstallHelpers(b bitmask.Bitmask) error {
-	helpers, priviledge, err := b.VPNCheck()
-	if (err != nil && err.Error() == "nopolkit") || (err == nil && !priviledge) {
+func checkAndInstallHelpers(b Bitmask) error {
+	helpers, privilege, err := b.VPNCheck()
+	if (err != nil && err.Error() == "nopolkit") || (err == nil && !privilege) {
 		log.Printf("No polkit found")
 		os.Exit(1)
 	} else if err != nil {
@@ -95,12 +126,12 @@ func checkAndInstallHelpers(b bitmask.Bitmask) error {
 	return nil
 }
 
-func maybeStartVPN(b bitmask.Bitmask, conf *Config) error {
+func maybeStartVPN(b Bitmask, conf *config.Config) error {
 	if !conf.StartVPN {
 		return nil
 	}
 
 	err := b.StartVPN(config.Provider)
-	conf.setUserStoppedVPN(false)
+	conf.SetUserStoppedVPN(false)
 	return err
 }
diff --git a/pkg/bitmask/standalone.go b/pkg/bitmask/standalone.go
index 8ae6f3955224f7d99becf8b2f99aef7fbc82c321..92ea542ce9a6dd76df8eefb966deb56544d37846 100644
--- a/pkg/bitmask/standalone.go
+++ b/pkg/bitmask/standalone.go
@@ -43,8 +43,8 @@ func Init(printer *message.Printer) (Bitmask, error) {
 	return b, err
 }
 
-// NewAutostart creates a handler for the autostart of your platform
-func NewAutostart(appName string, iconPath string) Autostart {
+// newAutostart creates a handler for the autostart of your platform
+func newAutostart(appName string, iconPath string) Autostart {
 	exec := os.Args
 	if os.Getenv("SNAP") != "" {
 		re := regexp.MustCompile("/snap/([^/]*)/")
diff --git a/pkg/bitmaskd/events.go b/pkg/bitmaskd/events.go
deleted file mode 100644
index 3c8bb2c9354c148d4ee7c371daeaa14e1ec4c835..0000000000000000000000000000000000000000
--- a/pkg/bitmaskd/events.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (C) 2018 LEAP
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-package bitmaskd
-
-import (
-	"log"
-	"net/http"
-)
-
-const (
-	statusEvent = "VPN_STATUS_CHANGED"
-)
-
-func (b *Bitmask) eventsHandler() {
-	b.send("events", "register", statusEvent)
-	client := &http.Client{
-		Timeout: 0,
-	}
-	for {
-		resJSON, err := send(b.apiToken, client, "events", "poll")
-		res, ok := resJSON.([]interface{})
-		if err != nil || !ok || len(res) < 1 {
-			continue
-		}
-		event, ok := res[0].(string)
-		if !ok || event != statusEvent {
-			continue
-		}
-
-		status, err := b.GetStatus()
-		if err != nil {
-			log.Printf("Error receiving status: %v", err)
-			continue
-		}
-		b.statusCh <- status
-	}
-}
diff --git a/pkg/bitmaskd/main.go b/pkg/bitmaskd/main.go
deleted file mode 100644
index b0d034962f02abbb10813ede03cd3d4b846ec863..0000000000000000000000000000000000000000
--- a/pkg/bitmaskd/main.go
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright (C) 2018 LEAP
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-package bitmaskd
-
-import (
-	"bytes"
-	"encoding/json"
-	"errors"
-	"io/ioutil"
-	"log"
-	"net/http"
-	"path"
-	"time"
-
-	"0xacab.org/leap/bitmask-vpn/pkg/config"
-)
-
-const (
-	timeout    = time.Second * 15
-	url        = "http://localhost:7070/API/"
-	headerAuth = "X-Bitmask-Auth"
-)
-
-// Bitmask holds the bitmask client data
-type Bitmask struct {
-	client   *http.Client
-	apiToken string
-	statusCh chan string
-}
-
-// Init the connection to bitmask
-func Init() (*Bitmask, error) {
-	statusCh := make(chan string)
-	client := &http.Client{
-		Timeout: timeout,
-	}
-
-	err := waitForBitmaskd()
-	if err != nil {
-		return nil, err
-	}
-
-	apiToken, err := getToken()
-	if err != nil {
-		return nil, err
-	}
-
-	b := Bitmask{client, apiToken, statusCh}
-	go b.eventsHandler()
-	return &b, nil
-}
-
-// GetStatusCh returns a channel that will recieve VPN status changes
-func (b *Bitmask) GetStatusCh() <-chan string {
-	return b.statusCh
-}
-
-// Close the connection to bitmask
-func (b *Bitmask) Close() {
-	_, err := b.send("core", "stop")
-	if err != nil {
-		log.Printf("Got an error stopping bitmaskd: %v", err)
-	}
-}
-
-// Version gets the bitmask version string
-func (b *Bitmask) Version() (string, error) {
-	res, err := b.send("core", "version")
-	if err != nil {
-		return "", err
-	}
-	return res["version_core"].(string), nil
-}
-
-func waitForBitmaskd() error {
-	var err error
-	for i := 0; i < 30; i++ {
-		resp, err := http.Post(url, "", nil)
-		if err == nil {
-			resp.Body.Close()
-			return nil
-		}
-		log.Printf("Bitmask is not ready (iteration %d): %v", i, err)
-		time.Sleep(1 * time.Second)
-	}
-	return err
-}
-
-func (b *Bitmask) send(parts ...interface{}) (map[string]interface{}, error) {
-	resJSON, err := send(b.apiToken, b.client, parts...)
-	if err != nil {
-		return nil, err
-	}
-	result, ok := resJSON.(map[string]interface{})
-	if !ok {
-		return nil, errors.New("Not valid response")
-	}
-	return result, nil
-}
-
-func send(apiToken string, client *http.Client, parts ...interface{}) (interface{}, error) {
-	apiSection, _ := parts[0].(string)
-	reqBody, err := json.Marshal(parts[1:])
-	if err != nil {
-		return nil, err
-	}
-	req, err := http.NewRequest("POST", url+apiSection, bytes.NewReader(reqBody))
-	if err != nil {
-		return nil, err
-	}
-	req.Header.Add(headerAuth, apiToken)
-
-	resp, err := client.Do(req)
-	if err != nil {
-		return nil, err
-	}
-	defer resp.Body.Close()
-
-	resJSON, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		return nil, err
-	}
-	return parseResponse(resJSON)
-}
-
-func parseResponse(resJSON []byte) (interface{}, error) {
-	var response struct {
-		Result interface{}
-		Error  string
-	}
-	err := json.Unmarshal(resJSON, &response)
-	if response.Error != "" {
-		return nil, errors.New(response.Error)
-	}
-	return response.Result, err
-}
-
-func getToken() (string, error) {
-	var err error
-	path := path.Join(config.Path, "authtoken")
-	for i := 0; i < 30; i++ {
-		b, err := ioutil.ReadFile(path)
-		if err == nil {
-			return string(b), nil
-		}
-		log.Printf("Auth token is not ready (iteration %d): %v", i, err)
-		time.Sleep(1 * time.Second)
-	}
-	return "", err
-}
diff --git a/pkg/bitmaskd/vpn.go b/pkg/bitmaskd/vpn.go
deleted file mode 100644
index 2747441f6c8b929948dc1037b5377506718c3d16..0000000000000000000000000000000000000000
--- a/pkg/bitmaskd/vpn.go
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright (C) 2018 LEAP
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-package bitmaskd
-
-import (
-	"errors"
-	"log"
-)
-
-// StartVPN for provider
-func (b *Bitmask) StartVPN(provider string) error {
-	_, err := b.send("vpn", "start", provider)
-	return err
-}
-
-// StopVPN or cancel
-func (b *Bitmask) StopVPN() error {
-	_, err := b.send("vpn", "stop")
-	return err
-}
-
-// ReloadFirewall restarts the firewall
-func (b *Bitmask) ReloadFirewall() error {
-	_, err := b.send("vpn", "fw_reload")
-	return err
-}
-
-// GetStatus returns the VPN status
-func (b *Bitmask) GetStatus() (string, error) {
-	res, err := b.send("vpn", "status")
-	if err != nil {
-		return "", err
-	}
-	return res["status"].(string), nil
-}
-
-// InstallHelpers into the system
-func (b *Bitmask) InstallHelpers() error {
-	_, err := b.send("vpn", "install")
-	return err
-}
-
-// VPNCheck returns if the helpers are installed and up to date and if polkit is running
-func (b *Bitmask) VPNCheck() (helpers bool, priviledge bool, err error) {
-	res, err := b.send("vpn", "check", "")
-	if err != nil {
-		return false, false, err
-	}
-	installed, ok := res["installed"].(bool)
-	if !ok {
-		log.Printf("Unexpected value for installed on 'vpn check': %v", res)
-		return false, false, errors.New("Invalid response format")
-	}
-	privcheck, ok := res["privcheck"].(bool)
-	if !ok {
-		log.Printf("Unexpected value for privcheck on 'vpn check': %v", res)
-		return installed, false, errors.New("Invalid response format")
-	}
-	return installed, privcheck, nil
-}
-
-// ListGateways return the names of the gateways
-func (b *Bitmask) ListGateways(provider string) ([]string, error) {
-	res, err := b.send("vpn", "list")
-	if err != nil {
-		return nil, err
-	}
-
-	names := []string{}
-	locations, ok := res[provider].([]interface{})
-	if !ok {
-		return nil, errors.New("Can't read the locations for provider " + provider)
-	}
-	for i := range locations {
-		loc := locations[i].(map[string]interface{})
-		names = append(names, loc["name"].(string))
-	}
-	return names, nil
-}
-
-// UseGateway selects name as the default gateway
-func (b *Bitmask) UseGateway(name string) error {
-	_, err := b.send("vpn", "locations", name)
-	return err
-}
-
-// UseTransport selects an obfuscation transport to use
-func (b *Bitmask) UseTransport(transport string) error {
-	return errors.New("Transport " + transport + " not implemented")
-}
diff --git a/pkg/systray2/config.go b/pkg/config/gui.go
similarity index 83%
rename from pkg/systray2/config.go
rename to pkg/config/gui.go
index 75a4a984fb43975226a97bfd0c6a9625cdf6febd..ce3f14d61d7137165179a4f063f7fb003d35ea5e 100644
--- a/pkg/systray2/config.go
+++ b/pkg/config/gui.go
@@ -1,4 +1,4 @@
-// Copyright (C) 2018 LEAP
+// Copyright (C) 2018-2020 LEAP
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -13,7 +13,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-package systray
+package config
 
 import (
 	"encoding/json"
@@ -21,7 +21,6 @@ import (
 	"path"
 	"time"
 
-	"0xacab.org/leap/bitmask-vpn/pkg/config"
 	"golang.org/x/text/message"
 )
 
@@ -31,7 +30,8 @@ const (
 )
 
 var (
-	configPath = path.Join(config.Path, "systray.json")
+	configPath = path.Join(Path, "systray.json")
+	LogPath    = path.Join(Path, "systray.log")
 )
 
 // Config holds the configuration of the systray
@@ -72,25 +72,25 @@ func ParseConfig() *Config {
 	return &conf
 }
 
-func (c *Config) setUserStoppedVPN(vpnStopped bool) error {
+func (c *Config) SetUserStoppedVPN(vpnStopped bool) error {
 	c.file.UserStoppedVPN = vpnStopped
 	return c.save()
 }
 
-func (c *Config) hasDonated() bool {
+func (c *Config) HasDonated() bool {
 	return c.file.Donated.Add(oneMonth).After(time.Now())
 }
 
-func (c *Config) needsNotification() bool {
-	return !c.hasDonated() && c.file.LastNotification.Add(oneDay).Before(time.Now())
+func (c *Config) NeedsNotification() bool {
+	return !c.HasDonated() && c.file.LastNotification.Add(oneDay).Before(time.Now())
 }
 
-func (c *Config) setNotification() error {
+func (c *Config) SetNotification() error {
 	c.file.LastNotification = time.Now()
 	return c.save()
 }
 
-func (c *Config) setDonated() error {
+func (c *Config) SetDonated() error {
 	c.file.Donated = time.Now()
 	return c.save()
 }
diff --git a/pkg/systray2/pid.go b/pkg/pid/pid.go
similarity index 68%
rename from pkg/systray2/pid.go
rename to pkg/pid/pid.go
index b898d4e40a896938d9752ee48d441f64eba886bb..1124210610a8a8f0bff5893f6d5eed1faaf5a1b5 100644
--- a/pkg/systray2/pid.go
+++ b/pkg/pid/pid.go
@@ -1,4 +1,19 @@
-package systray
+// Copyright (C) 2018-2020 LEAP
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+package pid
 
 import (
 	"fmt"
@@ -16,7 +31,7 @@ import (
 
 var pidFile = filepath.Join(config.Path, "systray.pid")
 
-func acquirePID() error {
+func AcquirePID() error {
 	pid := syscall.Getpid()
 	current, err := getPID()
 	if err != nil {
@@ -30,7 +45,7 @@ func acquirePID() error {
 	return setPID(pid)
 }
 
-func releasePID() error {
+func ReleasePID() error {
 	pid := syscall.Getpid()
 	current, err := getPID()
 	if err != nil {
diff --git a/pkg/systray2/pid_test.go b/pkg/pid/pid_test.go
similarity index 94%
rename from pkg/systray2/pid_test.go
rename to pkg/pid/pid_test.go
index dda83848520c56b42afe81fc3ceffa69d77263a7..dbc76f3569cbe916f6ec239529911a67bdf2605f 100644
--- a/pkg/systray2/pid_test.go
+++ b/pkg/pid/pid_test.go
@@ -1,4 +1,4 @@
-package systray
+package pid
 
 import (
 	"syscall"