better cleanup on error