works on the JVM, sort of