Originally written by:
John Evans - http://github.com/prujohn

With contributions by:
Kevin Moore - https://github.com/kevmoo