add to_s function