this is a bit fragile in that, if there is an empty line within the data, the ``elif`` will catch it and try to process it.