Disclaimer I've written this library to support my own projects. It's not intended for public consumption, so use at your own risk!