preserving whitespace

- spaces and new lines are preserved by replacing them right before parse and undoing that right after
- no longer need to fill in new lines