diff --git a/runtime/internal/flow/conn/grpc/conn.go b/runtime/internal/flow/conn/grpc/conn.go
index 5cbd6f3..11cbd0c 100644
--- a/runtime/internal/flow/conn/grpc/conn.go
+++ b/runtime/internal/flow/conn/grpc/conn.go
@@ -6,13 +6,13 @@
 
 import (
 	"bytes"
-	"encoding/binary"
+	_ "encoding/binary"
 	"errors"
 	"fmt"
 	"io"
 	"log"
 	"net"
-	_ "runtime/debug"
+	"runtime/debug"
 	"sync"
 	"time"
 
@@ -26,6 +26,7 @@
 // TODO: do I need to check the message size as in box_coipher.Seal?
 // TODO: make all these keys not pointers?
 // TODO: should I have locks here?
+// TODO: what's all this salsa stuff?
 type conn struct {
 	rawConn   net.Conn
 	publicKey *[32]byte
@@ -43,7 +44,7 @@
 	log.Printf("Beginning to Read.\n")
 	resBuf := make([]byte, 4096*4096) // TODO better (dynamic) size or way of reading?
 	bytesRead, err := c.rawConn.Read(resBuf)
-	log.Printf("Read %d bytes.\n", bytesRead)
+	log.Printf("Read %d bytes: %v\n", bytesRead, resBuf[:bytesRead])
 	if err != nil {
 		log.Printf("Failed to read.\n")
 		log.Fatal(err)
@@ -60,8 +61,10 @@
 	}
 	copy(b, out)
 	// should we return bytesRead or len(b)?
-	log.Printf("Succeeded in reading.\n")
-	return bytesRead, nil
+	log.Printf("cap(b): %d, len(b) %d, \ncap(out): %d, len(out): %d\n", cap(b), len(b), cap(out), len(out))
+	log.Printf("Succeeded in reading.\n\n")
+	// return bytesRead, nil
+	return len(b), nil
 }
 
 // TODO: all this casting is gross
@@ -87,8 +90,10 @@
 		log.Fatal(err)
 		return -1, errors.New(errMsg)
 	}
-	log.Printf("Succeeded in writing!\n")
-	return int(bytesCopied), nil
+	log.Printf("cap(b): %d, len(b) %d, cap(out): %d, len(out): %d\n", cap(b), len(b), cap(out), len(out))
+	log.Printf("Succeeded in writing!\n\n")
+	// return int(bytesCopied), nil
+	return len(b), nil
 }
 
 // TODO: cover these up with an interface?
@@ -96,6 +101,8 @@
 func (c *conn) Close() error {
 	c.mu.Lock()
 	defer c.mu.Unlock()
+	debug.PrintStack()
+	// log.Fatalf("DON'T CLOSE THE CONNETION\n")
 	return c.rawConn.Close()
 }
 
@@ -134,7 +141,9 @@
 	return &c.nonce
 }
 
+// TODO: re enable.
 func (c *conn) advanceNonce() {
-	c.counter++
-	binary.LittleEndian.PutUint64(c.nonce[:], c.counter)
+
+	// c.counter++
+	// binary.LittleEndian.PutUint64(c.nonce[:], c.counter)
 }
