Change to Java 8
Changed to a Command-and-Query-Separation data model.