Even if we end up going with a text area as the UI, we can store it as a map internally. We'll just lose some of the user's whitespace when serializing and deserializing, which is fine.