not truly serializable, due to final fields- but it gets the job done.
surprisingly easy.