Added a constructor which keeps the root cause of the exception, and added some documentation