Numorous changes. See below: