Huge update to integrate all on-going changed - compiles with no errors but untested