adding the latest from the initial branch of 8