one program can pub and sub