diff --git a/pkg/backend/actions.go b/pkg/backend/actions.go
index 725a550ffc36b7c3031de4d8be00e1e7648ce38c..ca45347582e4a26cd20435ae0fbc450a6828a89b 100644
--- a/pkg/backend/actions.go
+++ b/pkg/backend/actions.go
@@ -19,3 +19,7 @@ func stopVPN() {
 		log.Println(err)
 	}
 }
+
+func closeVPN() {
+	ctx.bm.Close()
+}
diff --git a/pkg/backend/api.go b/pkg/backend/api.go
index cf9ec5c89c0eabb6926459048354421237babb5c..58e0a42655a8c8252d6d404daa985c82b6ba1c26 100644
--- a/pkg/backend/api.go
+++ b/pkg/backend/api.go
@@ -30,10 +30,11 @@ func Unblock() {
 func Quit() {
 	if ctx.Status != off {
 		go setStatus(stopping)
+		ctx.cfg.SetUserStoppedVPN(false)
+	} else {
 		ctx.cfg.SetUserStoppedVPN(true)
-		stopVPN()
 	}
-	cleanup()
+	closeVPN()
 }
 
 func DonateAccepted() {
diff --git a/pkg/backend/cleanup.go b/pkg/backend/cleanup.go
deleted file mode 100644
index 16f36e47cc9ca1691a2d2d1d940b3863c57b9e67..0000000000000000000000000000000000000000
--- a/pkg/backend/cleanup.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package backend
-
-import (
-	"0xacab.org/leap/bitmask-vpn/pkg/vpn"
-)
-
-func cleanup() {
-	vpn.Cleanup()
-}
diff --git a/pkg/vpn/main.go b/pkg/vpn/main.go
index f3c5b83306201c6de3e83361b196a833e84ae668..4bf439503abc59af7446f509135d911e59eaff51 100644
--- a/pkg/vpn/main.go
+++ b/pkg/vpn/main.go
@@ -19,8 +19,6 @@ import (
 	"io/ioutil"
 	"log"
 	"os"
-	"path"
-	"path/filepath"
 
 	"0xacab.org/leap/bitmask-vpn/pkg/config"
 	"0xacab.org/leap/bitmask-vpn/pkg/vpn/bonafide"
@@ -76,7 +74,7 @@ func (b *Bitmask) GetStatusCh() <-chan string {
 	return b.statusCh
 }
 
-// Close the connection to bitmask
+// Close the connection to bitmask, and does cleanup of temporal files
 func (b *Bitmask) Close() {
 	log.Printf("Close: cleanup and vpn shutdown...")
 	b.StopVPN()
@@ -94,11 +92,3 @@ func (b *Bitmask) Close() {
 func (b *Bitmask) Version() (string, error) {
 	return "", nil
 }
-
-func Cleanup() {
-	dirs, _ := filepath.Glob(path.Join(os.TempDir(), "leap-*"))
-	for _, d := range dirs {
-		log.Println("removing temp dir:", d)
-		os.RemoveAll(d)
-	}
-}