diff --git a/cf.js b/cf.js
index 1fd69108e2ac11d8599cadbd35240e29b5ba0c41..3adfa8f1200818d0972fe38f63cd41f1115f3335 100644
--- a/cf.js
+++ b/cf.js
@@ -5,6 +5,7 @@ const app = express()
 // this include lets us read data out of put requests,
 const bodyparser = require('body-parser')
 // our fs tools,
+const fs = require('fs')
 const filesys = require('./filesys.js')
 // will use these to figure where tf we are
 const os = require('os')
@@ -44,10 +45,14 @@ app.get('/fileList', (req, res) => {
 // we also handle file-saving this way,
 app.post('/save/contexts/:context/:file', (req, res) => {
   // this is probably fine for now, but I kind of want a websocket to do this kind of stuff ?
-  console.log('put req to context' + req.params.context, 'with name', req.params.file)
-  console.log('the file as', req.body)
-  // now we fs.write() this thing, and reply...
-  res.send({ok: true})
+  console.log('put req to context :' + req.params.context + ': with name :' + req.params.file + ':')
+  console.log('the file as', typeof req.body, req.body)
+  let serialized = JSON.stringify(req.body, null, 2)
+  fs.writeFile(`save/contexts/${req.params.context}/${req.params.file}.json`, serialized, (err) => {
+    if (err) throw err;
+    console.log('the file saved')
+    res.send({ok: true})
+  })
 })
 
 let port = 8080
diff --git a/view/vcontextmenu.js b/view/vcontextmenu.js
index 3b37280ffedd3185c4de0cf17facc2b82b70ce2c..eb94594af4cc552b024f595329322132b0d089bc 100644
--- a/view/vcontextmenu.js
+++ b/view/vcontextmenu.js
@@ -230,8 +230,7 @@ function cfContextMenu(evt, view, dt) {
   addContextOption('<i class="em em-blue_book"></i> save this context', (ce) => {
     let ptch = scope.patchset.writeCurrent()
     setupForSave(ce, (name) => {
-      let serialized = JSON.stringify(ptch)
-      jQuery.post(`/save/contexts/${scope.interpreterName}/${name}`, serialized, (res) => {
+      jQuery.post(`/save/contexts/${scope.interpreterName}/${name}`, ptch, (res) => {
         console.log('post result', res)
       }, 'json')
     })