   ([]
      (let [buffers (buffers {}),
            name "*scratch*"]
-       (send buffers assoc name
-             (buffer name (cursor/cursor "This is the scratch buffer." 0) (sender buffers name) fundamental-mode-keymap))
+       (create-buffer buffers "*scratch*" :cursor (cursor/cursor "This is the scratch buffer." 0))
        buffers)))

(ns engine.data.buffer
  (:use engine.data.mode)
  (:require [engine.data.rope :as rope]
            [engine.data.cursor :as cursor]
            [clojure.tools.logging :as log])

                          [@state (cursor/pos state)])),
          [row column] (apply rope/translate state)]
      {:response (conj (or (transfn pre-state state name) [])
                       (command "move-to-position" {:row row :column column}))}))
  (trans [this actionfn] (trans this actionfn (fn [& _] nil)))

  (inputfn [this]
