diff --git a/Makefile b/Makefile
index 366cd882..d1d62181 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 export PATH := $(GOPATH)/bin:$(PATH)
-export GOPATH := $(shell pwd)/Godeps/_workspace:$(shell pwd):$(GOPATH)
+export GOPATH := $(shell pwd)/Godeps/_workspace:$(GOPATH)
 
 all: build
 
@@ -14,11 +14,11 @@ fmt:
 	@go fmt ./test/func_test.go
 
 frps:
-	go build -o bin/frps ./src/frp/cmd/frps
+	go build -o bin/frps ./src/cmd/frps
 	cp -rf ./assets ./bin
 
 frpc:
-	go build -o bin/frpc ./src/frp/cmd/frpc
+	go build -o bin/frpc ./src/cmd/frpc
 
 echo_server:
 	go build -o test/bin/echo_server ./test/echo_server.go
diff --git a/Makefile.cross-compiles b/Makefile.cross-compiles
index 5f47bb85..bac83e35 100644
--- a/Makefile.cross-compiles
+++ b/Makefile.cross-compiles
@@ -1,6 +1,6 @@
 export PATH := $(GOPATH)/bin:$(PATH)
 export OLDGOPATH := $(GOPATH)
-export GOPATH := $(shell pwd)/Godeps/_workspace:$(shell pwd):$(GOPATH)
+export GOPATH := $(shell pwd)/Godeps/_workspace:$(GOPATH)
 
 all: build
 
