Factor Transaction wrapper so that the strategy can be swapped out

TransactionManager -> TransactionWrapper
Add strategies implementation