How to manipulate in can.Map data returned from server/fixture?

Hi my problem is to understand how to manipulate data received from server in can.Map.
I receive data from server (use fixture):

`[
{
“id”: 111,
“name”: “Robert”,
“surname”: “Aa”,
},
{
“id”: 222,
“name”: “John”,
“surname”: “Bb”,
},
{
“id”: 333,
“name”: “Jack”,
“surname”: “Cc”,
},

]`

var MV = can.Map.extend({
define:{
lists:{
get: function() {
return Users.findAll({});
}
}
});

For these I prepare in template individual input and would like to add one link “add”:
{{#each lists.value}} <input type="text" name = {{name}}> {{/each}} <a href=.... ?????
How this adding process should looks like if I want to add e.g user with id:“111” and want to display on the next template summary of his data? Should, after receiving, put data into List with key equals id?

P.s. I use that way to change templates:
{{#switch action}} {{#case 'summary'}} <courier-summary></courier-summary> {{/case}} {{#default}} {{/default}} {{/switch}}

When can.Component is used, viewModel: contains only one can.Map. I suppose that every code (attributes, functions) should be inside this one can.Map - is that correct? So how values of attributes from one component are passed to the other? Only via templates?

here is a thread i posted… How can i predefine a new can.connect instance to a available set
it is about adding a new item to a List
here is a working example… it is done with can.connect, which is more future proof :wink:
http://jsbin.com/zomuyelipi/1/edit?html,js,output