add error processing