better print function