factored out string