copy from LiteUpdater