    'darcsum-changeset-to-record (darcsum-selected-changeset t)
    'darcsum-parent-buffer (current-buffer)
    'darcsum-process-arg recipient))
+
+(defun darcsum-changes (&optional how-many)
+  "Show the changes in another buffer"
+  (interactive "P")
+  (let ((proc (darcsum-start-process
+	       "changes" (if how-many
+                             (list "--last" (number-to-string how-many))
+                             (list))
+	       'darcsum-parent-buffer (current-buffer))))
+    (set-process-filter proc nil)
+    (set-process-sentinel proc 'darcsum-changes-sentinel)
+    (switch-to-buffer-other-window (process-buffer proc))
+    (process-buffer proc)))
+
+(defun darcsum-changes-sentinel(process event)
+  (with-current-buffer (process-buffer process)
+    (goto-char (point-min))))
+
+(defun darcsum-amend ()
+  "Amend last patch with selected changeset."
+  (interactive)
+  (let ((changeset (darcsum-selected-changeset t))
+        (parent-buffer (current-buffer)))
+    (if (> (length changeset) 0)
+	(let ((history-buffer (darcsum-changes 1)))
+          (with-current-buffer history-buffer
+            (save-excursion 
+	      (goto-char (point-max))
+	      (insert "
+WARNINGS: You should ONLY use amend-record on patches which only exist in a single repository!
+Also, running amend-record while another user is pulling from the same repository may cause repository corruption."))
+            (sleep-for 2)
+            (goto-char (point-min)))
+	  (setq amend (yes-or-no-p "Amend this latest changeset? (see WARNINGS) "))
+	  (kill-buffer history-buffer)
+	  (when amend
+            (darcsum-start-process
+	     "amend" (list)
+	     'darcsum-logfile nil
+	     'darcsum-changeset-to-record changeset
+	     'darcsum-parent-buffer parent-buffer)))
+	(message "You need to select something first"))))
 
 (defun darcsum-revert ()
   "Revert selected changeset."

    (set (make-local-variable 'darcsum-parent-buffer) parent-buf)
    (message
     "Title of change on first line, long comment after.  \
C-c C-c to record.")))

(defun darcsum-send (recipient)
  "Send selected changeset via email."

	(let ((waiting (match-string 1)))
	  (message waiting)
	  (kill-buffer (current-buffer))))

       ((looking-at "\\(.*\n\\)*Shall I amend this patch\\?.*")
        (process-send-string proc "y")
        (delete-region (point-min) (match-end 0)))

       ((looking-at "\n*Darcs needs to know what name")
	(let* ((default-mail (concat user-full-name
