conform to print function interface