f.puts sig_lines if full unless $config[:edit_signature]
   end  
 
-private
+protected
 
   def edit_field field
     case field
     when "Subject"
       text = BufferManager.ask :subject, "Subject: ", @header[field]
-      @header[field] = parse_header field, text if text
+       if text
+         @header[field] = parse_header field, text
+         update
+         field
+       end
     else
       default =
         case field
       if contacts
         text = contacts.map { |s| s.longname }.join(", ")
         @header[field] = parse_header field, text
+        update
+        field
       end
     end
-
-    update
   end
 
+private
+
   def sanitize_body body
     body.gsub(/^From /, ">From ")
   end
 
     (@m.refs + [@m.id]).map { |x| "<#{x}>" }.join(" ")
   end
 
-  def edit_message_or_field
-    @selected_type = :user
-    self.header = @headers[:user]
-    update
-    super
+  def edit_field field
+    edited_field = super
+    if edited_field && edited_field != "Subject"
+      @selected_type = :user
+      update
+    end
   end
   
   def move_cursor_left