add song and port, refine