abstracts away the details of error handling
wip