added indefinite-length string support