better structure and new string functions