default print implementation