fix error handling and parameter validation