refactored signatures to use args as single parameter plus input parameter validation