Update Basic IM implementation, need to fix some strange behavior with widget life cycle when changing location