Use fluent api to wrap port and tidy up