                     ")\nfrom\n"
                     un-sent-blocks
                     "\nto\n"
-                    un-ackd-blocks))
+                    un-ackd-blocks
+                    "\nas\n"
+                    updated-block))
     (-> state
-        ;; Since I'm having issues with this, it seems worth mentioning that
+        ;; Since I've had issues with this, it seems worth mentioning that
         ;; this is a sorted-set (by specs/time)
-        (update-in [::specs/outgoing ::specs/un-ackd-blocks] conj block-to-move)
+        (update-in [::specs/outgoing ::specs/un-ackd-blocks] conj updated-block)
         (update-in [::specs/outgoing ::specs/un-sent-blocks] pop))))
+
+(s/fdef mark-block-resent
+        :args (s/cat :state ::specs/state
+                     :updated-block ::specs/block)
+        :ret ::specs/state)
+(defn mark-block-resent
+  [{:keys [::specs/message-loop-name
+           ::specs/outgoing]
+    :as state}
+   updated-block]
+  (log/debug (str message-loop-name ": Resending a block"))
+  (assert (= ::specs/un-ackd-blocks
+             (::specs/next-block-queue outgoing)))
+  (update-in state
+             [::specs/outgoing ::specs/un-ackd-blocks]
+             (fn [cur]
+               (conj (pop cur) updated-block))))
 
 (s/fdef pre-calculate-state-after-send
         :args (s/cat :state ::specs/state)

     :as outgoing} ::specs/outgoing
    :as state}]
  ;; Really just for timing info
  (log/debug (str message-loop-name ": top of pre-calculate ofter-send"))
  (assert next-block-queue
          (str message-loop-name
               ": No next-block-queue to tell us what to send\nAvailable:\n"

              (str message-loop-name
                   ": Missing ::transmissions under "
                   next-block-queue)))
    (let [next-message-id (let [n' (inc current-message-id)]
                            ;; Stupid unsigned math
                            ;; Actually, this seems even more problematic
