make port optional