 
 (defn execute-request-handler [shell-socket iopub-socket executer]
   (let [execution-count (atom 0N)]
-    (fn [message]
+    (fn [message signer]
       (let [session-id (get-in message [:header :session])
             parent-header (:header message)]
         (swap! execution-count inc)
         (send-message iopub-socket "status" (status-content "busy")
-                      parent-header {} session-id)
+                      parent-header {} session-id signer)
         (send-message iopub-socket "pyin" (pyin-content @execution-count message)
-                      parent-header {} session-id)
+                      parent-header {} session-id signer)
         (send-message shell-socket "execute_reply"
                       {:status "ok"
                        :execution_count @execution-count

;  (println "Sending message " msg)
  (zmq/send socket (.getBytes msg)))

(defn kernel-info-reply [message socket]
  (let [header (kernel-info-header message)
        parent_header (cheshire/generate-string (:header message))
        metadata (cheshire/generate-string {})
        content  (cheshire/generate-string kernel-info-content)]
    (send-message-piece socket (get-in message [:header :session]))
    (send-message-piece socket "<IDS|MSG>")
    (send-message-piece socket "")
    (send-message-piece socket header)
    (send-message-piece socket parent_header)
    (send-message-piece socket metadata)

                       (zmq/bind shell-addr))
        iopub-socket (doto (zmq/socket context :pub)
                       (zmq/bind iopub-addr))
        shell-handler (configure-shell-handler shell-socket iopub-socket signer)]
    (while (not (.. Thread currentThread isInterrupted))
      (let [message (read-raw-message shell-socket)
            parsed-message (parse-message message)]
