todo update,beautiful code