Major update to merge interfaces branch back to master