make it so the elements only update when needed