Authors: James M. Luedke <contact@jluedke.com>
         Eric Day <eday@oddments.org>