diff --git a/src/frp/cmd/frpc/control.go b/src/cmd/frpc/control.go
similarity index 95%
rename from src/frp/cmd/frpc/control.go
rename to src/cmd/frpc/control.go
index f0f11cb4..3fdb611c 100644
--- a/src/frp/cmd/frpc/control.go
+++ b/src/cmd/frpc/control.go
@@ -21,12 +21,12 @@ import (
 	"sync"
 	"time"
 
-	"frp/models/client"
-	"frp/models/consts"
-	"frp/models/msg"
-	"frp/utils/conn"
-	"frp/utils/log"
-	"frp/utils/pcrypto"
+	"github.com/fatedier/frp/src/models/client"
+	"github.com/fatedier/frp/src/models/consts"
+	"github.com/fatedier/frp/src/models/msg"
+	"github.com/fatedier/frp/src/utils/conn"
+	"github.com/fatedier/frp/src/utils/log"
+	"github.com/fatedier/frp/src/utils/pcrypto"
 )
 
 func ControlProcess(cli *client.ProxyClient, wait *sync.WaitGroup) {
diff --git a/src/frp/cmd/frpc/main.go b/src/cmd/frpc/main.go
similarity index 95%
rename from src/frp/cmd/frpc/main.go
rename to src/cmd/frpc/main.go
index 5cb67434..e1f23e1e 100644
--- a/src/frp/cmd/frpc/main.go
+++ b/src/cmd/frpc/main.go
@@ -23,9 +23,9 @@ import (
 
 	docopt "github.com/docopt/docopt-go"
 
-	"frp/models/client"
-	"frp/utils/log"
-	"frp/utils/version"
+	"github.com/fatedier/frp/src/models/client"
+	"github.com/fatedier/frp/src/utils/log"
+	"github.com/fatedier/frp/src/utils/version"
 )
 
 var (
diff --git a/src/frp/cmd/frps/control.go b/src/cmd/frps/control.go
similarity index 97%
rename from src/frp/cmd/frps/control.go
rename to src/cmd/frps/control.go
index 74325f71..7214d482 100644
--- a/src/frp/cmd/frps/control.go
+++ b/src/cmd/frps/control.go
@@ -20,12 +20,12 @@ import (
 	"io"
 	"time"
 
-	"frp/models/consts"
-	"frp/models/msg"
-	"frp/models/server"
-	"frp/utils/conn"
-	"frp/utils/log"
-	"frp/utils/pcrypto"
+	"github.com/fatedier/frp/src/models/consts"
+	"github.com/fatedier/frp/src/models/msg"
+	"github.com/fatedier/frp/src/models/server"
+	"github.com/fatedier/frp/src/utils/conn"
+	"github.com/fatedier/frp/src/utils/log"
+	"github.com/fatedier/frp/src/utils/pcrypto"
 )
 
 func ProcessControlConn(l *conn.Listener) {
diff --git a/src/frp/cmd/frps/main.go b/src/cmd/frps/main.go
similarity index 95%
rename from src/frp/cmd/frps/main.go
rename to src/cmd/frps/main.go
index a9d3f7e4..a797af28 100644
--- a/src/frp/cmd/frps/main.go
+++ b/src/cmd/frps/main.go
@@ -26,11 +26,11 @@ import (
 
 	docopt "github.com/docopt/docopt-go"
 
-	"frp/models/server"
-	"frp/utils/conn"
-	"frp/utils/log"
-	"frp/utils/version"
-	"frp/utils/vhost"
+	"github.com/fatedier/frp/src/models/server"
+	"github.com/fatedier/frp/src/utils/conn"
+	"github.com/fatedier/frp/src/utils/log"
+	"github.com/fatedier/frp/src/utils/version"
+	"github.com/fatedier/frp/src/utils/vhost"
 )
 
 var usage string = `frps is the server of frp
diff --git a/src/frp/models/client/client.go b/src/models/client/client.go
similarity index 90%
rename from src/frp/models/client/client.go
rename to src/models/client/client.go
index aa7b8788..5c82fbb4 100644
--- a/src/frp/models/client/client.go
+++ b/src/models/client/client.go
@@ -19,12 +19,12 @@ import (
 	"fmt"
 	"time"
 
-	"frp/models/config"
-	"frp/models/consts"
-	"frp/models/msg"
-	"frp/utils/conn"
-	"frp/utils/log"
-	"frp/utils/pcrypto"
+	"github.com/fatedier/frp/src/models/config"
+	"github.com/fatedier/frp/src/models/consts"
+	"github.com/fatedier/frp/src/models/msg"
+	"github.com/fatedier/frp/src/utils/conn"
+	"github.com/fatedier/frp/src/utils/log"
+	"github.com/fatedier/frp/src/utils/pcrypto"
 )
 
 type ProxyClient struct {
diff --git a/src/frp/models/client/config.go b/src/models/client/config.go
similarity index 100%
rename from src/frp/models/client/config.go
rename to src/models/client/config.go
diff --git a/src/frp/models/config/config.go b/src/models/config/config.go
similarity index 100%
rename from src/frp/models/config/config.go
rename to src/models/config/config.go
diff --git a/src/frp/models/consts/consts.go b/src/models/consts/consts.go
similarity index 100%
rename from src/frp/models/consts/consts.go
rename to src/models/consts/consts.go
diff --git a/src/frp/models/metric/server.go b/src/models/metric/server.go
similarity index 99%
rename from src/frp/models/metric/server.go
rename to src/models/metric/server.go
index 49920b8a..fce7811a 100644
--- a/src/frp/models/metric/server.go
+++ b/src/models/metric/server.go
@@ -19,7 +19,7 @@ import (
 	"sync"
 	"time"
 
-	"frp/models/consts"
+	"github.com/fatedier/frp/src/models/consts"
 )
 
 var (
diff --git a/src/frp/models/msg/msg.go b/src/models/msg/msg.go
similarity index 100%
rename from src/frp/models/msg/msg.go
rename to src/models/msg/msg.go
diff --git a/src/frp/models/msg/process.go b/src/models/msg/process.go
similarity index 95%
rename from src/frp/models/msg/process.go
rename to src/models/msg/process.go
index 0d8a75ed..342ddd2e 100644
--- a/src/frp/models/msg/process.go
+++ b/src/models/msg/process.go
@@ -21,12 +21,12 @@ import (
 	"io"
 	"sync"
 
-	"frp/models/config"
-	"frp/models/metric"
-	"frp/utils/conn"
-	"frp/utils/log"
-	"frp/utils/pcrypto"
-	"frp/utils/pool"
+	"github.com/fatedier/frp/src/models/config"
+	"github.com/fatedier/frp/src/models/metric"
+	"github.com/fatedier/frp/src/utils/conn"
+	"github.com/fatedier/frp/src/utils/log"
+	"github.com/fatedier/frp/src/utils/pcrypto"
+	"github.com/fatedier/frp/src/utils/pool"
 )
 
 // will block until connection close
diff --git a/src/frp/models/server/config.go b/src/models/server/config.go
similarity index 98%
rename from src/frp/models/server/config.go
rename to src/models/server/config.go
index 9ac11ae3..e3296d05 100644
--- a/src/frp/models/server/config.go
+++ b/src/models/server/config.go
@@ -22,10 +22,10 @@ import (
 
 	ini "github.com/vaughan0/go-ini"
 
-	"frp/models/consts"
-	"frp/models/metric"
-	"frp/utils/log"
-	"frp/utils/vhost"
+	"github.com/fatedier/frp/src/models/consts"
+	"github.com/fatedier/frp/src/models/metric"
+	"github.com/fatedier/frp/src/utils/log"
+	"github.com/fatedier/frp/src/utils/vhost"
 )
 
 // common config
diff --git a/src/frp/models/server/dashboard.go b/src/models/server/dashboard.go
similarity index 100%
rename from src/frp/models/server/dashboard.go
rename to src/models/server/dashboard.go
diff --git a/src/frp/models/server/dashboard_api.go b/src/models/server/dashboard_api.go
similarity index 95%
rename from src/frp/models/server/dashboard_api.go
rename to src/models/server/dashboard_api.go
index db21eb1a..9743c9d6 100644
--- a/src/frp/models/server/dashboard_api.go
+++ b/src/models/server/dashboard_api.go
@@ -19,8 +19,8 @@ import (
 	"fmt"
 	"net/http"
 
-	"frp/models/metric"
-	"frp/utils/log"
+	"github.com/fatedier/frp/src/models/metric"
+	"github.com/fatedier/frp/src/utils/log"
 )
 
 type GeneralResponse struct {
diff --git a/src/frp/models/server/dashboard_view.go b/src/models/server/dashboard_view.go
similarity index 92%
rename from src/frp/models/server/dashboard_view.go
rename to src/models/server/dashboard_view.go
index e1dd9404..59baef5b 100644
--- a/src/frp/models/server/dashboard_view.go
+++ b/src/models/server/dashboard_view.go
@@ -19,8 +19,8 @@ import (
 	"net/http"
 	"path"
 
-	"frp/models/metric"
-	"frp/utils/log"
+	"github.com/fatedier/frp/src/models/metric"
+	"github.com/fatedier/frp/src/utils/log"
 )
 
 func viewDashboard(w http.ResponseWriter, r *http.Request) {
diff --git a/src/frp/models/server/server.go b/src/models/server/server.go
similarity index 96%
rename from src/frp/models/server/server.go
rename to src/models/server/server.go
index 5713cc19..14e9fc86 100644
--- a/src/frp/models/server/server.go
+++ b/src/models/server/server.go
@@ -19,12 +19,12 @@ import (
 	"sync"
 	"time"
 
-	"frp/models/config"
-	"frp/models/consts"
-	"frp/models/metric"
-	"frp/models/msg"
-	"frp/utils/conn"
-	"frp/utils/log"
+	"github.com/fatedier/frp/src/models/config"
+	"github.com/fatedier/frp/src/models/consts"
+	"github.com/fatedier/frp/src/models/metric"
+	"github.com/fatedier/frp/src/models/msg"
+	"github.com/fatedier/frp/src/utils/conn"
+	"github.com/fatedier/frp/src/utils/log"
 )
 
 type Listener interface {
diff --git a/src/frp/utils/broadcast/broadcast.go b/src/utils/broadcast/broadcast.go
similarity index 100%
rename from src/frp/utils/broadcast/broadcast.go
rename to src/utils/broadcast/broadcast.go
diff --git a/src/frp/utils/broadcast/broadcast_test.go b/src/utils/broadcast/broadcast_test.go
similarity index 100%
rename from src/frp/utils/broadcast/broadcast_test.go
rename to src/utils/broadcast/broadcast_test.go
diff --git a/src/frp/utils/conn/conn.go b/src/utils/conn/conn.go
similarity index 100%
rename from src/frp/utils/conn/conn.go
rename to src/utils/conn/conn.go
diff --git a/src/frp/utils/log/log.go b/src/utils/log/log.go
similarity index 100%
rename from src/frp/utils/log/log.go
rename to src/utils/log/log.go
diff --git a/src/frp/utils/pcrypto/pcrypto.go b/src/utils/pcrypto/pcrypto.go
similarity index 100%
rename from src/frp/utils/pcrypto/pcrypto.go
rename to src/utils/pcrypto/pcrypto.go
diff --git a/src/frp/utils/pcrypto/pcrypto_test.go b/src/utils/pcrypto/pcrypto_test.go
similarity index 100%
rename from src/frp/utils/pcrypto/pcrypto_test.go
rename to src/utils/pcrypto/pcrypto_test.go
diff --git a/src/frp/utils/pool/pool.go b/src/utils/pool/pool.go
similarity index 100%
rename from src/frp/utils/pool/pool.go
rename to src/utils/pool/pool.go
diff --git a/src/frp/utils/version/version.go b/src/utils/version/version.go
similarity index 97%
rename from src/frp/utils/version/version.go
rename to src/utils/version/version.go
index 9559803f..8cd2640a 100644
--- a/src/frp/utils/version/version.go
+++ b/src/utils/version/version.go
@@ -19,7 +19,7 @@ import (
 	"strings"
 )
 
-var version string = "0.7.0"
+var version string = "0.8.0"
 
 func Full() string {
 	return version
diff --git a/src/frp/utils/version/version_test.go b/src/utils/version/version_test.go
similarity index 100%
rename from src/frp/utils/version/version_test.go
rename to src/utils/version/version_test.go
diff --git a/src/frp/utils/vhost/http.go b/src/utils/vhost/http.go
similarity index 98%
rename from src/frp/utils/vhost/http.go
rename to src/utils/vhost/http.go
index aa66b6a4..0d1d8e07 100644
--- a/src/frp/utils/vhost/http.go
+++ b/src/utils/vhost/http.go
@@ -25,8 +25,8 @@ import (
 	"strings"
 	"time"
 
-	"frp/utils/conn"
-	"frp/utils/pool"
+	"github.com/fatedier/frp/src/utils/conn"
+	"github.com/fatedier/frp/src/utils/pool"
 )
 
 type HttpMuxer struct {
diff --git a/src/frp/utils/vhost/https.go b/src/utils/vhost/https.go
similarity index 98%
rename from src/frp/utils/vhost/https.go
rename to src/utils/vhost/https.go
index 7f963653..a82011b4 100644
--- a/src/frp/utils/vhost/https.go
+++ b/src/utils/vhost/https.go
@@ -21,8 +21,8 @@ import (
 	"strings"
 	"time"
 
-	"frp/utils/conn"
-	"frp/utils/pool"
+	"github.com/fatedier/frp/src/utils/conn"
+	"github.com/fatedier/frp/src/utils/pool"
 )
 
 const (
diff --git a/src/frp/utils/vhost/vhost.go b/src/utils/vhost/vhost.go
similarity index 99%
rename from src/frp/utils/vhost/vhost.go
rename to src/utils/vhost/vhost.go
index 7de2d101..93279b3b 100644
--- a/src/frp/utils/vhost/vhost.go
+++ b/src/utils/vhost/vhost.go
@@ -23,7 +23,7 @@ import (
 	"sync"
 	"time"
 
-	"frp/utils/conn"
+	"github.com/fatedier/frp/src/utils/conn"
 )
 
 type muxFunc func(*conn.Conn) (net.Conn, string, error)
diff --git a/test/echo_server.go b/test/echo_server.go
index 22c723c4..6b766a49 100644
--- a/test/echo_server.go
+++ b/test/echo_server.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 	"io"
 
-	"frp/utils/conn"
+	"github.com/fatedier/frp/src/utils/conn"
 )
 
 var (
diff --git a/test/func_test.go b/test/func_test.go
index f162c860..901ae7d2 100644
--- a/test/func_test.go
+++ b/test/func_test.go
@@ -8,7 +8,7 @@ import (
 	"testing"
 	"time"
 
-	"frp/utils/conn"
+	"github.com/fatedier/frp/src/utils/conn"
 )
 
 var (