Right now errors disappear into the abyss; they should be handled by raising exceptions that we can catch and possibly rollback transactions.