Further reordering of dependencies
Consistently switched optional dependencies to scope 'optional'