Since this was done pre crystal 1.0, there are several compiler errors when trying to compile it with a newer compiler. Tested with crystal 1.17.1.