exception handle added