maybe IO should become StringManip