refactor ArgumentsParser