diff --git a/cmd/cmd.go b/cmd/cmd.go
index d38c627..1754145 100644
--- a/cmd/cmd.go
+++ b/cmd/cmd.go
@@ -5,7 +5,7 @@ import (
 	"strings"
 
 	"hack-browser-data/core"
-	"hack-browser-data/log"
+	"hack-browser-data/pkg/log"
 	"hack-browser-data/utils"
 
 	"github.com/urfave/cli/v2"
diff --git a/cmd/hackbrowserdata/main.go b/cmd/hackbrowserdata/main.go
new file mode 100644
index 0000000..190ebe2
--- /dev/null
+++ b/cmd/hackbrowserdata/main.go
@@ -0,0 +1 @@
+package hackbrowserdata
diff --git a/core/browser.go b/core/browser.go
index 63eb97f..4ab36ab 100644
--- a/core/browser.go
+++ b/core/browser.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 
 	"hack-browser-data/core/data"
-	"hack-browser-data/log"
+	"hack-browser-data/pkg/log"
 )
 
 const (
diff --git a/core/browser_linux.go b/core/browser_linux.go
index 80eae05..6d2a264 100644
--- a/core/browser_linux.go
+++ b/core/browser_linux.go
@@ -3,11 +3,11 @@ package core
 import (
 	"crypto/sha1"
 
-	"hack-browser-data/log"
-
 	"github.com/godbus/dbus/v5"
 	keyring "github.com/ppacher/go-dbus-keyring"
 	"golang.org/x/crypto/pbkdf2"
+
+	"hack-browser-data/pkg/log"
 )
 
 const (
diff --git a/core/data/parse.go b/core/data/parse.go
index 332ea1d..992c82d 100644
--- a/core/data/parse.go
+++ b/core/data/parse.go
@@ -12,7 +12,7 @@ import (
 	"time"
 
 	"hack-browser-data/core/decrypt"
-	"hack-browser-data/log"
+	"hack-browser-data/pkg/log"
 	"hack-browser-data/utils"
 
 	_ "github.com/mattn/go-sqlite3"
@@ -657,14 +657,14 @@ func (p *passwords) FirefoxParse() error {
 	keyLin := []byte{248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}
 	metaPBE, err := decrypt.NewASN1PBE(metaBytes)
 	if err != nil {
-		log.Error("decrypt meta data failed", err)
+		log.Error("decrypter meta data failed", err)
 		return err
 	}
 	// default master password is empty
 	var masterPwd []byte
 	k, err := metaPBE.Decrypt(globalSalt, masterPwd)
 	if err != nil {
-		log.Error("decrypt firefox meta bytes failed", err)
+		log.Error("decrypter firefox meta bytes failed", err)
 		return err
 	}
 	if bytes.Contains(k, []byte("password-check")) {
@@ -703,7 +703,7 @@ func (p *passwords) FirefoxParse() error {
 				if err != nil {
 					log.Error(err)
 				}
-				log.Debug("decrypt firefox success")
+				log.Debug("decrypter firefox success")
 				p.logins = append(p.logins, loginData{
 					LoginUrl:   v.LoginUrl,
 					UserName:   string(decrypt.PKCS5UnPadding(user)),
diff --git a/core/decrypt/decrypt.go b/core/decrypt/decrypt.go
index 52af0ce..82740f8 100644
--- a/core/decrypt/decrypt.go
+++ b/core/decrypt/decrypt.go
@@ -16,7 +16,7 @@ import (
 var (
 	errSecurityKeyIsEmpty = errors.New("input [security find-generic-password -wa 'Chrome'] in terminal")
 	errPasswordIsEmpty    = errors.New("password is empty")
-	errDecryptFailed      = errors.New("decrypt encrypt value failed")
+	errDecryptFailed      = errors.New("decrypter encrypt value failed")
 	errDecodeASN1Failed   = errors.New("decode ASN1 data failed")
 	errEncryptedLength    = errors.New("length of encrypted password less than block size")
 )
@@ -189,7 +189,7 @@ func PKCS5UnPadding(src []byte) []byte {
 	return src[:(length - unpad)]
 }
 
-// des3Decrypt use for decrypt firefox PBE
+// des3Decrypt use for decrypter firefox PBE
 func des3Decrypt(key, iv []byte, src []byte) ([]byte, error) {
 	block, err := des.NewTripleDESCipher(key)
 	if err != nil {