Several additions and improvements.