uniform error handling and forwarding