added exception type parameter to protocol