add more exception processing