                    ; reset
                    (list* '(goto :fetch) (map #(list 'low %) control-signals))
                    ; states
-                   (mapmap realize-state states)
+                   (let [realized-states (mapmap realize-state states)] realized-states
+                         (assoc realized-states :store_instruction 
+                          (tweak-instruction-fetch (:store_instruction realized-states))))
                    ; transitions
                    (concat
                      ; states

    (defn realize-state [state]
      (let [highs (:control-signals state)]
        (vec (concat (map #(list 'high %) highs) (map #(list 'low %) (difference control-signals highs))))))

    (list (state-machine "control_unit"
                   ; inputs

          ; defs
          [(signal :system_bus ~(std-logic-vector 7 0))
          (signal :alu_op ~(std-logic-vector 2 0))
          (signal :opcode ~(std-logic-vector 7 5))
          (signal :wr_pc ~std-logic)
          (signal :rd_pc ~std-logic)
          (signal :wr_IR ~std-logic)
