unit-of-work AOP refactoring