Commit from 153
Hugely revised