diff --git a/cmd/fileTransfer.go b/cmd/fileTransfer.go
index df6ba635e99486b3efc4a18a27bbdc1eb20a3097..a80ef51e0e9b1c9dfa07aa6139a09fb8ebf60008 100644
--- a/cmd/fileTransfer.go
+++ b/cmd/fileTransfer.go
@@ -18,10 +18,8 @@ import (
 	"gitlab.com/elixxir/crypto/contact"
 	ftCrypto "gitlab.com/elixxir/crypto/fileTransfer"
 	"gitlab.com/xx_network/primitives/id"
-	"gitlab.com/xx_network/primitives/netTime"
 	"gitlab.com/xx_network/primitives/utils"
 	"io/ioutil"
-	"strconv"
 	"time"
 )
 
@@ -186,23 +184,29 @@ func sendFile(filePath, fileType, filePreviewPath, filePreviewString,
 		}
 	}
 
+	// Truncate file path if it is too long to be a file name
+	fileName := filePath
+	if len(fileName) > ft.FileNameMaxLen {
+		fileName = fileName[:ft.FileNameMaxLen]
+	}
+
 	// Get recipient contact from file
 	recipient := getContactFromFile(recipientContactPath)
 
 	jww.DEBUG.Printf("Sending file %q of size %d to recipient %s.",
-		filePath, len(fileData), recipient.ID)
+		fileName, len(fileData), recipient.ID)
 
 	// Create sent progress callback that prints the results
 	progressCB := func(completed bool, sent, arrived, total uint16,
 		t interfaces.FilePartTracker, err error) {
 		jww.DEBUG.Printf("Sent progress callback for %q "+
 			"{completed: %t, sent: %d, arrived: %d, total: %d, err: %v}\n",
-			filePath, completed, sent, arrived, total, err)
+			fileName, completed, sent, arrived, total, err)
 		if (sent == 0 && arrived == 0) || (arrived == total) || completed ||
 			err != nil {
 			fmt.Printf("Sent progress callback for %q "+
 				"{completed: %t, sent: %d, arrived: %d, total: %d, err: %v}\n",
-				filePath, completed, sent, arrived, total, err)
+				fileName, completed, sent, arrived, total, err)
 		}
 
 		if completed {
@@ -215,11 +219,11 @@ func sendFile(filePath, fileType, filePreviewPath, filePreviewString,
 	}
 
 	// Send the file
-	_, err = m.Send(filePath, fileType, fileData, recipient.ID, retry,
+	_, err = m.Send(fileName, fileType, fileData, recipient.ID, retry,
 		filePreviewData, progressCB, callbackPeriod)
 	if err != nil {
 		jww.FATAL.Panicf("Failed to send file %q to %s: %+v",
-			filePath, recipient.ID, err)
+			fileName, recipient.ID, err)
 	}
 }
 
@@ -236,9 +240,9 @@ func receiveNewFileTransfers(receive chan receivedFtResults, done,
 				"message.")
 			return
 		case r := <-receive:
-			jww.DEBUG.Printf("Received new file %q transfer %s from %s of size %d "+
-				"bytes with preview: %q",
-				r.fileName, r.tid, r.sender, r.size, r.preview)
+			jww.DEBUG.Printf("Received new file %q transfer %s of type %q "+
+				"from %s of size %d bytes with preview: %q",
+				r.fileName, r.tid, r.fileType, r.sender, r.size, r.preview)
 			fmt.Printf("Received new file transfer %q of size %d "+
 				"bytes with preview: %q\n", r.fileName, r.size, r.preview)
 
@@ -305,16 +309,16 @@ func getContactFromFile(path string) contact.Contact {
 // init initializes commands and flags for Cobra.
 func init() {
 	ftCmd.Flags().String("sendFile", "",
-		"Sends a file to a recipient with with the contact at this path.")
+		"Sends a file to a recipient with with the contact file at this path.")
 	bindPFlagCheckErr("sendFile")
 
-	ftCmd.Flags().String("filePath", "testFile-"+timeNanoString()+".txt",
+	ftCmd.Flags().String("filePath", "",
 		"The path to the file to send. Also used as the file name.")
 	bindPFlagCheckErr("filePath")
 
 	ftCmd.Flags().String("fileType", "txt",
 		"8-byte file type.")
-	bindPFlagCheckErr("filePath")
+	bindPFlagCheckErr("fileType")
 
 	ftCmd.Flags().String("filePreviewPath", "",
 		"The path to the file preview to send. Set either this flag or "+
@@ -336,11 +340,6 @@ func init() {
 	rootCmd.AddCommand(ftCmd)
 }
 
-// timeNanoString returns the current UNIX time in nanoseconds as a string.
-func timeNanoString() string {
-	return strconv.Itoa(int(netTime.Now().UnixNano()))
-}
-
 // bindPFlagCheckErr binds the key to a pflag.Flag used by Cobra and prints an
 // error if one occurs.
 func bindPFlagCheckErr(key string) {
diff --git a/storage/fileTransfer/partStore.go b/storage/fileTransfer/partStore.go
index e7c8701a1dfb0333bc32116cc2a7ffbea2104741..dfda88cd1b302bd5ad0b6f69cdc392afb9729f64 100644
--- a/storage/fileTransfer/partStore.go
+++ b/storage/fileTransfer/partStore.go
@@ -74,7 +74,8 @@ func (ps *partStore) addPart(part []byte, partNum uint16) error {
 	ps.mux.Lock()
 	defer ps.mux.Unlock()
 
-	ps.parts[partNum] = part
+	ps.parts[partNum] = make([]byte, len(part))
+	copy(ps.parts[partNum], part)
 
 	err := ps.savePart(partNum)
 	if err != nil {
@@ -90,7 +91,10 @@ func (ps *partStore) getPart(partNum uint16) ([]byte, bool) {
 	defer ps.mux.Unlock()
 
 	part, exists := ps.parts[partNum]
-	return part, exists
+	newPart := make([]byte, len(part))
+	copy(newPart, part)
+
+	return newPart, exists
 }
 
 // getFile returns all file parts concatenated into a single file. Returns the
@@ -268,7 +272,8 @@ func partSliceToMap(parts ...[]byte) map[uint16][]byte {
 
 	// Add each file part to the map
 	for partNum, part := range parts {
-		partMap[uint16(partNum)] = part
+		partMap[uint16(partNum)] = make([]byte, len(part))
+		copy(partMap[uint16(partNum)], part)
 	}
 
 	return partMap