code: function(h_source, f_update) {
  
  		// update or noop
  		f_update = f_update || function(){};
  
  		// construct gpd
  		return function(z_id, z_value) {
  
  			// solo argument
  			if(arguments.length == 1) {
  
  				// get
  				if(typeof z_id == 'string') {
  					return h_source[z_id];
  				}
  				// put entries from hash
  				else if(typeof z_id == 'object') {
  					for(var e in z_id) {
  						h_source[e] = z_id[e];
  					}
  					f_update();
  				}
  			}
  			// delete
  			else if(!z_value) {
  				delete h_source[z_id];
  				f_update();
  			}
  			// put
  			else {
  				h_source[s_id] = z_value;
  				f_update();
  			}
  		};
  	}
docs: consructs function to get/put/delete entries from hash