diff --git a/README.md b/README.md
index 0ed444e73ff5141854b99e79d617b9f3e7c65985..f3a9e768c89ac79a7ca1a36c28007cc3ecc9e52a 100644
--- a/README.md
+++ b/README.md
@@ -183,9 +183,6 @@ Following mappings are set locally, for magit buffer only, in normal mode.
  * If not in commit section, set commit mode to "New commit" and show "Commit message" section with brand new commit message.
  * If in commit section, commit the all staged changes in commit mode previously set.
 
-##### :w<cr>
- * If in commit section, commit the all staged changes in commit mode previously set.
-
 ##### CA
  * If not in commit section, set commit mode to "Amend commit" and show "Commit message" section with previous commit message.
  * If in commit section, commit the staged changes in commit mode previously set.
diff --git a/autoload/magit/utils.vim b/autoload/magit/utils.vim
index 6be7df154753667583c371fe83f5179291682185..3b5dd5ba028f41fc2af54d778ec84b08c48bef47 100644
--- a/autoload/magit/utils.vim
+++ b/autoload/magit/utils.vim
@@ -173,3 +173,13 @@ endfunction
 function! magit#utils#bufnr()
 	return s:bufnr
 endfunction
+
+function! magit#utils#start_profile(...)
+	let prof_file = ( a:0 == 1 ) ? a:1 : "/tmp/vimagit.log"
+	execute "profile start " . prof_file . " | profile pause"
+	profile! file */plugin/magit.vim
+	profile! file */autoload/magit/*
+	profile! file */common/magit_common.vim
+	profile! file */syntax/magit.vim
+	profile continue
+endfunction
diff --git a/doc/vimagit.txt b/doc/vimagit.txt
index 2ee997b9b09aa07c9def092cc3be7f40c43a7678..863267e3ffde513132f7425c569639e231a20762 100644
--- a/doc/vimagit.txt
+++ b/doc/vimagit.txt
@@ -224,11 +224,6 @@ Following mappings are set locally, for magit buffer only, in normal mode.
   CC        If not in commit section, set commit mode to "New commit" and show 
            "Commit message" section with brand new commit message.
             If in commit section, commit the all staged changes in commit mode
-            previously set.
-
-                                    *vimagit-:w<CR>*
-                                    *vimagit-g:magit_commit_mapping_command*
-  :w<CR>    If in commit section, commit the all staged changes in commit mode
             previously set.
 
                                     *vimagit-CA*     *magit#commit_command('CA')*
diff --git a/plugin/magit.vim b/plugin/magit.vim
index ea2475574c24dfcad7c6ab6dfb8f87aec1a3399e..46dc088b4ebd1244e3a80cfd4da3f055eee3b8cf 100644
--- a/plugin/magit.vim
+++ b/plugin/magit.vim
@@ -29,7 +29,6 @@ let g:magit_stage_hunk_mapping     = get(g:, 'magit_stage_hunk_mapping',
 let g:magit_stage_line_mapping     = get(g:, 'magit_stage_line_mapping',        'L' )
 let g:magit_mark_line_mapping      = get(g:, 'magit_mark_line_mapping',         'M' )
 let g:magit_discard_hunk_mapping   = get(g:, 'magit_discard_hunk_mapping',      'DDD' )
-let g:magit_commit_mapping_command = get(g:, 'magit_commit_mapping_command',    'w<cr>' )
 let g:magit_commit_mapping         = get(g:, 'magit_commit_mapping',            'CC' )
 let g:magit_commit_amend_mapping   = get(g:, 'magit_commit_amend_mapping',      'CA' )
 let g:magit_commit_fixup_mapping   = get(g:, 'magit_commit_fixup_mapping',      'CF' )
@@ -588,7 +587,7 @@ function! magit#show_magit(display, ...)
 	elseif ( a:display == 'h' )
 		new 
 	elseif ( a:display == 'c' )
-		"nothing, use current buffer
+		enew
 	else
 		throw 'parameter_error'
 	endif
@@ -624,12 +623,11 @@ function! magit#show_magit(display, ...)
 	execute "nnoremap <buffer> <silent> " . g:magit_stage_hunk_mapping .   " :call magit#stage_hunk(0)<cr>"
 	execute "nnoremap <buffer> <silent> " . g:magit_discard_hunk_mapping . " :call magit#stage_hunk(1)<cr>"
 	execute "nnoremap <buffer> <silent> " . g:magit_reload_mapping .       " :call magit#update_buffer()<cr>"
-	execute "cnoremap <buffer> <silent> " . g:magit_commit_mapping_command." :call magit#commit_command('CC')<cr>"
 	execute "nnoremap <buffer> <silent> " . g:magit_commit_mapping .       " :call magit#commit_command('CC')<cr>"
 	execute "nnoremap <buffer> <silent> " . g:magit_commit_amend_mapping . " :call magit#commit_command('CA')<cr>"
 	execute "nnoremap <buffer> <silent> " . g:magit_commit_fixup_mapping . " :call magit#commit_command('CF')<cr>"
 	execute "nnoremap <buffer> <silent> " . g:magit_ignore_mapping .       " :call magit#ignore_file()<cr>"
-	execute "nnoremap <buffer> <silent> " . g:magit_close_mapping .        " :close<cr>"
+	execute "nnoremap <buffer> <silent> " . g:magit_close_mapping .        " :call magit#close_magit()<cr>"
 	execute "nnoremap <buffer> <silent> " . g:magit_toggle_help_mapping .  " :call magit#toggle_help()<cr>"
 
 	execute "nnoremap <buffer> <silent> " . g:magit_stage_line_mapping .   " :call magit#stage_vselect()<cr>"
@@ -654,6 +652,18 @@ function! magit#show_magit(display, ...)
 	execute "normal! gg"
 endfunction
 
+function! magit#close_magit()
+	try
+		close
+	catch /^Vim\%((\a\+)\)\=:E444/
+		try
+			edit #
+		catch /^Vim\%((\a\+)\)\=:E\%(194\|499\)/
+			quit
+		endtry
+	endtry
+endfunction
+
 function! s:mg_stage_closed_file(discard)
 	if ( getline(".") =~ g:magit_file_re )
 		let list = matchlist(getline("."), g:magit_file_re)