it's used twice `setAttrs` and `addTarget`