rework port registration logic
consistency
survive empty config file
semver