Initial author: Brendan Zabarauskas With help and contributions from: tiffany352 https://github.com/tiffany352 James Miller <james@aatch.net>