Java leads to scala, scala leads to kotlin, kotlin... leads to major rewrites.
Implements #1 (closed), #3 (closed) Fixes #2 (closed)