anchor.diff:  	finished.writeAsStringSync(JSON.encode(finishedMap));
   }
   
  +void _createFinishedFile()
  +{
  +	File finished = new File('./streetEntities/finished.json');
  +	finished.createSync(recursive:true);
  +	//insert any streets that were finished before this file was created
  +	Directory streetEntities = new Directory('./streetEntities');
  +	Map finishedMap = {};
  +	for(FileSystemEntity entity in streetEntities.listSync(recursive:true))
  +	{
  +		String filename = entity.path.substring(entity.path.lastIndexOf('/')+1);
  +		if(!filename.contains('.'))
  +		{
  +			//we'll assume it's incomplete
  +			finishedMap[filename] = {"entitiesRequired":0,
  +				                     "entitiesComplete":0,
  +            	                     "streetFinished":false};
  +		}
  +	}
  +	finished.writeAsStringSync(JSON.encode(finishedMap));
  +}
  +
   String getTsidOfUnfilledStreet()
   {
   	String tsid = null;
  
positive.code: 	//save a list of finished and partially finished streets
  	File finished = new File('./streetEntities/finished.json');
  	if(!finished.existsSync())
  	{
  		finished.createSync(recursive:true);
  		//insert any streets that were finished before this file was created
  		finished.writeAsStringSync(JSON.encode({}));
  	}
  	Map finishedMap = JSON.decode(finished.readAsStringSync());
  	int required = params['required'];
  	int complete = params['complete'];
  
negative.code: 	File file = new File('./streetEntities/streets.json');
  	File finished = new File('./streetEntities/finished.json');
  	
  	if(!finished.existsSync())
  		_createFinishedFile();
  	
  	if(!file.existsSync())
  		return tsid;
  	
  	Map streets = JSON.decode(file.readAsStringSync());
  