working version: specify port_no etc