toString refactor