cleaned up to_s