added string processing functions