Rewrite in kotlin to reduce the code size, as some of the classes currently look disastrous Spring integration: https://spring.io/blog/2019/04/12/going-reactive-with-spring-coroutines-and-kotlin-flow