add to_s for friendlier output
hide client