I'm not yet settled on port naming...

...but it sort of works.