Upload Note: This repo is no longer maintained. The code has been shared should it prove useful to anyone.