better print implementation