diff --git a/.classpath b/.classpath
deleted file mode 100644
index fd287e52da5b0bd1f409127fdbc3767a841d85b3..0000000000000000000000000000000000000000
--- a/.classpath
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" output="bin/main" path="src/main/java">
-		<attributes>
-			<attribute name="gradle_scope" value="main"/>
-			<attribute name="gradle_used_by_scope" value="main,test"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="bin/main" path="src/main/resources">
-		<attributes>
-			<attribute name="gradle_scope" value="main"/>
-			<attribute name="gradle_used_by_scope" value="main,test"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="bin/test" path="src/test/java">
-		<attributes>
-			<attribute name="gradle_scope" value="test"/>
-			<attribute name="gradle_used_by_scope" value="test"/>
-			<attribute name="test" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="src" output="bin/test" path="src/test/resources">
-		<attributes>
-			<attribute name="gradle_scope" value="test"/>
-			<attribute name="gradle_used_by_scope" value="test"/>
-			<attribute name="test" value="true"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-12/"/>
-	<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
-	<classpathentry kind="output" path="bin/default"/>
-</classpath>
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000000000000000000000000000000000..00a51aff5e5a83d6313f3bd15fadc601a205b66f
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,6 @@
+#
+# https://help.github.com/articles/dealing-with-line-endings/
+#
+# These are explicitly windows files and should use crlf
+*.bat           text eol=crlf
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..f198ec547b9190a094cdd1e56458a0ed7b8c23c8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,216 @@
+# Created by https://www.gitignore.io/api/java,gradle,eclipse,intellij,visualstudiocode
+# Edit at https://www.gitignore.io/?templates=java,gradle,eclipse,intellij,visualstudiocode
+
+### Eclipse ###
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.settings/
+.loadpath
+.recommenders
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# PyDev specific (Python IDE for Eclipse)
+*.pydevproject
+
+# CDT-specific (C/C++ Development Tooling)
+.cproject
+
+# CDT- autotools
+.autotools
+
+# Java annotation processor (APT)
+.factorypath
+
+# PDT-specific (PHP Development Tools)
+.buildpath
+
+# sbteclipse plugin
+.target
+
+# Tern plugin
+.tern-project
+
+# TeXlipse plugin
+.texlipse
+
+# STS (Spring Tool Suite)
+.springBeans
+
+# Code Recommenders
+.recommenders/
+
+# Annotation Processing
+.apt_generated/
+
+# Scala IDE specific (Scala & Java development for Eclipse)
+.cache-main
+.scala_dependencies
+.worksheet
+
+### Eclipse Patch ###
+# Eclipse Core
+.project
+
+# JDT-specific (Eclipse Java Development Tools)
+.classpath
+
+# Annotation Processing
+.apt_generated
+
+.sts4-cache/
+
+### Intellij ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn.  Uncomment if using
+# auto-import.
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+.idea/**/sonarlint/
+
+# SonarQube Plugin
+.idea/**/sonarIssues.xml
+
+# Markdown Navigator plugin
+.idea/**/markdown-navigator.xml
+.idea/**/markdown-navigator/
+
+### Java ###
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+### VisualStudioCode ###
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+### VisualStudioCode Patch ###
+# Ignore all local history of files
+.history
+
+### Gradle ###
+.gradle
+build/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle-wrapper.jar
+
+# Cache of project
+.gradletasknamecache
+
+# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
+# gradle/wrapper/gradle-wrapper.properties
+
+### Gradle Patch ###
+**/build/
+
+# End of https://www.gitignore.io/api/java,gradle,eclipse,intellij,visualstudiocode
\ No newline at end of file
diff --git a/.gradle/5.6.1/executionHistory/executionHistory.lock b/.gradle/5.6.1/executionHistory/executionHistory.lock
deleted file mode 100644
index eef6728be7e45d9fad6f2c2331c58c94c0f833ae..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.1/executionHistory/executionHistory.lock and /dev/null differ
diff --git a/.gradle/5.6.1/fileChanges/last-build.bin b/.gradle/5.6.1/fileChanges/last-build.bin
deleted file mode 100644
index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.1/fileChanges/last-build.bin and /dev/null differ
diff --git a/.gradle/5.6.1/fileHashes/fileHashes.lock b/.gradle/5.6.1/fileHashes/fileHashes.lock
deleted file mode 100644
index e7ec6d5a06530ebf1dfa7aa0ff0e3d1453bc4d0b..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.1/fileHashes/fileHashes.lock and /dev/null differ
diff --git a/.gradle/5.6.2/executionHistory/executionHistory.bin b/.gradle/5.6.2/executionHistory/executionHistory.bin
deleted file mode 100644
index d2d9d530fa3ce9aea90f68279fcc683177e6edeb..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.2/executionHistory/executionHistory.bin and /dev/null differ
diff --git a/.gradle/5.6.2/executionHistory/executionHistory.lock b/.gradle/5.6.2/executionHistory/executionHistory.lock
deleted file mode 100644
index c70598e7b0744bccf2f9be33affbce5684ec96e4..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.2/executionHistory/executionHistory.lock and /dev/null differ
diff --git a/.gradle/5.6.2/fileChanges/last-build.bin b/.gradle/5.6.2/fileChanges/last-build.bin
deleted file mode 100644
index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.2/fileChanges/last-build.bin and /dev/null differ
diff --git a/.gradle/5.6.2/fileContent/fileContent.lock b/.gradle/5.6.2/fileContent/fileContent.lock
deleted file mode 100644
index 671e7d6dfdbe2c27e024c5d802e55800fbe4fd6b..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.2/fileContent/fileContent.lock and /dev/null differ
diff --git a/.gradle/5.6.2/fileHashes/fileHashes.bin b/.gradle/5.6.2/fileHashes/fileHashes.bin
deleted file mode 100644
index 61d6fcc182aeefde434af70ec83002be3ae87829..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.2/fileHashes/fileHashes.bin and /dev/null differ
diff --git a/.gradle/5.6.2/fileHashes/fileHashes.lock b/.gradle/5.6.2/fileHashes/fileHashes.lock
deleted file mode 100644
index 072be07cc4e8be671ad54261418fd6ab1693c4e8..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.2/fileHashes/fileHashes.lock and /dev/null differ
diff --git a/.gradle/5.6.2/gc.properties b/.gradle/5.6.2/gc.properties
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/.gradle/5.6.2/javaCompile/classAnalysis.bin b/.gradle/5.6.2/javaCompile/classAnalysis.bin
deleted file mode 100644
index f8fa7e28d7536ba35347bd4f1c9078723e31c1ca..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.2/javaCompile/classAnalysis.bin and /dev/null differ
diff --git a/.gradle/5.6.2/javaCompile/javaCompile.lock b/.gradle/5.6.2/javaCompile/javaCompile.lock
deleted file mode 100644
index b4e91094fb805d6113e603cd1349b4e72700edcb..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.2/javaCompile/javaCompile.lock and /dev/null differ
diff --git a/.gradle/5.6.2/javaCompile/taskHistory.bin b/.gradle/5.6.2/javaCompile/taskHistory.bin
deleted file mode 100644
index 5be48f66fcca0bb614a56c245a1cc183fcc8f4d0..0000000000000000000000000000000000000000
Binary files a/.gradle/5.6.2/javaCompile/taskHistory.bin and /dev/null differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
deleted file mode 100644
index 0a7794abc3c10837e60593f2767955f4888f044a..0000000000000000000000000000000000000000
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and /dev/null differ
diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
deleted file mode 100644
index c8b377779cce2d2ea4f74f0534b9eacdd0916467..0000000000000000000000000000000000000000
--- a/.gradle/buildOutputCleanup/cache.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-#Wed Jan 08 13:56:49 CET 2020
-gradle.version=5.6.2
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
deleted file mode 100644
index 336dcce3de9bad337d5450f82a785381d78d9360..0000000000000000000000000000000000000000
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and /dev/null differ
diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/.project b/.project
index 37bafb43447d2624cc69e1b1c7c46c76dc094a2a..9cf3fa392b30f9d4a8b99f441427f07cf61679b7 100644
--- a/.project
+++ b/.project
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>textInputs</name>
-	<comment>Project textInputs created by Buildship.</comment>
+	<name>campus</name>
+	<comment>Project test created by Buildship.</comment>
 	<projects>
 	</projects>
 	<buildSpec>
