proper re-throwal of TargetInvocationExceptions