better beacon update implementation