diff --git a/shapeshifter.go b/shapeshifter.go
index c717cd24124ba79a5b37e635e80045b68d57e945..0a05c93dbc2e5377beb257c828c5df764ea260da 100644
--- a/shapeshifter.go
+++ b/shapeshifter.go
@@ -37,17 +37,17 @@ type Logger interface {
 	Log(msg string)
 }
 
-type ShapeShifter struct {
+type Shapeshifter struct {
 	Cert      string
 	IatMode   int
 	Target    string // remote ip:port obfs4 server
-	SocksAddr string // -proxylistenaddr in shapeshifter-dispatcher
+	SocksAddr string // -proxylistenaddr in Shapeshifter-dispatcher
 	Logger    Logger
 	ln        net.Listener
 	errChan   chan error
 }
 
-func (ss *ShapeShifter) Open() error {
+func (ss *Shapeshifter) Open() error {
 	err := ss.checkOptions()
 	if err != nil {
 		return err
@@ -62,7 +62,7 @@ func (ss *ShapeShifter) Open() error {
 	return nil
 }
 
-func (ss *ShapeShifter) Close() error {
+func (ss *Shapeshifter) Close() error {
 	var err error
 	if ss.ln != nil {
 		err = ss.ln.Close()
@@ -73,14 +73,14 @@ func (ss *ShapeShifter) Close() error {
 	return err
 }
 
-func (ss *ShapeShifter) GetErrorChannel() chan error {
+func (ss *Shapeshifter) GetErrorChannel() chan error {
 	if ss.errChan == nil {
 		ss.errChan = make(chan error, 2)
 	}
 	return ss.errChan
 }
 
-func (ss ShapeShifter) clientAcceptLoop() error {
+func (ss Shapeshifter) clientAcceptLoop() error {
 	for {
 		conn, err := ss.ln.Accept()
 		if err != nil {
@@ -94,7 +94,7 @@ func (ss ShapeShifter) clientAcceptLoop() error {
 	}
 }
 
-func (ss ShapeShifter) clientHandler(conn net.Conn) {
+func (ss Shapeshifter) clientHandler(conn net.Conn) {
 	defer conn.Close()
 
 	dialer := proxy.Direct
@@ -177,7 +177,7 @@ func copyLoop(a net.Conn, b net.Conn) error {
 	return nil
 }
 
-func (ss *ShapeShifter) checkOptions() error {
+func (ss *Shapeshifter) checkOptions() error {
 	if ss.SocksAddr == "" {
 		ss.SocksAddr = "127.0.0.1:0"
 	}
@@ -185,7 +185,7 @@ func (ss *ShapeShifter) checkOptions() error {
 	return err
 }
 
-func (ss *ShapeShifter) sendError(format string, a ...interface{}) {
+func (ss *Shapeshifter) sendError(format string, a ...interface{}) {
 	if ss.Logger != nil {
 		ss.Logger.Log(fmt.Sprintf(format, a...))
 		return