no trailing newlines