This was originally part of another project, but I thought it was cool enough to get it's own project.