fix memory leakage, and bring back ScreenReceiver