Use fail_with instead of print_error/return