allow also foo.N notation and not just foo[N], where N is a digit
provide a reasonable and more consistent 'old value', both to observe callbacks and in the result value of value()