port is optional now