added string manipulation features