using state machine so we can have pending sub delivery status