diff --git a/.idea/runConfigurations/ChainingHashDictionaryTests.xml b/.idea/runConfigurations/ChainingHashDictionaryTests.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8c2406619c9b59f06ddf6a0ae54150d43a6f60a3
--- /dev/null
+++ b/.idea/runConfigurations/ChainingHashDictionaryTests.xml
@@ -0,0 +1,18 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="ChainingHashDictionaryTests" type="JUnit" factoryName="JUnit" nameIsGenerated="true">
+    <module name="project05-markov" />
+    <extension name="coverage">
+      <pattern>
+        <option name="PATTERN" value="edu.caltech.cs2.datastructures.*" />
+        <option name="ENABLED" value="true" />
+      </pattern>
+    </extension>
+    <option name="PACKAGE_NAME" value="edu.caltech.cs2.datastructures" />
+    <option name="MAIN_CLASS_NAME" value="edu.caltech.cs2.datastructures.ChainingHashDictionaryTests" />
+    <option name="METHOD_NAME" value="" />
+    <option name="TEST_OBJECT" value="class" />
+    <method v="2">
+      <option name="Make" enabled="true" />
+    </method>
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/MoveToFrontDictionaryTests.xml b/.idea/runConfigurations/MoveToFrontDictionaryTests.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3ed7799018cbed298dc3dc0bfbf7aec4a9e42896
--- /dev/null
+++ b/.idea/runConfigurations/MoveToFrontDictionaryTests.xml
@@ -0,0 +1,18 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="MoveToFrontDictionaryTests" type="JUnit" factoryName="JUnit" nameIsGenerated="true">
+    <module name="project05-markov" />
+    <extension name="coverage">
+      <pattern>
+        <option name="PATTERN" value="edu.caltech.cs2.datastructures.*" />
+        <option name="ENABLED" value="true" />
+      </pattern>
+    </extension>
+    <option name="PACKAGE_NAME" value="edu.caltech.cs2.datastructures" />
+    <option name="MAIN_CLASS_NAME" value="edu.caltech.cs2.datastructures.MoveToFrontDictionaryTests" />
+    <option name="METHOD_NAME" value="" />
+    <option name="TEST_OBJECT" value="class" />
+    <method v="2">
+      <option name="Make" enabled="true" />
+    </method>
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/NGramTests.xml b/.idea/runConfigurations/NGramTests.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e6eca74d7bb4c74ce153b6f4803396399fdeb8b0
--- /dev/null
+++ b/.idea/runConfigurations/NGramTests.xml
@@ -0,0 +1,18 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="NGramTests" type="JUnit" factoryName="JUnit" nameIsGenerated="true">
+    <module name="project05-markov" />
+    <extension name="coverage">
+      <pattern>
+        <option name="PATTERN" value="edu.caltech.cs2.datastructures.*" />
+        <option name="ENABLED" value="true" />
+      </pattern>
+    </extension>
+    <option name="PACKAGE_NAME" value="edu.caltech.cs2.datastructures" />
+    <option name="MAIN_CLASS_NAME" value="edu.caltech.cs2.datastructures.NGramTests" />
+    <option name="METHOD_NAME" value="" />
+    <option name="TEST_OBJECT" value="class" />
+    <method v="2">
+      <option name="Make" enabled="true" />
+    </method>
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/tests/edu/caltech/cs2/datastructures/ChainingHashDictionaryTests.java b/tests/edu/caltech/cs2/datastructures/ChainingHashDictionaryTests.java
index 730ac47f30f4f3a2d1b454c06eabab3ef157fb2b..6830c6d2e61355d03e489a8a52c4b07a53ce801c 100644
--- a/tests/edu/caltech/cs2/datastructures/ChainingHashDictionaryTests.java
+++ b/tests/edu/caltech/cs2/datastructures/ChainingHashDictionaryTests.java
@@ -61,7 +61,7 @@ public class ChainingHashDictionaryTests implements IDictionaryNGramTests {
     @DisplayName("Does not use or import disallowed classes from java.util")
     @Test
     public void testForInvalidImportsJavaUtil() {
-        List<String> allowed = List.of("Iterator", "Supplier", "Stream");
+        List<String> allowed = List.of("Iterator", "function\\.Supplier", "stream\\.Stream");
         Inspection.assertNoImportsOfExcept(DICTIONARY_SOURCE, "java\\.util", allowed);
 
         List<String> bannedUsages = List.of("java\\.util\\.(?!" + String.join("|", allowed) + ")");
@@ -94,14 +94,12 @@ public class ChainingHashDictionaryTests implements IDictionaryNGramTests {
     @Timeout(value = 20, unit = SECONDS)
     @Test
     public void testGrowthCapability() {
-        Set<IDictionary<Object, Object>> dicts = new HashSet<>();
-        for (int i = 0; i < 50; i++) {
-            dicts.add(new ChainingHashDictionary<>(MoveToFrontDictionary::new));
-        }
-        for (IDictionary<Object, Object> dict : dicts) {
-            for (int i = 0; i < 400000; i++) {
-                dict.put(i, i);
+        for (int i = 0; i < 25; i++) {
+            IDictionary<Object, Object> dict = new ChainingHashDictionary<>(MoveToFrontDictionary::new);
+            for (int j = 0; j < 500000; j++) {
+                dict.put(j, j);
             }
+            // This _should_ get GC'd with a smaller heap size...
         }
     }
 
diff --git a/tests/edu/caltech/cs2/datastructures/IDictionaryNGramTests.java b/tests/edu/caltech/cs2/datastructures/IDictionaryNGramTests.java
index 858c3a71c69d6a2a9500c431b224fe133c3283fa..683ca292f9606f7bb4220cdc9c2d7408ad1a0cfc 100644
--- a/tests/edu/caltech/cs2/datastructures/IDictionaryNGramTests.java
+++ b/tests/edu/caltech/cs2/datastructures/IDictionaryNGramTests.java
@@ -6,6 +6,7 @@ import edu.caltech.cs2.textgenerator.NGram;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 import org.junit.jupiter.params.provider.Arguments;
 
 import java.util.HashMap;
@@ -17,6 +18,7 @@ import java.util.stream.Stream;
 
 import static edu.caltech.cs2.project05.Project05TestOrdering.sanityTestLevel;
 import static edu.caltech.cs2.project05.Project05TestOrdering.specialTestLevel;
+import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 // Wrapper class for all IDictionaries that will be tested using NGram keys to reduce code repetition
@@ -47,7 +49,7 @@ public interface IDictionaryNGramTests extends IDictionaryTests {
 
     @Override
     default Map<Object, Object> generateRandomTestData(int size, Random rand, int maxNodeDegree, int minKeyLength,
-            int maxKeyLength) {
+                                                       int maxKeyLength) {
         Map<Object, Object> base = new HashMap<>();
         for (int i = 0; i < size; i++) {
             int keyLength = minKeyLength + rand.nextInt(maxKeyLength - minKeyLength);
@@ -77,6 +79,7 @@ public interface IDictionaryNGramTests extends IDictionaryTests {
     @Order(specialTestLevel)
     @DisplayName("Test get() -- complexity")
     @Test
+    @Timeout(value = 20, unit = SECONDS)
     default void testGetComplexity() {
         Function<Integer, IDictionary<Object, Object>> provide = (Integer numElements) -> {
             IDictionary<Object, Object> t = newIDictionary();
@@ -95,6 +98,7 @@ public interface IDictionaryNGramTests extends IDictionaryTests {
     @Order(specialTestLevel)
     @DisplayName("Test put() -- complexity")
     @Test
+    @Timeout(value = 20, unit = SECONDS)
     default void testPutComplexity() {
         Function<Integer, IDictionary<Object, Object>> provide = (Integer numElements) -> {
             IDictionary<Object, Object> t = newIDictionary();
@@ -113,6 +117,7 @@ public interface IDictionaryNGramTests extends IDictionaryTests {
     @Order(specialTestLevel)
     @DisplayName("Test size() -- complexity")
     @Test
+    @Timeout(value = 20, unit = SECONDS)
     default void testSizeComplexity() {
         Function<Integer, IDictionary<Object, Object>> provide = (Integer numElements) -> {
             IDictionary<Object, Object> t = newIDictionary();
diff --git a/tests/edu/caltech/cs2/datastructures/MoveToFrontDictionaryTests.java b/tests/edu/caltech/cs2/datastructures/MoveToFrontDictionaryTests.java
index a92f3ac4f6cdfb927597475140fbfbb6ed0d4bc4..2eb4546dddde5c7b1be9d4f7686145bd9fbf3354 100644
--- a/tests/edu/caltech/cs2/datastructures/MoveToFrontDictionaryTests.java
+++ b/tests/edu/caltech/cs2/datastructures/MoveToFrontDictionaryTests.java
@@ -96,7 +96,6 @@ public class MoveToFrontDictionaryTests implements IDictionaryNGramTests {
         }
     }
 
-    // TODO: what the fuck
     @Order(classSpecificTestLevel)
     @DisplayName("Check MoveToFrontDictionary class is properly implemented")
     @Test