I've posted the code here: https://gist.github.com/jakebloom/2d8468229eb40b99b72e039fd2...
Would appreciate any tips and feedback!