added Exception, Exception Causes and Tests