more flexible tag changing