Ok, I understand that in the code below a closure is created when the parent function counter returns an object with a method called count. But can somebody clarify if I'm understanding the control flow correctly? After the counter function is assigned to variable `c` the first time the method it is invoked, by `c.count()`, the output is 1. And each additional time it is called the stored `n` is incremented and the new value is returned. I understand this is possible through the magic of closure so that by calling this four times I get a new value each time ending with 4 instead of simply getting 1 four times over. But where is the value that `n` holds each time "hanging out" while it waits for me to call the count method again to increment the most recently created value? What will it take for `n` to have a clean slate again as 0? If I declare a new variable and assign the function `counter` to it? Trying to wrap my head around all this and these questions occurred to me. I'm not sure if what I'm asking is obnoxious or painfully obvious-- thank you in advance. 

```
function counter() {
    var n = 0;
    return {
        count: function() { return ++n; },
    };
}
var c = counter();
console.log(c.count()); // 1
console.log(c.count()); // 2
console.log(c.count()); // 3
console.log(c.count()); // 4

```