Synchonise develop with my working develop branch

This PR is to ensure that all changes in my develop branch are synced to the upstream repo.