code: function(path, fn, upstream, binds) {
  		this.assertNotDestroyed('subscribe', path);
  		path = parsePath(path);
  
  		if (path[path.length - 1] === '*')
  			throw new Error('no more * subscribe allowed - use upstreams instead : ' + path.join('.'));
  
  		var space;
  		switch (path[0]) {
  			case '$this':
  				space = this.map;
  				break;
  			case '$env':
  				return this.env.subscribe(path.slice(1), fn, upstream, binds);
  			case '$parent':
  				this.assertHasParent(path);
  				return this.parent.subscribe(path.slice(1), fn, upstream, binds);
  			default:
  				space = utils.getProp(this.map, path);
  		}
  		if (upstream) {
  			if (!space)
  				utils.setProp(this.map, path, {
  					_upstreams: [fn]
  				});
  			else
  				(space._upstreams = space._upstreams || []).push(fn);
  		} else if (!space)
  			utils.setProp(this.map, path, {
  				_listeners: [fn]
  			});
  		else
  			(space._listeners = space._listeners || []).push(fn);
  		if (binds)
  			binds.push(unsub(this, path, fn, upstream));
  		return this;
  	}
docs: _______________________________________________ SUBSCRIPTION