conform to C89