added exception handling abilities