refactored trans