diff --git a/bin/main/io/fp/text/TextInputFrequencyStore.class b/bin/main/io/fp/text/TextInputFrequencyStore.class
deleted file mode 100644
index bd33d893cdb33e3e3ba97b4cd9f627a156478d44..0000000000000000000000000000000000000000
Binary files a/bin/main/io/fp/text/TextInputFrequencyStore.class and /dev/null differ
diff --git a/bin/main/io/fp/text/TextInputFrequencyStoreUI.class b/bin/main/io/fp/text/TextInputFrequencyStoreUI.class
deleted file mode 100644
index f51f336260ea3c31376919e2276039fc2aa3d33f..0000000000000000000000000000000000000000
Binary files a/bin/main/io/fp/text/TextInputFrequencyStoreUI.class and /dev/null differ
diff --git a/build.gradle b/build.gradle
index d03072dfa81c2a4d5d518706f516f1cba2caa5f2..3654a0533d25ae1556d5b03ea3f699a30f20a0c6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,25 +3,19 @@
  *
  * This generated file contains a sample Java project to get you started.
  * For more details take a look at the Java Quickstart chapter in the Gradle
- * User Manual available at https://docs.gradle.org/5.6.1/userguide/tutorial_java_projects.html
+ * User Manual available at https://docs.gradle.org/6.3/userguide/tutorial_java_projects.html
  */
 
 plugins {
     // Apply the java plugin to add support for Java
     id 'java'
 
-    // Apply the application plugin to add support for building a CLI application
+    // Apply the application plugin to add support for building a CLI application.
     id 'application'
 
-    // Apply Javafx Plugin
     id 'org.openjfx.javafxplugin' version '0.0.8'
 }
 
