uses String() interface for printing instead of custom printer