refactored transaction data model
raise and catch transaction exceptions

instead of returning true/false in methods