now with an uberjar ~ performance could use work