move error handling to the signature model