#27 IPort refactored