stringext initial version