Created by josh lingenfelter
Contributed by Nick Sherman
Contributed by Patrice Barnabé
Contributed by Matthijs Sluiter