Should use fail_with instead of print_error/return.