Should use fail_with instead of print_error and return.