merged over @cmarons work to take a look
exceptions coverage to 100% + a little pylint