update tags algorithm