refactoring, and pass all args as "arguments"