do not depend on external string manipulation library.