private void init(Throwable t) {
        if (t instanceof ServiceException) {
            ServiceException se = (ServiceException)t;
            
            this.faultCode = se.getCode();
            this.faultString = se.getMessage();
            
            if (t instanceof SecurityServiceException)
                this.faultDetail = se.getDetail();
            else {
                this.faultDetail = se.getDetail() + getStackTrace(t);
                this.extendedData = se.getExtendedData();
            }
        }
        else if (t != null) {
            this.faultString = t.getMessage();
            this.faultDetail = getStackTrace(t);
        }
        
        if (!(t instanceof SecurityServiceException)) {
            for (Throwable root = t; root != null; root = root.getCause())
                rootCause = root;
        }
    }