Add VNet support, and logger functionality

This includes some refactoring and new features, but should be fully backwards compatible