add printWith function