refactoring around Args