more generic solution to support more tags in the future