refactor PayementTransaction to allow extension