a little more work on setValue & co
Complete round-tripping of data throue