anchor.diff:  			'taunt': new Spritesheet('taunt',
   				'http://c2.glitch.bz/items/2012-12-06/npc_fox_fox_silverFox_x1_taunt_png_1354839613.png', 918, 973, 153, 139, 40, false),
   			'walk': new Spritesheet('walk',
  -				'http://c2.glitch.bz/items/2012-12-06/npc_fox_fox_silverFox_x1_walk_png_1354839614.png', 918, 556, 153, 139, 24, true)
  +				'http://c2.glitch.bz/items/2012-12-06/npc_fox_fox_silverFox_x1_walk_png_1354839614.png', 918, 556, 153, 139, 24, true),
  +			'_hide': NPC.TRANSPARENT_SPRITE
   		};
  -		setState('pause');
  +		hide();
   	}
   }
  +
  +class FoxBait extends NPC {
  +	/// Maps street names to fox bait objects for locating by foxes
  +	static Map<String, List<FoxBait>> placedBait = {};
  +
  +	FoxBait(String id, int x, int y, String streetName) : super(id, x, y, streetName) {
  +		// Mark bait as placed on this street
  +		if (placedBait[streetName] == null) {
  +			placedBait[streetName] = [];
  +		}
  +		placedBait[streetName].add(this);
  +
  +		// #1: randomly pick a shard image
  +		// #2: go away after a certain amount of time
  +	}
  +}
  
positive.code: 			'taunt': new Spritesheet('taunt',
  				'http://c2.glitch.bz/items/2012-12-06/npc_fox_fox_orangeFox_x1_taunt_png_1354839596.png', 918, 973, 153, 139, 40, false),
  			'walk': new Spritesheet('walk',
  				'http://c2.glitch.bz/items/2012-12-06/npc_fox_fox_orangeFox_x1_walk_png_1354839598.png', 918, 556, 153, 139, 24, true)
  		};
  		setState('pause');
  	}
  
  	Future<bool> brush({WebSocket userSocket, String email}) async {
  
negative.code: 	static final String
  		BRUSH = 'fox_brush',
  		FIBER = 'fiber';
  
  	static final Duration DESPAWN_TIME = new Duration(seconds: 3);
  
  	static final int
  		SPEED_STOP = 0,
  		SPEED_SLOW = 20,
  		SPEED_FAST = 40;
  
  	Spritesheet lastState;
  
  	bool despawning = false;
  	Point<num> movingTo;
  
  	Fox(String id, int x, int y, String streetName) : super(id, x, y, streetName) {
  		// Client rendering
  