Authors: James Hawkins <truiken@gmail.com>, Juan Lang <juan_lang@yahoo.com>