refactor to build from tosays and tostring.