diff --git a/request-server_test.go b/request-server_test.go
index 1c3055e..53172c6 100644
--- a/request-server_test.go
+++ b/request-server_test.go
@@ -73,14 +73,13 @@
 	r := p.testHandler()
 	f, _ := r.fetch("/foo")
 	assert.Equal(t, contents, string(f.content))
-	fmt.Println(string(f.content))
 }
 
 func TestRequestCache(t *testing.T) {
 	p := clientRequestServerPair(t)
 	defer p.Close()
-	foo := NewRequest("foo")
-	bar := NewRequest("bar")
+	foo := NewRequest("", "foo")
+	bar := NewRequest("", "bar")
 	fh := p.svr.nextRequest(foo)
 	bh := p.svr.nextRequest(bar)
 	assert.Len(t, p.svr.openRequests, 2)
diff --git a/request.go b/request.go
index 5408825..950861a 100644
--- a/request.go
+++ b/request.go
@@ -42,14 +42,23 @@
 
 // New Request initialized based on packet data
 func requestFromPacket(pkt hasPath) Request {
-	request := NewRequest(pkt.getPath())
-	request.init(pkt)
+	method := requestMethod(pkt)
+	request := NewRequest(method, pkt.getPath())
+	request.pkt_id = pkt.id()
+	switch p := pkt.(type) {
+	case *sshFxpSetstatPacket:
+		request.Attrs = p.Attrs.([]byte)
+	case *sshFxpRenamePacket:
+		request.Target = filepath.Clean(p.Newpath)
+	case *sshFxpSymlinkPacket:
+		request.Target = filepath.Clean(p.Linkpath)
+	}
 	return request
 }
 
 // NewRequest creates a new Request object.
-func NewRequest(path string) Request {
-	request := Request{Filepath: filepath.Clean(path)}
+func NewRequest(method, path string) Request {
+	request := Request{Method: method, Filepath: filepath.Clean(path)}
 	request.packets = make(chan packet_data, sftpServerWorkerCount)
 	request.state = &state{}
 	request.stateLock = &sync.RWMutex{}
@@ -270,30 +279,26 @@
 }
 
 // init attributes of request object from packet data
-func (r *Request) init(p hasPath) {
-	r.pkt_id = p.id()
-	switch p := p.(type) {
+func requestMethod(p hasPath) (method string) {
+	switch p.(type) {
 	case *sshFxpOpenPacket, *sshFxpOpendirPacket:
-		r.Method = "Open"
+		method = "Open"
 	case *sshFxpSetstatPacket:
-		r.Method = "Setstat"
-		r.Attrs = p.Attrs.([]byte)
+		method = "Setstat"
 	case *sshFxpRenamePacket:
-		r.Method = "Rename"
-		r.Target = filepath.Clean(p.Newpath)
+		method = "Rename"
 	case *sshFxpSymlinkPacket:
-		r.Method = "Symlink"
-		r.Target = filepath.Clean(p.Linkpath)
+		method = "Symlink"
 	case *sshFxpRemovePacket:
-		r.Method = "Remove"
+		method = "Remove"
 	case *sshFxpStatPacket, *sshFxpLstatPacket:
-		r.Method = "Stat"
+		method = "Stat"
 	case *sshFxpRmdirPacket:
-		r.Method = "Rmdir"
+		method = "Rmdir"
 	case *sshFxpReadlinkPacket:
-		r.Method = "Readlink"
+		method = "Readlink"
 	case *sshFxpMkdirPacket:
-		r.Method = "Mkdir"
-		//r.Attrs are ignored in ./packet.go
+		method = "Mkdir"
 	}
+	return method
 }
