diff --git a/main.go b/main.go
index 8a982c23..bc4da740 100644
--- a/main.go
+++ b/main.go
@@ -51,7 +51,7 @@ func main() {
 	forwardArgs = parseArgs(forwardAddr)
 
 	if len(listenArgs) == 0 {
-		glog.Fatalln("no listen addr")
+		glog.Exitln("no listen addr")
 	}
 
 	var wg sync.WaitGroup
diff --git a/socks.go b/socks.go
index 191b73a1..34c45665 100644
--- a/socks.go
+++ b/socks.go
@@ -7,7 +7,6 @@ import (
 	"github.com/ginuerzh/gosocks5"
 	"github.com/golang/glog"
 	"io"
-	"io/ioutil"
 	"net"
 	"strconv"
 )
@@ -269,7 +268,8 @@ func handleSocks5Request(req *gosocks5.Request, conn net.Conn) {
 			}
 		}
 
-		clientConn, dgram, err := createClientConn(conn, uconn)
+		//clientConn, dgram, err := createClientConn(conn, uconn)
+		_, dgram, err := createClientConn(conn, uconn)
 		if err != nil {
 			if glog.V(LWARNING) {
 				glog.Warningln("socks5 udp:", err)
@@ -280,7 +280,8 @@ func handleSocks5Request(req *gosocks5.Request, conn net.Conn) {
 			glog.Infof("[udp] length %d, to %s", len(dgram.Data), dgram.Header.Addr)
 		}
 
-		serverConn, err := createServerConn(uconn)
+		//serverConn, err := createServerConn(uconn)
+		_, err = createServerConn(uconn)
 		if err != nil {
 			if glog.V(LWARNING) {
 				glog.Warningln("socks5 udp forward:", err)
@@ -355,6 +356,7 @@ func createServerConn(uconn *net.UDPConn) (c *UDPConn, err error) {
 	return
 }
 
+/*
 func forwardUDP(req *gosocks5.Request) (conn net.Conn, err error) {
 
 	if err != nil {
@@ -389,11 +391,7 @@ func forwardUDP(req *gosocks5.Request) (conn net.Conn, err error) {
 	}
 
 }
-
-func transportUDP() {
-
-}
-
+*/
 func serveBind(conn net.Conn) error {
 	l, err := net.ListenTCP("tcp", nil)
 	if err != nil {
@@ -539,6 +537,7 @@ func peekReply(dst io.Writer, src io.Reader) error {
 	return nil
 }
 
+/*
 func cliTunnelUDP(uconn *net.UDPConn, sconn net.Conn) {
 	var raddr *net.UDPAddr
 
@@ -636,7 +635,7 @@ func srvTunnelUDP(conn net.Conn, uconn *net.UDPConn) {
 		}
 	}
 }
-
+*/
 func ToSocksAddr(addr net.Addr) *gosocks5.Addr {
 	host, port, _ := net.SplitHostPort(addr.String())
 	p, _ := strconv.Atoi(port)
diff --git a/udp.go b/udp.go
index 4301be39..aec31cd2 100644
--- a/udp.go
+++ b/udp.go
@@ -1,15 +1,15 @@
 package main
 
 import (
-	"github.com/ginuerzh/gosocks5"
-	"github.com/golang/glog"
+	//"github.com/ginuerzh/gosocks5"
+	//"github.com/golang/glog"
 	"net"
 )
 
 type UDPConn struct {
 	isClient bool
 	udpConn  *net.UDPConn
-	udpAddr  *net.UDPAddr
+	addr     net.Addr
 	tcpConn  net.Conn
 }
 
@@ -17,9 +17,9 @@ func Client(conn net.Conn, addr net.Addr) *UDPConn {
 	client := &UDPConn{isClient: true}
 
 	switch conn := conn.(type) {
-	case net.UDPConn:
+	case *net.UDPConn:
 		client.udpConn = conn
-		client.udpAddr = addr
+		client.addr = addr
 	default:
 		client.tcpConn = conn
 	}
@@ -30,7 +30,7 @@ func Client(conn net.Conn, addr net.Addr) *UDPConn {
 func Server(conn net.Conn) *UDPConn {
 	server := &UDPConn{}
 	switch conn := conn.(type) {
-	case net.UDPConn:
+	case *net.UDPConn:
 		server.udpConn = conn
 	default:
 		server.tcpConn = conn