Refactoring status logic

I've tried to split the send.py logic into separate files and try to clarify the intent of the logic.

If what I did seems odd, I am happy to revert.