Committing this as it's finally at a stage other people can use it.