anchor.diff:  	void update() {
   	}
   
  +	void close({WebSocket userSocket, String email}) {
  +		communeCount -= 1;
  +		//if no one else has them open
  +		if(communeCount <= 0) {
  +			communeCount = 0;
  +			currentState = states['close'];
  +			int length = (currentState.numFrames / 30 * 1000).toInt();
  +			new Timer(new Duration(milliseconds:length),() => currentState = states['still']);
  +		}
  +	}
  +
   	communeWith({WebSocket userSocket, String email}) async {
   		Metabolics m = await getMetabolics(email:email);
   
  
positive.code: 
  class Shrine extends NPC {
  	String description;
  
  	Shrine(String id, int x, int y) : super(id, x, y) {
  		actionTime = 0;
  
negative.code: 		map['maxFavor'] = 1000;
  		map['id'] = id;
  		userSocket.add(JSON.encode(map));
  
  		communeCount++;
  		currentState = states['open'];
  	}
  
  	donate({WebSocket userSocket, String itemType, int num, String email}) async {
  