-javafx {
-    version = "12"
-    modules = [ 'javafx.controls' ,'javafx.base' , 'javafx.graphics']
-}
-
 repositories {
     // Use jcenter for resolving dependencies.
     // You can declare any Maven/Ivy/file repository here.
@@ -30,17 +24,17 @@ repositories {
 
 dependencies {
     // This dependency is used by the application.
-    implementation 'com.google.guava:guava:28.0-jre'
+    implementation 'com.google.guava:guava:28.2-jre'
 
     // Use JUnit Jupiter API for testing.
-    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.2'
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
 
     // Use JUnit Jupiter Engine for testing.
-    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.2'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
 }
 
 application {
-    // Define the main class for the application
+    // Define the main class for the application.
     mainClassName = 'io.fp.text.TextInputFrequencyStoreUI'
 }
 
@@ -48,3 +42,8 @@ test {
     // Use junit platform for unit tests
     useJUnitPlatform()
 }
+
+javafx {
+    version = "14"
+    modules = [ 'javafx.controls' ]
+}
\ No newline at end of file
diff --git a/build/classes/java/main/io/fp/text/TextInputFrequencyStore.class b/build/classes/java/main/io/fp/text/TextInputFrequencyStore.class
deleted file mode 100644
index f61334a1598029bd163e814fffea509278292dfc..0000000000000000000000000000000000000000
Binary files a/build/classes/java/main/io/fp/text/TextInputFrequencyStore.class and /dev/null differ
diff --git a/build/classes/java/main/io/fp/text/TextInputFrequencyStoreUI.class b/build/classes/java/main/io/fp/text/TextInputFrequencyStoreUI.class
deleted file mode 100644
index d26586c5d68b7e3118abf422b97e14e1664f5164..0000000000000000000000000000000000000000
Binary files a/build/classes/java/main/io/fp/text/TextInputFrequencyStoreUI.class and /dev/null differ
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..490fda8577df6c95960ba7077c43220e5bb2c0d9 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 59b5f89288842bf8ef144d802e597dcf482b3d70..a4b4429748d92848a3d820c7b099fbeb941066ae 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 83f2acfdc319a24e8766cca78f32474ad7a22dd6..2fe81a7d95e4f9ad2c9b2a046707d36ceb3980b3 100644
--- a/gradlew
+++ b/gradlew
@@ -154,19 +154,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
         else
             eval `echo args$i`="\"$arg\""
         fi
-        i=$((i+1))
+        i=`expr $i + 1`
     done
     case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
     esac
 fi
 
@@ -175,14 +175,9 @@ save () {
     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
     echo " "
 }
-APP_ARGS=$(save "$@")
+APP_ARGS=`save "$@"`
 
 # Collect all arguments for the java command, following the shell quoting and substitution rules
 eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
 
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
 exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index 9618d8d9607cd91a0efb866bcac4810064ba6fac..62bd9b9ccefea2b65ae41e5d9a545e2021b90a1d 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
 @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 
diff --git a/settings.gradle b/settings.gradle
index 3a6523767d55e580880cf927102bc51e4e615bea..43621cc760e4afdf4cb9308dd5ac963f116b471d 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -4,7 +4,7 @@
  * The settings file is used to specify which projects to include in your build.
  *
  * Detailed information about configuring a multi-project build in Gradle can be found
- * in the user manual at https://docs.gradle.org/5.6.1/userguide/multi_project_builds.html
+ * in the user manual at https://docs.gradle.org/6.3/userguide/multi_project_builds.html
  */
 
-rootProject.name = 'textInputs'
+rootProject.name = 'campus'
diff --git a/.gradle/5.6.1/gc.properties b/src/test/java/io/fp/text/test.keep
similarity index 100%
rename from .gradle/5.6.1/gc.properties
rename to src/test/java/io/fp/text/test.keep