diff --git a/Sources/SwiftNLP/0. SNLP Internal Protocols/SNLPCorpus.swift b/Sources/SwiftNLP/0. SNLP Internal Protocols/SNLPCorpus.swift
index 3d922641a17e638a5c5d451d38542ad7e62b7013..9e37ca666b501a76542c818a17ef0976571b62e5 100644
--- a/Sources/SwiftNLP/0. SNLP Internal Protocols/SNLPCorpus.swift	
+++ b/Sources/SwiftNLP/0. SNLP Internal Protocols/SNLPCorpus.swift	
@@ -42,8 +42,8 @@ protocol SNLPCorpus<Item> {
     var dimensions: UInt { get }
     var count: Int { get }
     
-    func addUntokenizedDocument(_ document: Item)
-    func addUntokenizedDocuments(_ documents: [Item])
+    mutating func addUntokenizedDocument(_ document: Item)
+    mutating func addUntokenizedDocuments(_ documents: [Item])
     
     func searchFor(_ query: String) -> [Item]
 }
@@ -59,7 +59,7 @@ extension SNLPCorpus {
     /**
         Adds a series of untokenized documents to the corpus, using default tokenization and text processing
      */
-    func addUntokenizedDocuments(_ documents: [Item]) {
+    mutating func addUntokenizedDocuments(_ documents: [Item]) {
         for d in documents {
             addUntokenizedDocument(d)
         }
diff --git a/Sources/SwiftNLP/1. Data Collection/InMemoryCorpus.swift b/Sources/SwiftNLP/1. Data Collection/InMemoryCorpus.swift
index fdb6ea4702e31fed56e570d90608fd18ac97994c..bdca399d04003716c42601e1b1e172e1dce6f66c 100644
--- a/Sources/SwiftNLP/1. Data Collection/InMemoryCorpus.swift	
+++ b/Sources/SwiftNLP/1. Data Collection/InMemoryCorpus.swift	
@@ -23,7 +23,7 @@
 
 import Foundation
 
-final class InMemoryCorpus<Scalar: BinaryFloatingPoint, Encoder: SNLPEncoder, Item: SNLPDataItem>: SNLPCorpus where Encoder.Scalar == Scalar {
+struct InMemoryCorpus<Scalar: BinaryFloatingPoint, Encoder: SNLPEncoder, Item: SNLPDataItem>: SNLPCorpus where Encoder.Scalar == Scalar {
     
 
     internal var documentEncoder: Encoder
@@ -41,14 +41,14 @@ final class InMemoryCorpus<Scalar: BinaryFloatingPoint, Encoder: SNLPEncoder, It
         documentEncoder = encoder
     }
     
-    func addUntokenizedDocument(_ document: Item) {
+    mutating func addUntokenizedDocument(_ document: Item) {
         documents.append(document)
         encodedDocuments.append(documentEncoder.encodeSentence(document.fullText))
         
         assert( documents.count == encodedDocuments.count )
     }
     
-    func addUntokenizedDocuments(_ documents: [Item]) {
+    mutating func addUntokenizedDocuments(_ documents: [Item]) {
         for document in documents {
             addUntokenizedDocument(document)
         }
diff --git a/Tests/SwiftNLPTests/2. Encoding/NaturalLanguageEncoderTests.swift b/Tests/SwiftNLPTests/2. Encoding/NaturalLanguageEncoderTests.swift
index 6c49181ce68aa4bb0e5f2652379a14c9500f2bf8..0f22e071158d0bc68c80f0cbc5d26d38484c0c02 100644
--- a/Tests/SwiftNLPTests/2. Encoding/NaturalLanguageEncoderTests.swift	
+++ b/Tests/SwiftNLPTests/2. Encoding/NaturalLanguageEncoderTests.swift	
@@ -77,7 +77,7 @@ final class NaturalLanguageEncoderTests: XCTestCase {
         let (submissions, _ ): ([Submission],[Data]) = try await loadFromRedditArchive(submissionsData)
         
         let encoder = NaturalLanguageEncoder<Double>()
-        let corpus = InMemoryCorpus<Double,NaturalLanguageEncoder,String>(encoder: encoder)
+        var corpus = InMemoryCorpus<Double,NaturalLanguageEncoder,String>(encoder: encoder)
         
         for submission in submissions {
             if let text = submission.selftext {