Hongyi: change API to singleton and replace callback function to broadcast