we don't always use printwriter