changed WithPort to return interface